本文详细介绍Hadoop性能监控与调优实战,包括系统监控、Hadoop监控、性能调优、瓶颈分析等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 性能监控概述
性能监控是指收集、分析系统性能指标,发现性能问题并进行调优。更多视频教程www.fgedu.net.cn
- 了解系统状态
- 发现性能瓶颈
- 预测资源需求
- 验证优化效果
1.2 关键性能指标
关键性能指标:
– CPU使用率
– 内存使用率
– 磁盘IO
– 网络流量
– 负载
# HDFS指标
– 读写吞吐量
– 数据块分布
– 慢节点
– NameNode RPC
# YARN指标
– 队列资源使用率
– 任务执行时间
– 失败任务数
– 等待任务数
1.3 监控工具
监控工具:
Part02-生产环境规划与建议
2.1 监控架构
监控架构:
1. 数据采集
– Node Exporter
– JMX Exporter
– 日志采集
2. 数据存储
– Prometheus
– InfluxDB
– Elasticsearch
3. 数据展示
– Grafana
– 自定义Dashboard
4. 告警
– Alertmanager
– 邮件/短信/微信
2.2 告警配置
告警配置:
- CPU使用率:70%警告,90%严重
- 内存使用率:80%警告,95%严重
- 磁盘使用率:80%警告,90%严重
- 服务状态:服务停止严重
from bigdata视频:www.itpux.com
2.3 性能报告
性能报告:
1. 日报
– 关键指标
– 告警情况
– 任务情况
2. 周报
– 趋势分析
– 容量分析
– 性能分析
3. 月报
– 综合分析
– 容量预测
– 优化建议
Part03-生产环境项目实施方案
3.1 系统监控
3.1.1 系统监控
# 1. CPU
top
vmstat 1
mpstat -P ALL 1
# 2. 内存
free -h
cat /proc/meminfo
# 3. 磁盘
df -h
iostat -x 1
iotop
# 4. 网络
netstat -s
iftop
sar -n DEV 1
# 5. 系统负载
uptime
w
# 6. 进程
ps aux
jps
3.2 Hadoop监控
3.2.1 Hadoop监控
# 1. HDFS Web UI
# http://namenode:9870
# 2. YARN Web UI
# http://resourcemanager:8088
# 3. HDFS命令
hdfs dfsadmin -report
hdfs fsck /
hdfs dfsadmin -metasave
# 4. YARN命令
yarn node -list
yarn application -list
yarn queue -status root.default
# 5. 日志查看
tail -f /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
tail -f /bigdata/app/hadoop/logs/hadoop-hadoop-resourcemanager-*.log
3.3 性能调优
3.3.1 性能调优
# 1. JVM调优
# mapred-site.xml
mapreduce.map.java.opts=-Xmx2048m
mapreduce.reduce.java.opts=-Xmx4096m
# 2. 内存调优
# yarn-site.xml
yarn.nodemanager.resource.memory-mb=65536
yarn.scheduler.minimum-allocation-mb=1024
yarn.scheduler.maximum-allocation-mb=32768
# 3. 并行度调优
# mapred-site.xml
mapreduce.job.reduces=10
# 4. Shuffle调优
mapreduce.task.io.sort.mb=512
mapreduce.task.io.sort.factor=100
mapreduce.reduce.shuffle.parallelcopies=20
# 5. 压缩调优
mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec
Part04-生产案例与实战讲解
4.1 瓶颈分析
4.1.1 瓶颈分析
# 1. CPU瓶颈
top
# 看CPU使用率是否高
vmstat 1
# 看us、sy、id
# 2. 内存瓶颈
free -h
# 看used、free、cache
vmstat 1
# 看si、so(swap)
# 3. 磁盘瓶颈
iostat -x 1
# 看%util、await
iotop
# 看哪个进程IO高
# 4. 网络瓶颈
iftop
# 看网络流量
sar -n DEV 1
# 看网络使用
# 5. HDFS瓶颈
# 看NameNode RPC
# 看DataNode读写
# 看慢节点
4.2 优化案例
4.2.1 优化案例
# 案例1:任务慢
# 问题:任务执行时间长
# 分析:Reduce数太少
# 优化:增加Reduce数
set mapreduce.job.reduces=20;
# 案例2:Shuffle慢
# 问题:Shuffle阶段慢
# 分析:io.sort.mb太小
# 优化:增大io.sort.mb
mapreduce.task.io.sort.mb=1024
# 案例3:内存不足
# 问题:任务OOM
# 分析:内存配置小
# 优化:增大内存
mapreduce.map.java.opts=-Xmx3072m
mapreduce.reduce.java.opts=-Xmx6144m
# 案例4:磁盘慢
# 问题:磁盘IO高
# 分析:单盘
# 优化:多盘、SSD
4.3 优化验证
4.3.1 优化验证
# 1. 测试基准任务
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen 10000000 /terasort-input
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort /terasort-input /terasort-output
# 2. 记录优化前时间
# 记录:TeraSort用时
# 3. 实施优化
# 修改配置
# 4. 记录优化后时间
# 再次执行TeraSort
# 记录用时
# 5. 对比结果
# 看是否有改善
# 看是否有副作用
Part05-风哥经验总结与分享
5.1 最佳实践
最佳实践:
- 监控先行:先有监控再调优
- 先测量:先测量再优化
- 找瓶颈:找到瓶颈再优化
- 小步走:一次改一个参数
- 要验证:优化后验证效果
5.2 常见坑点
1. 盲目调优
– 现象:越调越差
– 原因:没找到瓶颈
– 避坑:先测量找瓶颈
2. 一次改太多
– 现象:不知道哪个起作用
– 原因:一次改多个参数
– 避坑:一次改一个
3. 不验证
– 现象:不知道效果
– 原因:没验证
– 避坑:优化后验证
4. 过度优化
– 现象:投入产出比低
– 原因:过度优化
– 避坑:适可而止
5.3 检查清单
## 监控检查
– [ ] 系统监控配置
– [ ] Hadoop监控配置
– [ ] 告警配置
– [ ] 数据采集正常
– [ ] 展示正常
## 调优检查
– [ ] 性能测量完成
– [ ] 瓶颈已识别
– [ ] 优化已实施
– [ ] 效果已验证
– [ ] 无副作用
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
