- 問題のファイルは Cloud Storage にありますか?
- 問題のファイルはローカル ドライブまたはネットワーク ドライブにありますか?
あなたの説明では、「必要なのは、複数のファイルを単一の gzip に圧縮することです」と示しています。これにはコンピューターのクラスターが必要かどうかはわかりません。tarをgzipと一緒に使用したいだけのように思えます。
tar ユーティリティは、同様に圧縮できるアーカイブ ファイルを作成します。例えば:
$ # Create a directory with a few input files
$ mkdir myfiles
$ echo "This is file1" > myfiles/file1.txt
$ echo "This is file2" > myfiles/file2.txt
$ # (C)reate a compressed archive
$ tar cvfz archive.tgz myfiles/*
a myfiles/file1.txt
a myfiles/file2.txt
$ # (V)erify the archive
$ tar tvfz archive.tgz
-rw-r--r-- 0 myuser mygroup 14 Jul 20 15:19 myfiles/file1.txt
-rw-r--r-- 0 myuser mygroup 14 Jul 20 15:19 myfiles/file2.txt
コンテンツを抽出するには、次を使用します。
$ # E(x)tract the archive contents
$ tar xvfz archive.tgz
x myfiles/file1.txt
x myfiles/file2.txt
アップデート:
更新された問題の説明では、複数の注文が同時に処理されている可能性があることを示しています。結果を tar する必要がある頻度が低く、tar された結果を提供するのにそれほど時間がかからない場合は、おそらく単一のノードでこれを行うことができます。
ただし、問題の規模が拡大するにつれて、パイプライン APIの使用を検討することがあります。
固定クラスターを実行し続けるのではなく、顧客の注文が完了すると、"パイプライン" (この場合は単一のタスク) を開始できます。
Pipelines API を呼び出すと、顧客のファイルをダウンロードして tar ファイルを作成し、結果の tar ファイルを Cloud Storage にプッシュすることだけを目的とした VM が開始されます。Pipelines API インフラストラクチャは、Cloud Storage との間でコピーを行います。事実上、tar コマンド ラインを指定するだけで済みます。
ここに似たようなことをする例があります:
https://github.com/googlegenomics/pipelines-api-examples/tree/master/compress
この例では、ファイルのリストをダウンロードし、それぞれを個別に圧縮します。入力ファイルのリストを tar するように簡単に変更できます。
詳細と例については、https://github.com/googlegenomics/pipelines-api-examples github リポジトリをご覧ください。
-マット