1. 首页 > Hadoop教程 > 正文

大数据教程FG169-Hadoop日常巡检与健康检查实战

本文详细介绍Hadoop日常巡检与健康检查实战,包括HDFS、YARN、HBase等组件的巡检方法和自动化脚本,参考Hadoop官方运维文档,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com

Part01-基础概念与理论知识

1.1 巡检概述

巡检是指定期对系统进行检查,发现潜在问题,及时处理,确保系统稳定运行。更多视频教程www.fgedu.net.cn

巡检目标:

  • 发现潜在问题
  • 预防故障发生
  • 优化系统性能
  • 确保系统稳定
  • 降低运维成本

1.2 巡检类型

巡检类型:

# 巡检类型
日常巡检:
– 频率:每天
– 内容:基础检查
– 时间:10-30分钟

周巡检:
– 频率:每周
– 内容:深度检查
– 时间:30-60分钟

月巡检:
– 频率:每月
– 内容:全面检查
– 时间:1-2小时

专项巡检:
– 事件触发
– 问题排查
– 性能优化

1.3 巡检指标

巡检指标:

风哥提示:巡检指标要根据实际情况设定,既要全面,又要避免过于繁琐。建议从可用性、性能、容量、安全四个维度考虑。更多学习教程公众号风哥教程itpux_com

Part02-生产环境规划与建议

2.1 巡检方案规划

巡检方案规划要点:

# 巡检内容规划
HDFS巡检:
– NameNode状态
– DataNode状态
– 存储空间
– 副本数
– 坏盘

YARN巡检:
– ResourceManager状态
– NodeManager状态
– 集群资源
– 队列状态
– 应用状态

HBase巡检:
– HMaster状态
– RegionServer状态
– Region分布
– 集群负载
– HLog状态

Hive巡检:
– HiveServer2状态
– Metastore状态
– 表分区
– 数据量

Kafka巡检:
– Broker状态
– Topic状态
– 分区状态
– 消息堆积

# 巡检时间规划
日常巡检:
– 时间:每天早上9点
– 人员:运维工程师
– 输出:巡检报告

周巡检:
– 时间:每周一早上
– 人员:运维负责人
– 输出:周巡检报告

月巡检:
– 时间:每月1号
– 人员:运维团队
– 输出:月巡检报告

2.2 巡检工具

巡检工具:

巡检工具:

  • 命令行工具:hdfs dfsadmin、yarn node、hbase hbck
  • 监控系统:Prometheus、Grafana、Zabbix
  • 日志分析:ELK、Loki
  • 自定义脚本:Shell、Python

from bigdata视频:www.itpux.com

2.3 巡检规范

巡检规范:

# 巡检报告规范
报告内容:
– 巡检时间
– 巡检人员
– 巡检环境
– 巡检项目
– 检查结果
– 问题汇总
– 处理建议

报告格式:
– HTML/Markdown
– 清晰易读
– 图表展示
– 重点突出

# 问题处理规范
问题记录:
– 问题时间
– 问题描述
– 问题级别
– 处理状态
– 处理人

问题级别:
– P0:紧急,立即处理
– P1:高,24小时内处理
– P2:中,72小时内处理
– P3:低,计划内处理

Part03-生产环境项目实施方案

3.1 HDFS巡检实战

3.1.1 HDFS巡检

# 1. 检查NameNode状态
hdfs dfsadmin -report

# 2. 检查DataNode状态
hdfs dfsadmin -report | grep -A 10 “Datanodes available”

# 3. 检查HDFS健康状态
hdfs fsck / -files -blocks -locations

# 4. 检查存储空间
hdfs dfs -df -h

# 5. 检查副本数
hdfs fsck / | grep “Total size”
hdfs fsck / | grep “Average block replication”

# 6. 检查坏块
hdfs fsck / -list-corruptfileblocks

# 7. 检查回收站
hdfs dfs -du -h /user/root/.Trash

# 8. 检查快照
hdfs lsSnapshottableDir

# 9. 检查慢节点
# 通过Web UI查看
# http://fgedu-nn:50070

# 10. HDFS巡检脚本
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “========== HDFS巡检开始 ==========”
echo “巡检时间: $(date)”

echo “”
echo “1. NameNode状态:”
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

echo “”
echo “2. DataNode数量:”
DATANODE_COUNT=$(hdfs dfsadmin -report | grep “Live datanodes” | awk ‘{print $3}’)
echo “Live DataNodes: $DATANODE_COUNT”

echo “”
echo “3. HDFS存储使用情况:”
hdfs dfs -df -h

echo “”
echo “4. 副本系数:”
REPLICATION=$(hdfs getconf -confKey dfs.replication)
echo “默认副本数: $REPLICATION”

echo “”
echo “5. 检查坏块:”
CORRUPT=$(hdfs fsck / -list-corruptfileblocks 2>/dev/null | grep “The filesystem under path” | awk ‘{print $6}’)
if [ “$CORRUPT” = “0” ]; then
echo “坏块数量: $CORRUPT [正常]”
else
echo “坏块数量: $CORRUPT [异常]”
fi

echo “”
echo “========== HDFS巡检完成 ==========”

# 11. 自动修复坏块
hdfs fsck / -delete
hdfs dfsadmin -refreshNodes

3.2 YARN巡检实战

3.2.1 YARN巡检

# 1. 检查ResourceManager状态
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

# 2. 检查NodeManager状态
yarn node -list

# 3. 检查集群资源
yarn cluster -list

# 4. 检查队列状态
yarn queue -status root.production
yarn queue -status root.development

# 5. 检查运行中的应用
yarn application -list

# 6. 检查失败的应用
yarn application -list -appStates FAILED

# 7. 检查Web UI
# http://fgedu-rm:8088

# 8. YARN巡检脚本
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “========== YARN巡检开始 ==========”
echo “巡检时间: $(date)”

echo “”
echo “1. ResourceManager状态:”
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

echo “”
echo “2. NodeManager状态:”
yarn node -list

echo “”
echo “3. 集群资源:”
yarn cluster -list

echo “”
echo “4. 运行中的应用:”
RUNNING=$(yarn application -list -appStates RUNNING 2>/dev/null | grep -v “Total” | wc -l)
echo “Running Applications: $RUNNING”

echo “”
echo “5. 失败的应用:”
FAILED=$(yarn application -list -appStates FAILED 2>/dev/null | grep -v “Total” | wc -l)
echo “Failed Applications: $FAILED”

echo “”
echo “========== YARN巡检完成 ==========”

# 9. 查看Application日志
yarn logs -applicationId <application_id>

# 10. 查看Container日志
yarn logs -applicationId <application_id> -containerId <container_id>

3.3 HBase巡检实战

3.3.1 HBase巡检

# 1. 检查HBase状态
hbase hbck

# 2. 检查HMaster状态
echo “status ‘simple'” | hbase shell

# 3. 检查RegionServer状态
echo “status ‘detailed'” | hbase shell

# 4. 检查表状态
echo “list” | hbase shell

# 5. 检查Region分布
echo “status ‘simple'” | hbase shell

# 6. 检查HLog
hdfs dfs -ls /hbase/WALs

# 7. 检查HFile
hdfs dfs -du -h /hbase/data

# 8. HBase巡检脚本
#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “========== HBase巡检开始 ==========”
echo “巡检时间: $(date)”

echo “”
echo “1. HBase集群状态:”
echo “status ‘simple'” | hbase shell

echo “”
echo “2. 表列表:”
echo “list” | hbase shell | grep -E ‘^[a-z]’ | grep -v ‘list’ | grep -v ‘TABLE’

echo “”
echo “3. 检查HLog:”
hdfs dfs -count /hbase/WALs

echo “”
echo “4. 检查HFile:”
hdfs dfs -du -s /hbase/data

echo “”
echo “5. 运行hbck:”
hbase hbck 2>&1 | tail -20

echo “”
echo “========== HBase巡检完成 ==========”

# 9. 修复HBase
hbase hbck -fixMeta
hbase hbck -fixAssignments

# 10. 合并Region
echo “major_compact ‘fgedu_user'” | hbase shell

# 11. 检查Web UI
# http://fgedu-master:16010

风哥提示:HDFS巡检重点检查坏块和存储空间,YARN巡检重点检查应用状态和资源使用,HBase巡检重点检查Region分布和集群状态。建议将这些检查自动化。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 自动化巡检脚本实战

4.1.1 完整巡检脚本

#!/bin/bash
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 巡检脚本
REPORT_DIR=”/bigdata/fgdata/reports”
REPORT_FILE=”$REPORT_DIR/check_report_$(date +%Y%m%d_%H%M%S).html”

mkdir -p $REPORT_DIR

echo “<!DOCTYPE html>” > $REPORT_FILE
echo “<html lang=’zh-CN’>” >> $REPORT_FILE
echo “<head>” >> $REPORT_FILE
echo “<meta charset=’UTF-8′>” >> $REPORT_FILE
echo “<title>大数据集群巡检报告</title>” >> $REPORT_FILE
echo “<style>” >> $REPORT_FILE
echo “body { font-family: Arial, sans-serif; margin: 20px; }” >> $REPORT_FILE
echo “h1 { color: #333; }” >> $REPORT_FILE
echo “h2 { color: #555; margin-top: 30px; }” >> $REPORT_FILE
echo “.normal { color: green; }” >> $REPORT_FILE
echo “.warning { color: orange; }” >> $REPORT_FILE
echo “.error { color: red; }” >> $REPORT_FILE
echo “table { border-collapse: collapse; width: 100%; margin-top: 10px; }” >> $REPORT_FILE
echo “th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }” >> $REPORT_FILE
echo “th { background-color: #f5f5f5; }” >> $REPORT_FILE
echo “</style>” >> $REPORT_FILE
echo “</head>” >> $REPORT_FILE
echo “<body>” >> $REPORT_FILE
echo “<h1>大数据集群巡检报告</h1>” >> $REPORT_FILE
echo “<p>巡检时间: $(date)</p>” >> $REPORT_FILE
echo “<p>巡检人员: fgedu</p>” >> $REPORT_FILE

echo “<h2>1. HDFS巡检</h2>” >> $REPORT_FILE

# HDFS检查
echo “<h3>1.1 NameNode状态</h3>” >> $REPORT_FILE
NN1_STATUS=$(hdfs haadmin -getServiceState nn1 2>/dev/null || echo “unknown”)
NN2_STATUS=$(hdfs haadmin -getServiceState nn2 2>/dev/null || echo “unknown”)
echo “<p>NN1: $NN1_STATUS</p>” >> $REPORT_FILE
echo “<p>NN2: $NN2_STATUS</p>” >> $REPORT_FILE

echo “<h3>1.2 DataNode数量</h3>” >> $REPORT_FILE
DN_LIVE=$(hdfs dfsadmin -report 2>/dev/null | grep “Live datanodes” | awk ‘{print $3}’ || echo 0)
echo “<p>Live DataNodes: $DN_LIVE</p>” >> $REPORT_FILE

echo “<h3>1.3 存储空间使用</h3>” >> $REPORT_FILE
HDFS_DF=$(hdfs dfs -df -h 2>/dev/null)
echo “<pre>$HDFS_DF</pre>” >> $REPORT_FILE

echo “<h2>2. YARN巡检</h2>” >> $REPORT_FILE

# YARN检查
echo “<h3>2.1 ResourceManager状态</h3>” >> $REPORT_FILE
RM1_STATUS=$(yarn rmadmin -getServiceState rm1 2>/dev/null || echo “unknown”)
RM2_STATUS=$(yarn rmadmin -getServiceState rm2 2>/dev/null || echo “unknown”)
echo “<p>RM1: $RM1_STATUS</p>” >> $REPORT_FILE
echo “<p>RM2: $RM2_STATUS</p>” >> $REPORT_FILE

echo “<h3>2.2 NodeManager数量</h3>” >> $REPORT_FILE
NM_COUNT=$(yarn node -list 2>/dev/null | grep “Total Nodes” | awk ‘{print $3}’ || echo 0)
echo “<p>NodeManagers: $NM_COUNT</p>” >> $REPORT_FILE

echo “<h3>2.3 运行中的应用</h3>” >> $REPORT_FILE
RUNNING_APPS=$(yarn application -list -appStates RUNNING 2>/dev/null | grep -v “Total” | wc -l)
echo “<p>Running Applications: $RUNNING_APPS</p>” >> $REPORT_FILE

echo “<h2>3. 系统巡检</h2>” >> $REPORT_FILE

# 系统检查
echo “<h3>3.1 磁盘使用</h3>” >> $REPORT_FILE
DISK_USAGE=$(df -h)
echo “<pre>$DISK_USAGE</pre>” >> $REPORT_FILE

echo “<h3>3.2 内存使用</h3>” >> $REPORT_FILE
MEM_USAGE=$(free -h)
echo “<pre>$MEM_USAGE</pre>” >> $REPORT_FILE

echo “<h3>3.3 CPU负载</h3>” >> $REPORT_FILE
CPU_LOAD=$(uptime)
echo “<p>$CPU_LOAD</p>” >> $REPORT_FILE

echo “</body>” >> $REPORT_FILE
echo “</html>” >> $REPORT_FILE

echo “巡检完成,报告已生成: $REPORT_FILE”

# 定时任务
crontab -e
# 每天早上9点执行巡检
0 9 * * * /bigdata/app/scripts/daily_check.sh

4.2 巡检报告实战

4.2.1 巡检报告

# 巡检报告内容
报告结构:
– 概述
– 巡检时间
– 巡检人员
– 巡检环境

– 巡检项目
– HDFS巡检
– YARN巡检
– HBase巡检
– 系统巡检

– 问题汇总
– 问题列表
– 问题级别
– 处理状态

– 处理建议
– 改进建议
– 优化建议
– 后续计划

# 巡检报告示例
大数据集群巡检报告
巡检时间:2024-04-08 09:00:00
巡检人员:fgedu
巡检环境:生产环境

巡检项目:
1. HDFS巡检
– NameNode状态:正常
– DataNode数量:10
– 存储空间使用:65%
– 坏块数量:0
– 状态:正常

2. YARN巡检
– ResourceManager状态:正常
– NodeManager数量:10
– 运行应用:5
– 失败应用:0
– 状态:正常

3. HBase巡检
– HMaster状态:正常
– RegionServer数量:5
– Region数量:100
– 状态:正常

4. 系统巡检
– 磁盘使用:平均70%
– 内存使用:平均60%
– CPU负载:正常
– 状态:正常

问题汇总:

处理建议:
– 继续保持
– 下周考虑扩容存储空间

4.3 告警处理实战

4.3.1 告警处理流程

# 告警处理流程
1. 告警接收
– 接收告警通知
– 确认告警级别

2. 告警分析
– 查看告警详情
– 查看相关指标
– 查看相关日志

3. 问题定位
– 定位问题原因
– 确定影响范围

4. 问题处理
– 制定处理方案
– 执行处理操作
– 验证问题解决

5. 告警关闭
– 确认问题解决
– 记录处理过程
– 关闭告警

# 常见告警处理
HDFS存储空间告警:
– 检查存储空间
– 清理过期数据
– 清理回收站
– 扩容

HDFS坏块告警:
– 检查坏块
– 自动修复
– 检查磁盘

YARN资源不足告警:
– 检查资源使用
– 调整队列
– 扩容集群

应用失败告警:
– 查看应用日志
– 分析失败原因
– 修复问题
– 重跑应用

# 告警升级机制
P0告警:
– 立即处理
– 30分钟内响应
– 上报负责人

P1告警:
– 24小时内处理
– 上报负责人

P2告警:
– 72小时内处理
– 计划处理

P3告警:
– 计划内处理
– 记录在案

生产环境建议:巡检要制度化、自动化。建立完善的告警机制,及时发现和处理问题。定期回顾巡检报告,持续优化。更多视频教程www.fgedu.net.cn

Part05-风哥经验总结与分享

5.1 巡检最佳实践

巡检最佳实践:

  • 自动化:尽可能自动化巡检
  • 制度化:建立巡检制度
  • 可视化:巡检报告清晰易读
  • 闭环:问题要有处理有闭环
  • 持续优化:定期回顾,持续改进

5.2 常见问题处理

# 常见问题1:巡检脚本执行失败
– 检查权限
– 检查环境变量
– 检查网络
– 查看日志
– 手动测试

# 常见问题2:告警风暴
– 优化告警规则
– 合并告警
– 分级告警
– 静默非关键告警
– 调整阈值

# 常见问题3:误报
– 调整告警阈值
– 优化告警规则
– 增加告警持续时间
– 增加依赖检查

# 常见问题4:巡检流于形式
– 明确巡检目的
– 建立考核机制
– 自动化巡检
– 定期回顾
– 持续改进

# 常见问题5:问题重复发生
– 根因分析
– 制定预防措施
– 完善监控
– 文档记录
– 培训分享

5.3 运维检查清单

# 日常巡检检查清单
– [ ] HDFS NameNode状态
– [ ] HDFS DataNode状态
– [ ] HDFS存储空间
– [ ] HDFS坏块
– [ ] YARN ResourceManager状态
– [ ] YARN NodeManager状态
– [ ] YARN应用状态
– [ ] HBase HMaster状态
– [ ] HBase RegionServer状态
– [ ] 系统磁盘使用
– [ ] 系统内存使用
– [ ] 系统CPU负载
– [ ] 网络状态
– [ ] 告警检查
– [ ] 日志检查

# 周巡检检查清单
– [ ] HDFS fsck检查
– [ ] HDFS小文件检查
– [ ] YARN队列状态
– [ ] HBase Region分布
– [ ] HBase major compact
– [ ] 数据备份检查
– [ ] 安全检查
– [ ] 性能分析
– [ ] 容量趋势分析
– [ ] 问题回顾

# 月巡检检查清单
– [ ] 全面健康检查
– [ ] 性能优化
– [ ] 容量规划
– [ ] 安全审计
– [ ] 备份验证
– [ ] 文档更新
– [ ] 经验总结
– [ ] 团队培训

风哥提示:巡检是运维的基本功,要认真对待。建立完善的巡检体系,可以及时发现和解决问题,避免故障发生。建议从自动化开始,逐步完善。学习交流加群风哥微信: itpux-com

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

联系我们

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

微信号:itpux-com

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