CentOS上Hadoop运行慢怎么办
导读:CentOS上Hadoop运行慢的排查与优化清单 一 快速定位瓶颈 看资源与队列:用命令查看节点资源与容器分配是否吃紧,例如:yarn node -list、yarn application -appStates ALL -list、ya...
CentOS上Hadoop运行慢的排查与优化清单
一 快速定位瓶颈
- 看资源与队列:用命令查看节点资源与容器分配是否吃紧,例如:
yarn node -list、yarn application -appStates ALL -list、yarn application -status < appId>;结合队列配额与优先级确认是否存在资源争用。 - 看本地性与Shuffle:通过作业历史与日志评估数据本地化比例与Shuffle耗时,必要时开启并限制推测执行,避免长尾拖慢整体进度。
- 看HDFS健康与读写:用
hdfs dfsadmin -report检查DataNode存活与磁盘使用;用hdfs fsck / -files -blocks -locations查看块分布与缺失;用TestDFSIO做基准压测,区分是HDFS还是计算瓶颈。 - 看系统层:用
iostat -x 1、vmstat 1、sar -n DEV 1、dmesg排查磁盘IO、内存与网络问题。
二 HDFS与操作系统优化
- 硬件与拓扑:优先使用SSD、**10Gbps+**网络、充足内存;机架/机房拓扑尽量让计算靠近数据,减少跨机房流量。
- 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。 - TCP与连接:
/etc/sysctl.conf中调优net.ipv4.tcp_tw_reuse=1、net.core.somaxconn=65535、net.ipv4.ip_local_port_range="1024 65535"等。 - 文件系统:挂载选项使用noatime,nodiratime;大文件顺序IO场景可考虑XFS等高性能文件系统。
- 文件句柄与进程数:在
三 MapReduce与YARN调优
- 容器与内存:按节点资源合理设置
yarn.nodemanager.resource.memory-mb与yarn.nodemanager.resource.cpu-vcores,避免超卖;为关键任务设置队列与优先级(mapreduce.job.queuename、mapreduce.job.priority)。 - Shuffle与Reduce端:
- 并行拷贝:
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%)。 - JVM与任务:启用JVM重用降低启动开销;合理设置
mapreduce.map.maxattempts(如4)。
四 数据布局与作业设计
- 避免小文件:小文件会压垮NameNode元数据;通过合并、归档(如HAR)或使用CombineFileInputFormat降低NameNode压力。
- 压缩策略:在Map输出与落盘阶段启用压缩(如Snappy/LZO),减少网络与磁盘IO;权衡CPU开销。
- 数据本地性:提高数据本地化比例,减少跨节点网络传输;必要时调整作业调度与副本布局策略。
- 基准与回归:用
TestDFSIO与典型作业做A/B对比,任何参数变更需压测验证并保留基线。
五 最小改动的高性价比优化组合
- 先做一次健康检查:
hdfs dfsadmin -report、hdfs fsck / -files -blocks -locations、TestDFSIO;确认瓶颈在HDFS、Shuffle还是资源争用。 - 一次性落地低成本优化:
- 挂载选项加上noatime,nodiratime;必要时切换到XFS。
- HDFS:
dfs.blocksize=256M、dfs.replication=2~3、dfs.client.read.shortcircuit=true。 - YARN/MR:设置容器内存与vcore;Shuffle并行拷贝与缓冲占比按上文建议;开启受限推测执行。
- 系统:
limits.conf与sysctl.conf调优文件句柄与TCP参数。
- 复测与回看:对比作业总时长、Shuffle耗时、本地化率与磁盘/网络利用率,保留有效变更并逐步深入。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上Hadoop运行慢怎么办
本文地址: https://pptw.com/jishu/752120.html
