2013-02-15 61 views
0

我計劃一個hdfs系統,它將託管數字存儲庫(Fedora Commons)的圖像文件(幾MB到200mb)。我從another stackoverflow post發現CombineFileInputFormat可用於創建由多個輸入文件組成的輸入分割。這種方法可以用於圖像或PDF嗎?在地圖任務中,我希望完整地處理各個文件,即分別處理輸入分割中的每個圖像。對圖像(或BLOB)使用CombineFileInputFormat?

我知道小文件的問題,這對我的情況不會有問題。

我想使用CombineFileInputFormat來避免Mapper任務設置/清理開銷和數據局部性保存的好處。

回答

0

如果你想在Hadoop中處理圖像,我只能推薦使用HIPI,它應該允許你做你需要的。否則,當你說你想整體處理單個文件時,我不認爲你可以用傳統的輸入格式來做到這一點,因爲即使使用CombineFileInputFormat,你也不能保證你的分割中的內容是完全正確的1圖像。

您也可以考慮的一種方法是在輸入文件中包含圖像的URL /位置(例如,您可以將它們放在Amazon S3中),並確保您擁有與圖像一樣多的映射器,然後每個地圖任務將能夠處理單個圖像。不久之前我做了類似的事情,它的工作正常。

+0

對不起,如果我不清楚。我想使用'CombineFileInputFormat'來爲每個映射器提供多個圖像,因此預計會有一個以上的圖像。是否有可能在映射器內找到單個圖像的邊界?另外,CombineFileInputFormat可能會將兩個輸入分割中的單個圖像分開嗎? – Mohamed 2013-02-18 13:40:46

+0

我想避免HIPI的原因是圖像由使用HDFS作爲文件存儲的外部服務器(Fedora Commons)管理。所以,我將不得不在HIPI存檔中創建原始圖像的副本。這會增加羣集的存儲需求。另外,當添加/刪除圖像時,我將不得不重建HIPI存檔。 我還考慮過使用URL列表作爲輸入的另一種解決方案,但數據局部性優勢將會丟失。 – Mohamed 2013-02-18 13:54:35