hadoop叢集調優及MR調優
一、作業系統調優
1、提高網路連線上限。以增加網路頻寬的利用率,即修改核心net.core.somaxcon引數
2、關閉swap交換分割槽。以免記憶體不足時,資料會溢寫到磁碟,讀取時再從磁碟讀取,增加資料讀取時間
3、調整預讀快取區的大小。將資料預讀,減少磁碟IO時間
二、HDFS調優
1、配置檔案一:core-site.xml
1>hadoop.tmp.dir:手動指定臨時目錄,針對多磁碟的叢集環境特別有效,能夠讓每個塊利用本磁碟的臨時目錄
2>fs.trash-interval:設定垃圾回收站清空的時間間隔,對使用者誤刪檔案特別有用
3>io.file.buffer.size:SequenceFiles讀寫的緩衝大小,可減少IO次數。大型的分散式系統中可以設定為65536-65535*2
2、配置檔案二:hdfs-site.xml
1>dfs.blocksize:合理的改變HDFS上的資料塊的大小,根據自己的業務系統,能夠提高效率,對map的個數很有效
2>dfs.namenode.handler.count:設定namenode上namenode server threads的數量,來與其它DN進行RPC通訊。過多過少都不好
三、MR引數調優
配置點
1、心跳配置
2、磁碟塊配置
3、槽位數目配置
4、設定RPC和執行緒數目
5、開啟批量任務排程
具體的引數(列舉)
1>mapreduce.io.sort.mb每個Map task所佔緩衝區大小
2>mapreduce.map.output.compressmap的輸出結果是否 壓縮,有利有弊,權衡選取
3>mapreduce.job.reduces啟動的reduce的個數,可有效避免資料傾斜,防止大量資料集結於一個reduce,也可以在MR程式中進行設定
四、應用系統調優
1、避免排序:不需要排序的應用,如某些應用只是簡單的聯接,就不需要排序了
2、shuffle階段內部優化
1>使用Netty代替Jetty,更快的IO框架來讀取資料
2>reduce端,批量賦值
五、總結
1、常用combiner來減少輸入到reduce的資料,防止資料傾斜
2、在資料通過遠端到達reduce端進行處理的時候,可以合理的設定歸併排序的次數,過多過少都不好,過多可能會寫入磁碟,過少可能會增加歸併排序數量
3、設定reduce的個數,來均衡原來輸入到一個reduce上的資料,防止資料傾斜