Ubuntu下Hadoop性能優化策略
yarn.nodemanager.resource.memory-mb
設置NodeManager可用內存,避免內存瓶頸。dfs.datanode.data.dir
指向SSD掛載目錄)。yarn.nodemanager.resource.cpu-vcores
設置每個NodeManager的vCore數),提高并行處理能力。/etc/sysctl.conf
文件,調整vm.swappiness
(建議設為10以下,減少交換分區使用)、net.core.somaxconn
(增加TCP連接隊列長度)等參數,優化系統I/O和網絡性能。dfs.replication
):根據集群規模和可靠性需求調整(生產環境通常為3,測試環境可設為1)。dfs.namenode.handler.count
、dfs.datanode.handler.count
):默認10可能不足,建議調整為20-30,提高NameNode和DataNode的并發處理能力。mapreduce.job.maps
、mapreduce.job.reduces
):根據集群CPU核心數設置(如maps數≈集群總vCore數的1.5倍),最大化并行處理。mapreduce.map.output.compress
):使用Snappy或LZO算法,減少Map到Reduce的網絡傳輸量。mapreduce.reduce.java.opts
):根據任務復雜度調整(如Map任務設為-Xmx2048m
,Reduce任務設為-Xmx4096m
),避免頻繁GC。yarn-site.xml
中設置yarn.resourcemanager.scheduler.class
),實現資源公平分配。yarn.scheduler.minimum-allocation-mb
、yarn.scheduler.maximum-allocation-mb
):如設為1GB和8GB,避免資源碎片化。mapreduce.job.locality.wait
參數控制等待時間,默認3秒),減少跨節點網絡傳輸。若數據不在本地,YARN會等待指定時間后分配遠程節點,可根據集群規模調整等待時間(如小集群設為5秒,大集群設為3秒)。net.ipv4.tcp_max_syn_backlog
設為8192,net.core.netdev_max_backlog
設為30000),提高網絡吞吐量。mapreduce.map.output.compress
)和最終輸出(mapreduce.output.fileoutputformat.compress
)使用Snappy算法(速度快,壓縮比適中),減少磁盤I/O和網絡傳輸量。-XX:+UseG1GC
),減少Full GC停頓時間;設置合適的堆大?。ㄈ鏝ameNode堆設為8-16GB),避免頻繁GC影響性能。DESCRIBE FORMATTED
命令查看表數據分布,識別傾斜字段。mapreduce.job.maps
增加Map任務數,分散數據負載。