2016-07-15 4 views
1

詳細を明確にするのに役立ちますので、お手数をおかけしますようお願い申し上げます。 the readthedocs.io guideに記載されていません。私が必要とするのは、複数のファイルを1つのgzipに圧縮することですが、このガイドでは、個々のgzipファイルとしてファイルのリストを圧縮する方法しか示されていません。繰り返しますが、このセットアップのためのリソースとドキュメントが非常に少ないので、私はどんな助けにも感謝します。 (いくつかの追加情報がある場合は、ソースへのリンクを含めてください)elasticluster、grid-engine-tools、およびGoogleクラウドを使用してファイルリストを1つのgzipファイルに圧縮する方法

グリッドエンジンをセットアップした後、ガイドのサンプルを実行しました。

grid-computing-toolsを使用して複数のファイルを1つのgzipに結合するスクリプトがないと仮定していますか?

複数のファイルを1つのgzipに圧縮するソリューションがありますか?

grid-engine-toolsをどのように変更して動作させることができますか?私たちは、クラスタを検討している理由は、我々は複数の操作が同時に発生して期待しないということです

EDIT

は、ベンダーがオーダーごとに単一の圧縮ファイルをダウンロードできるように体系的に発生します注文ごとのファイルを、アップジップ。

答えて

0
  • は、クラウドストレージで問題になっているファイルはありますか?、

    はそれがお役に立てば幸いですが、それは難しいですか

  • 問題のファイルは、ローカルドライブまたはネットワークドライブにありますか?

説明では、「複数のファイルを1つのgzipに圧縮する必要がある」と指定します。これにはコンピュータのクラスタが必要であることは私には分かりません。 targzipを一緒に使用したいと思うように聞こえます。

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 

UPDATE:たとえば

を更新し、問題の説明では、あなたが複数の注文を同時に処理有することが示されています。結果をタール表示する必要がある頻度が低く、タール表示の結果が非常に時間に影響されない場合、単一のノードでこれを実行する可能性があります。

しかし、問題の規模が大きくなるにつれて、Pipelines APIの使用を検討することがあります。

固定されたクラスタを実行し続けるのではなく、顧客の注文が完了したときに「パイプライン」(この場合は1つのタスク)を開始できます。

パイプラインAPIを呼び出すと、顧客のファイルをダウンロードしてタールアップし、結果として得られるtarファイルをクラウドストレージにプッシュすることを目的とするVMが起動します。 Pipelines APIインフラストラクチャは、Cloud Storageとの間でコピーを行います。 tarコマンドラインを指定するだけで効果的です。この例では、ファイルのリストをダウンロードして、独立して、それぞれを圧縮します

https://github.com/googlegenomics/pipelines-api-examples/tree/master/compress

は、ここに似た何かをする例があります。入力ファイルのリストを簡単に修正することができます。

詳しくは、https://github.com/googlegenomics/pipelines-api-examples githubリポジトリを参照してください。

-Matt

+0

一緒に圧縮されるファイルは、クラウドストレージ内の異なるフォルダにあります。圧縮後、単一のzip/gzipは別のクラウドストレージフォルダに戻されます –

+0

私はより具体的に私の質問を更新しました。最終的には、このプロセスでtarを使用したいと思っていますが、同時に動作する可能性の高い操作のために、クラスタがまだ必要であると感じています。クラスタ全体の操作は私にとって非常に新しいものです。そして、弾力クラスターとグリッドエンジンツールに関する情報は絶対にありません。 –

0

これはさまざまな方法がありますが、Googleストレージでファイルのコレクションやディレクトリを1つのファイルに直接圧縮することはできず、あらかじめローカルでtar/gzipの組み合わせを実行する必要がありますそれを転送する。次のリンクで詳述されて

gsutil cp -Z 

https://cloud.google.com/storage/docs/gsutil/commands/cp#changing-temp-directories

そして素晴らしい事は、あなたが圧縮されていない結果を取得することであるあなたがデータを経由して自動的に圧縮していることができますしたい場合は

Google Storageの圧縮されたデータから、実行できる機能があるためDecompressive Transcoding

https://cloud.google.com/storage/docs/transcoding#decompressive_transcoding

あなたは、次のスクリプトの最後の行に気づくでしょう:次の行は、基本的にはGoogleのクラウドストレージに現在の圧縮ファイルをコピーします

https://github.com/googlegenomics/grid-computing-tools/blob/master/src/compress/do_compress.sh

gcs_util::upload "${WS_OUT_DIR}/*" "${OUTPUT_PATH}/" 

何最初にローカルのスクラッチディレクトリにあるファイルに対してtar/zipを実行してからgstutilで圧縮したファイルをGoogle Storageにコピーする必要がありますが、圧縮が必要なすべてのファイルは、圧縮を開始する前にスクラッチディレクトリにあります。ほとんどの場合、ノード(つまりマスター)の1つにSSHコピー(scp)してから、マスターストレージにGoogle Storageに送信する前にディレクトリ全体をtar/gzipにする必要があります。私は各GCEのインスタンスには独自のスクラッチディスクがあると仮定していますが、GCEで作業する場合は "gsutil cp"転送が非常に高速です。

Googleの保存容量は、Googleのコンピューティングインスタンスとのデータ転送に速いので、追求する最も簡単な2番目のオプションは、do_compress.shファイルの行66-69アウトマークすることです:何の圧縮が起こりません。この方法で

https://github.com/googlegenomics/grid-computing-tools/blob/master/src/compress/do_compress.sh

をそのコピーは、すべての圧縮されていないファイルを同じGoogleストレージバケットに転送するために、gsutil :: uploadを介して最後の行で行われます。その後、マスターノードから "gsutil cp"を使用して、それらをローカルにコピーしてtar/gz経由でローカルに圧縮し、圧縮ディレクトリファイルを "gsutil cp"を使用してバケットにコピーします。 ポール

+0

は、私が手助けする意図を感謝し、私はそれを正しく要約した場合、私に教えてください。クラスタノードを圧縮し、その結果のgzipをストレージにアップロードする必要があります。同時のジップが同時に発生するように考えています。 –

1

は、私は、問題の定義を述べることができると私はそれを正しく理解している場合、マットと私の両方が正確に同じソリューションを提供し、何とかそれは十分では思われないように私は、知らせることができます。

問題定義

  • あなたは、いくつかのデータを処理するタスクの開始を定義する順序を持っています。
  • データの処理はいくつかの計算ノードに分割され、それぞれがGSディレクトリに格納された結果ファイルを生成します。
  • 目標は次のとおりです。

    1. は(各ノードによって生成された)GSバケットからファイルを収集し、
    2. アーカイブ1つのファイルなどのファイルのコレクション、そして、
    3. そのアーカイブを圧縮、および
    4. 別のGSの場所に戻します。

おかげで、 ポール

+0

私は、複数のファイルにtarを使用しているので、各プロセスは分割されず、単一のノードで実行されると考えています。クラスタが必要と感じる部分は、一度にいくつかの異なるzip操作を実行することです。 1つのオーダーでは、いくつかのファイルを圧縮する必要があります。同時に複数のオーダーが処理される場合があります。 –

+0

さて、最も簡単なのは、並行イベントを整理するために各オーダーのサブディレクトリを作成することです。いずれにしても、パスがキーであり、オブジェクトがその価値であるため、サブディレクトリが実際にGoogle Cloud Storageでどのように機能するかを知ることは良いことです。すべての詳細を示すリンクは次のとおりです。https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork –

関連する問題