2016-06-23 10 views
3

私は同じアルゴリズムを実行するのに必要な~1GBのTIFF画像を50TB持っています。現在のところ、私はC++で書かれた修正プロセスを持っていますが、うまく動作しますが、これらのイメージすべてを連続して実行するには永遠にかかるでしょう。私はMapReduce/Sparkの実装がうまくいくことを理解していますが、イメージ入出力の使い方を理解できないようです。Hadoop for Large Image Processing

私が見たすべてのチュートリアル/例はプレーンテキストを使用しています。理論的には、Amazon Webサービスも利用したいと考えています。誰かが私のためにある方向性を持っているなら、それは素晴らしいだろう。私は明らかに完全な解決策を探していませんが、誰かがこれに近い何かを成功裏に実装したのでしょうか?前もって感謝します。

答えて

2

あなたのデータはHDFSですか? Hadoop/Sparkをどのように活用したいと思いますか?あなたが必要とするのは、ファイル名の列と実行するマシンの束であると私には思えます。

アプリをAWS Lambda(Running Arbitrary Executables in AWS Lambdaを参照)に、trigger eventsをファイルごとにパックすることができます。アプリケーションをDockerコンテナにパックし、ECSでそれらの束を起動し、処理するファイル名(またはURLまたはS3バケット)のキューでそれらを緩めることができます。

私は、入力として1GBの分割を処理するにはかなり悪いので、特にHadoop/Sparkは過剰であると思います。処理はM/Rではありません(レジューサーのマージのキー値なし)。もし必要なら、C++アプリケーションをstdinから読み込んでパックし、Hadoop Streamingを使用することができます。

最後に、問題は次のとおりです.50TBのデータはどこに保存されていますか?データがどこにあるかを計算し、50TBをAWSに転送したり、HDFSにアップロードしたりすることを避けたいので、ソリューションは多くの答えに依存します。

+0

ありがとう、本当にありがとう。このDockerコンテナ/キューのアイデアはうまくいくようです。したがって、私が理解できるように、既存のC++コードをコンテナにラップし、すべてのファイル名をsqsキューに追加します。次に、キューのサイズに応じて特定の数のEC2を起動し、それぞれにコンテナを送信します。各EC2がジョブを終了すると、新しいイメージがS3に書き込まれ、そのジョブがキューから削除されますか? – HelloWor1d

+0

そうです。アプリケーションをコンテナにラップすることは簡単です(すべての依存関係/ライブラリを追加し、コンパイルされたバイナリアプリケーションをコピーし、 'RUN'コマンドを追加するだけです)。[Dockerfile](https://docs.docker.com/engine/reference/ビルダー/) –

+0

すごく、私はそれを調べ始めるだろう。各EC2に2つの仕事を送るのは理にかなっているのだろうか?ある特定の長さで、EC2が他のものを終えるときにジョブを追加するのですか? – HelloWor1d

1
  • 大容量の.tifファイルが50TBあります。
  • 各ファイルに対して同じアルゴリズムを実行します。あなたのデータノードに複雑な計算を行うと、システムがぐったりします

    :ほとんどの開発者が気づいていないのMapReduceパラダイムに問題を解決する


一つの側面は、ということです。

ほとんどの場合、テキストベースの単純な例を見る大きな理由は、それらが実際に商用グレードのハードウェアで実行できる問題の種類であるということです。あなたがわからない、または忘れてしまった場合は、次の点を指摘したいと思います。

MapReduceプログラミングパラダイムは、スケーリングアウトとスケールアップが必要なジョブを実行するためのものです。


いくつかのヒント:このサイズの大きなデータで

  • が、それはデータが計算にデータを持ち込むのではなく、ここで計算を取ることは理にかなっています。
  • 商業用ハードウェアでこのジョブを実行することは、明らかに悪い考えです。マルチコアのマシンが必要です.16/32かもしれません。
  • 必要なハードウェアを調達したら、必要に応じてアルゴリズムを並列化するようにソフトウェアを最適化する必要があります。
  • あなたの問題は間違いなくスケールアップの恩恵を受けることができます。サイズの大きいファイルやそのような種類のファイルの大量収集では、RAMを増やして高速なプロセッサを使用することは間違いなく賢明なことです。
  • 最後に、入力を受け入れることに懸念がある場合、画像をバイナリとして読むことができます。これにより、.tif形式で作業する能力が制限され、処理アルゴリズムを修正する必要が生じる場合があります。