1. 程式人生 > >Hadoop叢集引數配置原則

Hadoop叢集引數配置原則

dfs.datanode.handler.count
datanode上用於處理RPC的執行緒數。預設為3,較大叢集,可適當調大些,比如8。需要注意的是,每新增一個執行緒,需要的記憶體增加。

tasktracker.http.threads

HTTP server上的執行緒數。執行在每個TaskTracker上,用於處理map task輸出。大叢集,可以將其設為40~50。

dfs.replication 

檔案副本數,通常設為3,不推薦修改
dfs.block.size
HDFS中資料block大小,預設為64M,我們是128MB
mapred.local.dir
執行 mapreduce 中間結果儲存處 
dfs.data.dir


HDFS Block 儲存空間
資料 使用 壓縮  - LZO (使用更多 map)
FileInputFormat.setMaxInputSplitSize(job, 64 *1024 * 1024);

{map/reduce}.tasks.maximum
同時執行在TaskTracker上的最大map/reduce task數,
io.sort.factor
當一個map task執行完之後,本地磁碟上(mapred.local.dir)有若干個spill檔案,merge sort 把這些檔案合成一個。執行merge sort的時候,每次同時開啟多少個spill檔案由該引數決定。開啟的檔案越多,不一定merge sort就越快,所以要根據資料情況適當的調整。
mapred.child.java.opts


設定JVM堆的最大可用記憶體,需從應用程式角度進行配置。

io.sort.mb

Map task的輸出結果在記憶體中所佔的buffer總大小。

mapred.compress.map.output/ Mapred.output.compress
中間結果和最終結果是否要進行壓縮,如果是,指定壓縮方式(Mapred.compress.map.output.codec/ Mapred.output.compress.codec)。推薦使用LZO壓縮。Intel內部測試表明,相比未壓縮,使用LZO壓縮的 TeraSort作業執行時間減少60%,且明顯快於Zlib壓縮。

reduce task相關配置
Reduce shuffle

階段copier執行緒數。預設是5,對於較大叢集,可調整為16~25。