巨大なTIFF画像(60,000x60,000〜600MB)がいくつかあります。Hadoopを使用して、画像ごとにタイルのピラミッド(deepzoom形式)を作成し、HDFSに保存したいと思います。理想的には、各ノードが画像の一部のみを処理していることを実現したいと思います。
それを達成するための最良の方法は何ですか?小さなファイルをHDFSに保存するのは大きなオーバーヘッドになりますか?
本当にhadoopが必要ですか?あなたの画像はそれほど大きくありません。私の 6 年前のデスクトップは、4 分以内に大きな画像のディープズームを作成できます。
$ tiffinfo huge.tif
TIFF Directory at offset 0x12d095e4 (315659748)
Image Width: 91460 Image Length: 51866
Tile Width: 512 Tile Length: 512
Resolution: 10, 10 pixels/cm
Bits/Sample: 8
Compression Scheme: JPEG
...
$ time vips dzsave huge.tif x
real 3m40.841s
user 4m57.587s
sys 0m50.375s
HDFS に小さなファイルを保存すると、大きなオーバーヘッドになりますか?
Cloudera のこの記事を確認してください。HDFS フェデレーションを使用すると、多数のファイルの問題が少し緩和されます。
http://www.cloudera.com/blog/2009/02/the-small-files-problem/
それを達成するための最良の方法は何ですか?
まず、画像ファイルの一部に Deep Zoom フォーマットを作成するための API が適用できるかどうかを確認します。完全なファイルを一度に処理する必要がある場合、Hadoop が提供する利点はあまりありません。HDFS はデフォルトでファイルを 64 MB の分割に分割し、各分割はマッパーによって並行して処理できます。
Hadoop を初めて使用する場合は、基本的な単語カウントの例が Hadoop でどのように機能するかを確認し、要件に合わせて同様のことを試みてください。