1. 程式人生 > >hadoop叢集調優及MR調優

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上的資料,防止資料傾斜