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.blocksize):根据数据规模设置为128MB或256MB(大文件建议256MB),减少元数据操作。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.map.java.opts、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停顿时间;设置合适的堆大小(如NameNode堆设为8-16GB),避免频繁GC影响性能。DESCRIBE FORMATTED命令查看表数据分布,识别倾斜字段。mapreduce.job.maps增加Map任务数,分散数据负载。