CM記錄-Hadoop參數調優


1.HDFS調優

a.設置合理的塊大小(dfs.block.size)

b.將中間結果目錄設置為分布在多個磁盤以提升寫入速度(mapred.local.dir)

c.設置DataNode處理RPC的線程數(默認為3),大集群可適當加大點(dfs.datanode.handler.count)

d.設置NameNode能同時處理請求數(dfs.namenode.handler.count)為集群規模的自然對數lnN的20倍

2.YRAN調優

Yarn的資源表示模型Container,Container將資源抽象為兩個維度,內存和虛擬CPU核(vcore)

map slot 與 reduce slot,任務槽不能混用,數量一定,不能動態分配資源

Yarn-Container兼容各種計算框架,動態分配資源,減少資源浪費

容器內存-yarn.nodemanager.resource.memory-mb  

最小容器內存-yarn.scheduler.minimum-allocation-mb 

容器內存增量-yarn.scheduler.increment-allocation-mb

最大容器內存-yarn.scheduler.maximum-allocation-mb

根據實際情況靈活調整,如物理機為128GB,那么容器內存要為100GB

容器虛擬CPU內核yarn.nodemanager.resource.cpu-vcores  ---總量要考慮硬件,如雙路四核,這里可以設置為10

最小容器虛擬CPU內核數量yarn.scheduler.minimum-allocation-vcores

容器虛擬CPU內核增量yarn.scheduler.increment-allocation-vcores

最大容器虛擬CPU內核數量yarn.scheduler.maximum-allocation-vcores

3.MapReduce調優

調優三大原則

a.增大作業並行程度---改變輸入分片(input spilt)的大小,輸入分片是個邏輯概念,是一個map Task的輸入。在調優過程中,盡量讓輸入分片與塊大小一樣,這樣就能實現計算本地化,減少不必要的網絡傳輸。

計算公式為max(mapred.min.spilt.size,min(mapred.max.spilt.size,dfs.block.size))

mapred.min.spilt.size=1    ---最小分片大小 

mapred.max.split.size=9223372036854775807   ---最大分片大小

dfs.block.size為塊大小

b.給每個任務足夠的資源

Map任務內存:mapreduce.map.memory.mb

Reduce任務內存:mapreduce.reduce.memory.mb

Map任務最大堆棧:mapreduce.map.java.opts.max.heap

Reduce任務最大堆棧:mapreduce.reduce.java.opts.max.heap

ApplicationMaster內存:yarn.app.mapreduce.am.resource.mb

c.在滿足前兩個條件下,盡可能地給shuffle(數據混洗-輸入到輸出整個過程)預留資源

最大洗牌連接:mapreduce.shuffle.max.connections

I/O排序內存緩存(MiB):mapreduce.task.io.sort.mb

I/O排序因子:mapreduce.task.io.sort.factor

洗牌期間並行傳輸的默認數量:mapreduce.reduce.shuffle.parallelcopies

壓縮Map輸出:mapreduce.map.output.compress

備注:其他調優參數參考官網hadoop默認配置,hadoop調優要深刻理解mapreduce


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM