CentOS上Hadoop运行慢的排查与优化清单
一 快速定位瓶颈
yarn node -list、yarn application -appStates ALL -list、yarn application -status <appId>;结合队列配额与优先级确认是否存在资源争用。hdfs dfsadmin -report检查DataNode存活与磁盘使用;用hdfs fsck / -files -blocks -locations查看块分布与缺失;用TestDFSIO做基准压测,区分是HDFS还是计算瓶颈。iostat -x 1、vmstat 1、sar -n DEV 1、dmesg排查磁盘IO、内存与网络问题。二 HDFS与操作系统优化
dfs.blocksize=256M(大文件顺序读更友好,注意小文件问题)。dfs.replication=3(可靠性与读性能权衡,存储紧张时可评估2)。dfs.namenode.handler.count=20、dfs.datanode.handler.count=30。dfs.client.read.shortcircuit=true(需配合HDFS短路与Linux权限配置)。/etc/security/limits.conf与/etc/pam.d/login中提升nofile/nproc。/etc/sysctl.conf中调优net.ipv4.tcp_tw_reuse=1、net.core.somaxconn=65535、net.ipv4.ip_local_port_range="1024 65535"等。三 MapReduce与YARN调优
yarn.nodemanager.resource.memory-mb与yarn.nodemanager.resource.cpu-vcores,避免超卖;为关键任务设置队列与优先级(mapreduce.job.queuename、mapreduce.job.priority)。mapreduce.reduce.shuffle.parallelcopies≈节点数/3。mapreduce.reduce.shuffle.merge.percent=0.66、mapreduce.reduce.shuffle.input.buffer.percent=0.7。mapreduce.task.timeout=1200s(避免长尾任务误杀)。mapreduce.map.speculative与mapreduce.reduce.speculative,并用mapreduce.map.speculative.cap限制占比(如≤15%)。mapreduce.map.maxattempts(如4)。四 数据布局与作业设计
TestDFSIO与典型作业做A/B对比,任何参数变更需压测验证并保留基线。五 最小改动的高性价比优化组合
hdfs dfsadmin -report、hdfs fsck / -files -blocks -locations、TestDFSIO;确认瓶颈在HDFS、Shuffle还是资源争用。dfs.blocksize=256M、dfs.replication=2~3、dfs.client.read.shortcircuit=true。limits.conf与sysctl.conf调优文件句柄与TCP参数。