硬件配置優化
HDFS配置參數調優
dfs.blocksize
參數(如128MB、256MB或更大)。較大的塊大小可減少NameNode元數據管理壓力和網絡傳輸次數,適合批處理場景;較小的塊大小適合隨機讀取場景,但會增加元數據開銷。dfs.replication
參數設置副本數(默認3)。增加副本數可提高數據可靠性和讀取并行度,但會占用更多存儲空間;可根據數據重要性(如熱數據)和集群成本調整。dfs.client.read.shortcircuit
為true,允許DataNode直接向客戶端提供本地數據,繞過NameNode,減少網絡跳轉延遲。dfs.namenode.handler.count
(NameNode RPC線程數)和dfs.datanode.handler.count
(DataNode RPC線程數)(如設置為32或更高),提高并發處理能力,應對高負載場景。操作系統層面調優
/etc/sysctl.conf
文件,調整以下參數提升I/O和網絡性能:
vm.swappiness=10
:降低系統使用交換分區的傾向,保留更多內存給HDFS;net.core.rmem_max=16777216
、net.core.wmem_max=16777216
:增加網絡接收/發送緩沖區大??;net.ipv4.tcp_rmem="4096 87380 16777216"
、net.ipv4.tcp_wmem="4096 65536 16777216"
:優化TCP讀寫緩沖區,提高網絡傳輸效率。systemctl disable
命令關閉不需要的系統服務(如藍牙、打印服務),釋放系統資源。數據管理優化
mapreduce.job.locality.wait
參數(如設置為300000毫秒,即5分鐘)延長任務等待時間,讓任務優先運行在數據所在節點;使用hdfs balancer
工具均衡數據分布,確保各DataNode負載均衡,減少跨節點數據傳輸。mapreduce.map.output.compress=true
(啟用Map輸出壓縮)、dfs.compress.data=true
(啟用HDFS數據壓縮)等參數,減少存儲空間占用和網絡傳輸時間。應用程序與資源管理優化
mapreduce.map.tasks
(Map任務數)、mapreduce.reduce.tasks
(Reduce任務數)參數,根據集群CPU核心數(如每個核心分配1-2個任務)和任務特性(如CPU密集型、IO密集型)最大化并行度;啟用Combiner(mapreduce.job.combine.class
)減少Map輸出數據量,降低網絡傳輸和Shuffle開銷;調整YARN容器大?。?code>yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb
),避免容器過大或過小導致資源浪費。dfs.datanode.max.locked.memory
)將頻繁訪問的數據塊緩存在內存中,提高讀取性能;使用分布式緩存(distributed.cache
)存放小文件或公共配置,減少重復加載時間。