我有一對巨大的TIFF圖像(60,000x60,000〜600MB)。使用Hadoop我想爲每個圖像創建一個金字塔(深度縮放格式)並將它們存儲在HDFS上。 理想情況下,我想實現每個節點只處理圖像的一部分。hadoop上的並行圖像處理
實現它的最好方法是什麼? 在HDFS上存儲小文件會是一個很大的開銷嗎?
我有一對巨大的TIFF圖像(60,000x60,000〜600MB)。使用Hadoop我想爲每個圖像創建一個金字塔(深度縮放格式)並將它們存儲在HDFS上。 理想情況下,我想實現每個節點只處理圖像的一部分。hadoop上的並行圖像處理
實現它的最好方法是什麼? 在HDFS上存儲小文件會是一個很大的開銷嗎?
在HDFS上存儲小文件會是一個很大的開銷嗎?
從Cloudera檢查此article。使用HDFS federation時,大量文件的問題會稍微緩解。
http://www.cloudera.com/blog/2009/02/the-small-files-problem/
什麼是實現這一目標的最佳途徑?
首先檢查用於創建深度縮放格式的API是否可應用於圖像文件的一部分。如果整個文件需要一次處理,那麼Hadoop提供的功能就沒有多大優勢。默認情況下,HDFS將文件分割成64 MB分割,並且每個分割可以由一個映射器並行處理。
如果您是Hadoop的新手,請參閱基本word count example在Hadoop中的工作原理,並嘗試按照您的要求做類似的工作。
你確定你需要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