我有大量的圖像文件,我需要存儲和處理HDFS上在HBASE存儲圖像處理和快速訪問
假設2種情況:
- 圖片小於5MB
- 圖像範圍從50KB到20MB
我想這樣做的4件事與圖像:
- 我需要對每個圖像獨立應用一些函數fnc()。
- 我需要不時從HDFS中提取特定圖像(每天1000次)並將其顯示在網站上。 這些是針對特定圖像的用戶查詢,因此延遲應該是幾秒鐘。
- 每年一次的圖像組將不得不被刪除。
- 新的圖像將被添加到系統中(1000個新的圖像/天)
解決方案設計IMO應考慮:
- 小文件的問題:
- MR處理
- 快速訪問文件
- 快速寫入新文件並不是什麼大問題,因爲映像將n不能立即使用。延遲幾分鐘或幾小時即可。
我首先想到的是聚集圖像帶着小文件的問題,滿足了1和2 的照顧,但我留下了快速隨機訪問圖像的問題,並增加了新的圖片。我不知道我該如何處理這個。我看着sequenceFiles,HAR,mapFiles,combineFileInputFormat,Avro,但無法找到(3)和(4)的解決方案。由於我必須注意索引塊的內容,搜索和刪除或添加新文件可能會變得棘手。
另一種方法是使用HBase或HCatalog存儲圖像,這會照顧(1)(2)(3)和(4),但費用是多少?我知道將二進制BLOBS存儲在數據庫中並不是非常有效,特別是隨着圖像數量的增加,但我認爲HBase或HCatalog可能會有點不同。
感謝您的幫助!
編輯:
我剛剛發現HBase的這個線程提供圖像,顯然Yfrog和ImageShack的具有數十億與此圖像記錄是link這是一個很好看的。雖然如果任何人知道任何基準將是偉大的。
你只需要應用'FNC()人'一次,加載文件時,還是有需要進一步的圖像處理?如果沒有,也許HDFS不是最好的選擇,因爲它不是很好的表現,隨機訪問 – Jacopofar
是的,fnc()只會被應用一次,我只需要map函數沒有reducer。 – ASA