大量小檔案不適合儲存於HDFS的原因

李思葦發表於2018-04-10

1、小檔案過多,會過多佔用namenode的記憶體,並浪費block。
- 檔案的後設資料(包括檔案被分成了哪些blocks,每個block儲存在哪些伺服器的哪個block塊上),都是儲存在namenode上的。
HDFS的每個檔案、目錄、資料塊佔用150B,因此300M記憶體情況下,只能儲存不超過300M/150=2M個檔案/目錄/資料塊的後設資料
- dataNode會向NameNode傳送兩種型別的報告:增量報告和全量報告。
增量報告是當dataNode接收到block或者刪除block時,會向nameNode報告。
全量報告是週期性的,NN處理100萬的block報告需要1s左右,這1s左右NN會被鎖住,其它的請求會被阻塞。

2、檔案過小,尋道時間大於資料讀寫時間,這不符合HDFS的設計:
HDFS為了使資料的傳輸速度和硬碟的傳輸速度接近,則設計將尋道時間(Seek)相對最小化,將block的大小設定的比較大,這樣讀寫資料塊的時間將遠大於尋道時間,接近於硬碟的傳輸速度。

相關文章