1. 首页 > Hadoop教程 > 正文

大数据教程FG192-Hadoop性能监控与调优实战

本文详细介绍Hadoop性能监控与调优实战,包括系统监控、Hadoop监控、性能调优、瓶颈分析等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com

Part01-基础概念与理论知识

1.1 性能监控概述

性能监控是指收集、分析系统性能指标,发现性能问题并进行调优。更多视频教程www.fgedu.net.cn

性能监控目标:

  • 了解系统状态
  • 发现性能瓶颈
  • 预测资源需求
  • 验证优化效果

1.2 关键性能指标

关键性能指标:

# 系统指标
– CPU使用率
– 内存使用率
– 磁盘IO
– 网络流量
– 负载

# HDFS指标
– 读写吞吐量
– 数据块分布
– 慢节点
– NameNode RPC

# YARN指标
– 队列资源使用率
– 任务执行时间
– 失败任务数
– 等待任务数

1.3 监控工具

监控工具:

风哥提示:常用监控工具包括Prometheus+Grafana、Cloudera Manager、Ambari、Zabbix等。更多学习教程公众号风哥教程itpux_com

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监控

# 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

风哥提示:性能调优要先测量,找到瓶颈再优化。不要盲目调优,每次只改一个参数,对比效果。学习交流加群风哥QQ113257174

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. 对比结果
# 看是否有改善
# 看是否有副作用

生产环境建议:性能优化要循序渐进。先找到瓶颈,再优化,再验证。不要一次改太多参数,不好定位问题。更多视频教程www.fgedu.net.cn

Part05-风哥经验总结与分享

5.1 最佳实践

最佳实践:

  • 监控先行:先有监控再调优
  • 先测量:先测量再优化
  • 找瓶颈:找到瓶颈再优化
  • 小步走:一次改一个参数
  • 要验证:优化后验证效果

5.2 常见坑点

# 常见坑点
1. 盲目调优
– 现象:越调越差
– 原因:没找到瓶颈
– 避坑:先测量找瓶颈

2. 一次改太多
– 现象:不知道哪个起作用
– 原因:一次改多个参数
– 避坑:一次改一个

3. 不验证
– 现象:不知道效果
– 原因:没验证
– 避坑:优化后验证

4. 过度优化
– 现象:投入产出比低
– 原因:过度优化
– 避坑:适可而止

5.3 检查清单

# 检查清单
## 监控检查
– [ ] 系统监控配置
– [ ] Hadoop监控配置
– [ ] 告警配置
– [ ] 数据采集正常
– [ ] 展示正常

## 调优检查
– [ ] 性能测量完成
– [ ] 瓶颈已识别
– [ ] 优化已实施
– [ ] 效果已验证
– [ ] 无副作用

风哥提示:性能优化是持续的过程。监控要持续,测量要持续,优化要持续。不要追求完美,够用就好。学习交流加群风哥微信: itpux-com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息