Ubuntu系統層面優化
/etc/sysctl.conf
文件優化系統性能,例如降低vm.swappiness
值(如設置為10)以減少交換分區使用,提高I/O效率;調整網絡棧參數(如net.core.rmem_max
、net.core.wmem_max
)增大網絡緩沖區,提升節點間通信性能。systemctl disable <service_name>
命令關閉不需要的系統服務(如藍牙、打印服務等),減少系統啟動時的資源消耗,確保Hadoop任務獲得更多可用資源。/etc/hadoop/conf/hdfs-site.xml
中設置dfs.datanode.data.dir
指向SSD路徑),SSD的高速讀寫性能可顯著提升HDFS的文件操作效率。Hadoop配置參數調優
dfs.blocksize
(如256MB或512MB),減少Map任務數量,降低元數據操作開銷;dfs.replication
(如生產環境設為3,測試環境設為2),平衡數據冗余與存儲成本;dfs.namenode.handler.count
(如設為64)和dfs.datanode.handler.count
(如設為32),提高NameNode和DataNode的并發處理能力。mapreduce.job.maps
(如設為$((NODE_CORES * 1.5))
)和mapreduce.job.reduces
(如設為$((NODE_CORES * 0.75))
)參數值,充分利用集群CPU資源;mapreduce.map.output.compress=true
并指定壓縮算法(如snappy
),減少Map任務到Reduce任務的中間數據傳輸量;mapreduce.map.java.opts
(如-Xmx4G
)和mapreduce.reduce.java.opts
(如-Xmx8G
),避免JVM頻繁垃圾回收導致的任務延遲。yarn.nodemanager.resource.memory-mb
(如設為節點總內存的80%)和yarn.nodemanager.resource.cpu-vcores
(如設為節點CPU核心數的80%),合理分配容器資源;Capacity Scheduler
或Fair Scheduler
(在yarn-site.xml
中設置yarn.resourcemanager.scheduler.class
),根據作業優先級動態分配資源,提高集群利用率。數據與任務優化
mapreduce.job.locality.wait
參數(如設為3秒),讓Map任務優先在數據所在節點運行,減少跨節點數據傳輸的網絡開銷;若無法實現本地化,可啟用數據傳輸壓縮(如mapreduce.shuffle.compress=true
)降低傳輸量。job.setCombinerClass(SumCombiner.class)
)合并相同key的中間結果,減少Reduce任務的輸入數據量,降低網絡傳輸和計算開銷。EXPLAIN
命令),對傾斜key進行拆分(如添加隨機前綴)或過濾,確保各任務負載均衡,避免單個任務成為性能瓶頸。監控與維護