Ubuntu环境下Hadoop性能优化策略
yarn.nodemanager.resource.memory-mb参数分配NodeManager内存。yarn.nodemanager.resource.cpu-vcores参数调整每个节点的CPU核心分配。/etc/sysctl.conf文件,调整vm.swappiness(建议设为10以下,减少交换分区使用)、fs.file-max(增加文件描述符限制)等参数,优化系统I/O效率。dfs.blocksize(默认128MB,可根据数据大小改为256MB或更大,减少Map任务数量);dfs.namenode.handler.count(NameNode处理请求的线程数,建议≥32)和dfs.datanode.handler.count(DataNode处理请求的线程数,建议≥16),提升节点并发处理能力。mapreduce.map.output.compress=true)和最终输出压缩(mapreduce.output.fileoutputformat.compress=true),减少磁盘I/O与网络传输;mapreduce.map.java.opts(Map任务JVM堆大小,建议为物理内存的70%,如-Xmx4096m)和mapreduce.reduce.java.opts(Reduce任务JVM堆大小,建议为物理内存的70%且不超过YARN容器限制,如-Xmx8192m);mapreduce.job.maps(Map任务数量,建议为集群CPU核心数的1.5~2倍)和mapreduce.job.reduces(Reduce任务数量,建议为集群CPU核心数的1~1.5倍),最大化并行度。Capacity Scheduler或Fair Scheduler),通过yarn.scheduler.minimum-allocation-mb(容器最小内存,建议≥1GB)和yarn.scheduler.maximum-allocation-mb(容器最大内存,建议≤节点内存的80%)控制资源分配;yarn.nodemanager.aux-services=mapreduce_shuffle,启用MapReduce Shuffle服务。mapreduce.job.locality.wait参数(默认3秒)控制任务等待数据本地化的时间,避免因等待过久导致资源浪费。-XX:+UseG1GC -XX:MaxGCPauseMillis=200参数。