MapReduce-Hadoop企業優化 *(二)HDFS小檔案優化方法
1.HDFS小檔案弊端
HDFS上每個檔案都要在namenode上建立一個索引,這個索引的大小約為150byte,這樣當小檔案比較多的時候,就會産生很多的索引檔案,一方面會大量占用namenode的記憶體空間,另一方面就是索引檔案過大使索引速度變慢。
2.解決方案
1)Hadoop Archive:
是一個高效地将小檔案放入HDFS塊中的檔案存檔工具,它能夠将多個小檔案打包成一個HAR檔案 (har檔案是記錄資訊資料的檔案),這樣就減少了namenode的記憶體使用。
2)Sequence file:
sequence file由一系列的二進制key/value組成,如果key為檔案名,value為檔案内容,則可以将大批小檔案合并成一個大檔案。
3)CombineFileInputFormat:
CombineFileInputFormat是一種新的inputformat,用于将多個檔案合并成一個單獨的split,另外,它會考慮資料的存儲位置。
4)開啟JVM重用
對于大量小檔案Job,可以開啟JVM重用會減少45%運作時間。
JVM重用了解:一個map運作一個jvm,重用的話,在一個map在jvm上運作完畢後,jvm繼續運作其他map。
具體設定:mapreduce.job.jvm.numtasks值在10-20之間。
