2017-09-01 72 views
1

我希望能夠在HDFS上存儲數百萬個小文件(二進制文件 - 圖像,exe等)(〜1Mb),我的要求基本上是能夠查詢隨機文件而不是運行MapReduce作業。 我的主要問題是Namenode內存問題,而不是MapReduce映射問題。HDFS小文件設計

所以我的選擇是:

  1. HAR文件 - 骨料小文件,只比他們的HAR他們節省://路徑在另一個地方
  2. 序列文件 - 添加他們,因爲他們進來,這更適合於MapReduce作業,所以我幾乎消滅它
  3. HBase的 - 保存小文件,HBase的是在幾篇文章中所描述的谷歌

我猜我阿斯金的另一個解決方案g如果有什麼我錯過了?我可以通過將二進制文件添加到大Avro/ORC/Parquet文件來實現我所需要的嗎?然後通過名稱或從Java /客戶端程序散列來查詢它們?

感謝,

回答

1

如果追加多個文件到大文件,那麼你就需要保持其大文件的每個小文件駐留在這基本上是什麼HBase的會爲你做一個索引。它將數據合併到大文件中,將它們存儲在HDFS中,並使用鍵上的排序來支持快速隨機訪問。在我看來,Hbase會滿足您的需求,如果您自己手動推出某些內容,那麼最終可能會重做許多Hbase已經完成的工作。