本文档风哥主要介绍Hadoop集群日常巡检,包括巡检项目、巡检脚本、巡检报告等内容,风哥教程参考Hadoop官方文档Cluster Setup等内容,适合大数据运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 日常巡检概述
Hadoop集群日常巡检是保障集群稳定运行的重要工作,通过定期巡检可以及时发现和解决问题。学习交流加群风哥微信: itpux-com
- 服务状态:检查各服务运行状态
- 资源使用:监控资源使用情况
- 健康检查:检查集群健康状态
- 问题处理:及时发现和处理问题
日常巡检是运维工作的基础,
通过巡检保障集群稳定运行。
主要目的:
1. 发现问题
– 服务异常
– 资源不足
– 性能下降
2. 预防问题
– 容量规划
– 性能优化
– 风险预警
3. 记录状态
– 集群状态
– 资源使用
– 性能指标
# 巡检分类
1. 日常巡检
频率:每日
内容:服务状态、基础检查
2. 周巡检
频率:每周
内容:深度检查、趋势分析
3. 月巡检
频率:每月
内容:全面检查、容量规划
4. 专项巡检
频率:按需
内容:特定问题检查
# 巡检流程
┌─────────────────────────────────────────┐
│ 执行巡检 │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 收集数据 │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 分析数据 │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 生成报告 │
└───────────────────┬─────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 处理问题 │
└─────────────────────────────────────────┘
# 巡检原则
1. 全面性
覆盖所有关键组件和指标
2. 规范性
统一巡检标准和流程
3. 及时性
按时执行巡检任务
4. 有效性
巡检结果可操作
5. 可追溯
巡检记录可查询
1.2 巡检项目分类
巡检项目分类详解:
1. 硬件状态
项目 检查内容 正常标准
服务器状态 是否在线 全部在线
CPU使用率 使用百分比 < 80%
内存使用率 使用百分比 < 85%
磁盘使用率 使用百分比 < 85%
网络状态 连接状态 正常
2. 操作系统
项目 检查内容 正常标准
系统时间 时间同步 误差<1秒
系统负载 Load Average < CPU核数
进程状态 关键进程 运行中
系统日志 错误日志 无严重错误
# HDFS巡检项目
1. NameNode
项目 检查内容 正常标准
服务状态 进程状态 运行中
堆内存使用 使用百分比 < 85%
GC情况 GC频率和时间 正常
RPC队列 队列长度 < 100
文件数量 文件总数 监控趋势
块数量 块总数 监控趋势
2. DataNode
项目 检查内容 正常标准
存活节点 存活数量 全部存活
磁盘使用 使用百分比 < 85%
块数量 块总数 监控趋势
网络流量 读写流量 监控趋势
3. 块健康
项目 检查内容 正常标准
丢失块 Missing Blocks 0
损坏块 Corrupt Blocks 0
副本不足块 Under Replicated < 100
待复制块 Pending Replication < 1000
# YARN巡检项目
1. ResourceManager
项目 检查内容 正常标准
服务状态 进程状态 运行中
堆内存使用 使用百分比 < 85%
应用数量 运行中应用 监控趋势
队列状态 队列资源 正常
2. NodeManager
项目 检查内容 正常标准
存活节点 存活数量 全部存活
容器数量 运行中容器 监控趋势
资源使用 CPU/内存使用 < 85%
# 安全巡检项目
项目 检查内容 正常标准
Kerberos状态 服务状态 运行中
证书有效期 过期时间 > 30天
权限配置 权限设置 符合规范
审计日志 日志完整性 完整
# 备份巡检项目
项目 检查内容 正常标准
备份任务 执行状态 成功
备份数据 数据完整性 完整
恢复测试 恢复结果 成功
1.3 巡检工具介绍
巡检工具介绍:
1. HDFS命令
命令 用途
hdfs dfsadmin -report 集群报告
hdfs fsck / 文件系统检查
hdfs haadmin -getAllServiceState HA状态
2. YARN命令
命令 用途
yarn node -list 节点列表
yarn application -list 应用列表
yarn queue -status 队列状态
3. 系统命令
命令 用途
top 系统资源
free -m 内存使用
df -h 磁盘使用
iostat IO统计
# Web界面
1. NameNode UI
URL: http://nn:9870
功能: 集群概览、文件浏览、块信息
2. ResourceManager UI
URL: http://rm:8088
功能: 集群状态、应用管理、队列信息
3. History Server UI
URL: http://hs:19888
功能: 作业历史、任务详情
# 监控工具
工具 用途
Prometheus 指标采集
Grafana 可视化展示
AlertManager 告警管理
# 自动化巡检脚本
#!/bin/bash
# daily_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 自动执行巡检
# 收集巡检数据
# 生成巡检报告
# 发送告警通知
# 巡检报告模板
报告内容:
1. 集群概览
2. 服务状态
3. 资源使用
4. 健康检查
5. 问题列表
6. 建议措施
Part02-生产环境规划与建议
2.1 环境规划建议
环境规划建议:
1. 巡检服务器
配置: 4C/8G/100G
功能: 执行巡检脚本、存储报告
2. 巡检目录
目录 用途
/bigdata/scripts/inspection 巡检脚本
/bigdata/data/inspection 巡检数据
/bigdata/reports/inspection 巡检报告
3. 巡检用户
用户: hadoop_admin
权限: 集群管理权限
# 巡检时间规划
巡检类型 执行时间 耗时
日常巡检 每日09:00 10分钟
周巡检 每周一09:00 30分钟
月巡检 每月1日09:00 2小时
# 巡检通知规划
通知类型 方式 接收人
日常报告 邮件 运维团队
异常告警 邮件+钉钉 运维团队+负责人
周报 邮件 运维团队+管理层
月报 邮件+会议 全体相关人员
2.2 巡检计划建议
巡检计划建议:
时间: 每日09:00
内容:
1. 服务状态检查
– NameNode状态
– DataNode状态
– ResourceManager状态
– NodeManager状态
2. 基础健康检查
– 丢失块检查
– 损坏块检查
– 死亡节点检查
3. 资源使用检查
– HDFS容量
– YARN资源
– 系统资源
4. 日志检查
– 错误日志
– 告警日志
# 周巡检计划
时间: 每周一09:00
内容:
1. 日常巡检所有内容
2. 性能趋势分析
3. 容量增长分析
4. 配置变更检查
5. 安全审计检查
# 月巡检计划
时间: 每月1日09:00
内容:
1. 周巡检所有内容
2. 容量规划评估
3. 性能优化评估
4. 安全策略评估
5. 备份恢复验证
6. 文档更新检查
# 专项巡检计划
触发条件:
– 重大变更前后
– 故障恢复后
– 性能问题排查
– 安全事件响应
内容:
– 针对性检查
– 深度分析
– 问题排查
2.3 报告规划建议
巡检报告规划建议:
1. 日常巡检报告
格式: 简要报告
内容: 状态概览、异常项、处理建议
发送: 邮件
2. 周巡检报告
格式: 详细报告
内容: 完整巡检结果、趋势分析、建议
发送: 邮件
3. 月巡检报告
格式: 综合报告
内容: 月度总结、趋势分析、规划建议
发送: 邮件+会议汇报
# 报告模板
========================================
Hadoop集群巡检报告
========================================
巡检时间: YYYY-MM-DD HH:MM:SS
巡检人员: XXX
集群名称: fgedu-hadoop
一、集群概览
集群状态: 正常/异常
节点数量: X
存储容量: X TB
资源总量: X vcores, X GB
二、服务状态
NameNode: 正常
DataNode: X/X 正常
ResourceManager: 正常
NodeManager: X/X 正常
三、健康检查
丢失块: 0
损坏块: 0
死亡节点: 0
四、资源使用
HDFS使用率: X%
YARN使用率: X%
系统CPU: X%
系统内存: X%
五、问题列表
1. [问题描述]
影响: [影响范围]
建议: [处理建议]
六、建议措施
1. [建议内容]
========================================
Part03-生产环境项目实施方案
3.1 日常巡检实战
$ cat > /bigdata/scripts/inspection/daily_check.sh << 'EOF' #!/bin/bash # daily_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn DATE=$(date +%Y%m%d) TIME=$(date +%Y%m%d_%H%M%S) REPORT_DIR="/bigdata/reports/inspection" REPORT_FILE="${REPORT_DIR}/daily_${TIME}.txt" mkdir -p $REPORT_DIR echo "========================================" > $REPORT_FILE
echo “Hadoop集群日常巡检报告” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
echo “巡检时间: $(date)” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 1. 服务状态检查
echo “一、服务状态检查” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
# NameNode状态
echo “1. NameNode状态:” >> $REPORT_FILE
NN_STATUS=$(jps | grep NameNode | wc -l)
if [ “$NN_STATUS” -eq 1 ]; then
echo ” NameNode: 运行中” >> $REPORT_FILE
else
echo ” NameNode: 异常(未运行)” >> $REPORT_FILE
fi
# DataNode状态
echo “2. DataNode状态:” >> $REPORT_FILE
hdfs dfsadmin -report | grep “Live datanodes” >> $REPORT_FILE
hdfs dfsadmin -report | grep “Dead datanodes” >> $REPORT_FILE
# ResourceManager状态
echo “3. ResourceManager状态:” >> $REPORT_FILE
RM_STATUS=$(jps | grep ResourceManager | wc -l)
if [ “$RM_STATUS” -eq 1 ]; then
echo ” ResourceManager: 运行中” >> $REPORT_FILE
else
echo ” ResourceManager: 异常(未运行)” >> $REPORT_FILE
fi
# NodeManager状态
echo “4. NodeManager状态:” >> $REPORT_FILE
yarn node -list 2>/dev/null | grep “Total Nodes” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 2. 健康检查
echo “二、健康检查” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
# 丢失块检查
echo “1. 块健康状态:” >> $REPORT_FILE
hdfs fsck / 2>&1 | grep -E “MISSING|CORRUPT|UNDER REPLICTED” >> $REPORT_FILE
# 存储状态
echo “2. 存储状态:” >> $REPORT_FILE
hdfs dfsadmin -report | grep -A3 “Configured Capacity” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 3. 资源使用
echo “三、资源使用” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
# HDFS使用率
echo “1. HDFS使用率:” >> $REPORT_FILE
hdfs dfsadmin -report | grep “DFS Used%” >> $REPORT_FILE
# YARN资源
echo “2. YARN资源:” >> $REPORT_FILE
yarn node -list -all 2>/dev/null | head -10 >> $REPORT_FILE
# 系统资源
echo “3. 系统资源:” >> $REPORT_FILE
echo ” CPU使用率: $(top -bn1 | grep “Cpu(s)” | awk ‘{print $2}’)%” >> $REPORT_FILE
echo ” 内存使用率: $(free | awk ‘/Mem/{printf “%.2f%%”, $3/$2*100}’)” >> $REPORT_FILE
echo ” 磁盘使用率: $(df -h / | awk ‘NR==2{print $5}’)” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 4. 日志检查
echo “四、日志检查” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
ERROR_COUNT=$(grep -c “ERROR” /bigdata/app/hadoop/logs/hadoop-*-namenode-*.log 2>/dev/null || echo 0)
echo “NameNode ERROR日志数量: $ERROR_COUNT” >> $REPORT_FILE
WARN_COUNT=$(grep -c “WARN” /bigdata/app/hadoop/logs/hadoop-*-namenode-*.log 2>/dev/null || echo 0)
echo “NameNode WARN日志数量: $WARN_COUNT” >> $REPORT_FILE
echo “” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
# 发送报告
mail -s “Hadoop集群日常巡检报告 $DATE” admin@fgedu.com < $REPORT_FILE
echo "巡检完成,报告已发送"
EOF
$ chmod +x /bigdata/scripts/inspection/daily_check.sh
# 执行巡检
$ /bigdata/scripts/inspection/daily_check.sh
========================================
Hadoop集群日常巡检报告
========================================
巡检时间: 2026年 04月 08日 09:00:00 CST
一、服务状态检查
----------------------------------------
1. NameNode状态:
NameNode: 运行中
2. DataNode状态:
Live datanodes (10):
Dead datanodes (0):
3. ResourceManager状态:
ResourceManager: 运行中
4. NodeManager状态:
Total Nodes:10
二、健康检查
----------------------------------------
1. 块健康状态:
Status: HEALTHY
2. 存储状态:
Configured Capacity: 600000000000 (600 TB)
Present Capacity: 580000000000 (580 TB)
DFS Remaining: 400000000000 (400 TB)
三、资源使用
----------------------------------------
1. HDFS使用率:
DFS Used%: 31.03%
2. YARN资源:
Total Nodes:10
3. 系统资源:
CPU使用率: 25.3%
内存使用率: 68.50%
磁盘使用率: 45%
四、日志检查
----------------------------------------
NameNode ERROR日志数量: 0
NameNode WARN日志数量: 15
========================================
3.2 周巡检实战
$ cat > /bigdata/scripts/inspection/weekly_check.sh << 'EOF' #!/bin/bash # weekly_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn DATE=$(date +%Y%m%d) TIME=$(date +%Y%m%d_%H%M%S) REPORT_DIR="/bigdata/reports/inspection" REPORT_FILE="${REPORT_DIR}/weekly_${TIME}.txt" mkdir -p $REPORT_DIR echo "========================================" > $REPORT_FILE
echo “Hadoop集群周巡检报告” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
echo “巡检时间: $(date)” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 1. 日常巡检内容
echo “一、基础巡检” >> $REPORT_FILE
/bigdata/scripts/inspection/daily_check.sh >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 2. 性能趋势分析
echo “二、性能趋势分析” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
# HDFS增长趋势
echo “1. HDFS存储增长:” >> $REPORT_FILE
echo ” 当前使用: $(hdfs dfsadmin -report | grep “DFS Used” | head -1)” >> $REPORT_FILE
# 作业统计
echo “2. 作业统计:” >> $REPORT_FILE
yarn application -list -appStates FINISHED 2>/dev/null | wc -l >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 3. 配置变更检查
echo “三、配置变更检查” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
echo “检查配置文件变更:” >> $REPORT_FILE
ls -la /bigdata/app/hadoop/etc/hadoop/*.xml >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 4. 安全审计
echo “四、安全审计” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
echo “审计日志统计:” >> $REPORT_FILE
wc -l /bigdata/app/hadoop/logs/hdfs-audit.log >> $REPORT_FILE
echo “” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
mail -s “Hadoop集群周巡检报告 $DATE” admin@fgedu.com < $REPORT_FILE echo "周巡检完成" EOF $ chmod +x /bigdata/scripts/inspection/weekly_check.sh $ /bigdata/scripts/inspection/weekly_check.sh
3.3 月巡检实战
$ cat > /bigdata/scripts/inspection/monthly_check.sh << 'EOF' #!/bin/bash # monthly_check.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: http://www.fgedu.net.cn DATE=$(date +%Y%m%d) TIME=$(date +%Y%m%d_%H%M%S) REPORT_DIR="/bigdata/reports/inspection" REPORT_FILE="${REPORT_DIR}/monthly_${TIME}.txt" mkdir -p $REPORT_DIR echo "========================================" > $REPORT_FILE
echo “Hadoop集群月巡检报告” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
echo “巡检时间: $(date)” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 1. 周巡检内容
echo “一、基础巡检” >> $REPORT_FILE
/bigdata/scripts/inspection/weekly_check.sh >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 2. 容量规划
echo “二、容量规划评估” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
echo “1. 存储容量:” >> $REPORT_FILE
hdfs dfsadmin -report | grep -E “Capacity|Used|Remaining” >> $REPORT_FILE
echo “” >> $REPORT_FILE
echo “2. 计算资源:” >> $REPORT_FILE
yarn node -list -all 2>/dev/null | grep “Total Nodes” >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 3. 备份验证
echo “三、备份恢复验证” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
echo “检查备份任务状态:” >> $REPORT_FILE
ls -la /backup/hadoop/ >> $REPORT_FILE
echo “” >> $REPORT_FILE
# 4. 文档检查
echo “四、文档更新检查” >> $REPORT_FILE
echo “—————————————-” >> $REPORT_FILE
echo “检查运维文档:” >> $REPORT_FILE
ls -la /bigdata/docs/ >> $REPORT_FILE
echo “” >> $REPORT_FILE
echo “========================================” >> $REPORT_FILE
mail -s “Hadoop集群月巡检报告 $DATE” admin@fgedu.com < $REPORT_FILE echo "月巡检完成" EOF $ chmod +x /bigdata/scripts/inspection/monthly_check.sh $ /bigdata/scripts/inspection/monthly_check.sh # 配置定时任务 $ crontab -e # 日常巡检 0 9 * * * /bigdata/scripts/inspection/daily_check.sh # 周巡检 0 9 * * 1 /bigdata/scripts/inspection/weekly_check.sh # 月巡检 0 9 1 * * /bigdata/scripts/inspection/monthly_check.sh
Part04-生产案例与实战讲解
4.1 巡检案例
# 1. 巡检发现
日常巡检报告显示:
DataNode fgedu-node3 磁盘使用率: 92%
# 2. 问题分析
# 检查磁盘使用
$ ssh fgedu-node3 “df -h”
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 460G 40G 92% /
# 检查HDFS数据目录
$ ssh fgedu-node3 “du -sh /bigdata/fgdata/*”
50G /bigdata/fgdata/current
…
# 3. 解决方案
# 方案1: 数据均衡
$ hdfs balancer -threshold 5
# 方案2: 添加新磁盘
# 挂载新磁盘,配置多目录
# 方案3: 清理临时数据
$ ssh fgedu-node3 “rm -rf /tmp/*”
# 4. 验证结果
$ ssh fgedu-node3 “df -h”
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 400G 100G 80% /
4.2 健康检查案例
# 1. 健康检查
$ hdfs fsck /
…
Status: HEALTHY
Total size: 180000000000 B
Total blocks: 500000
Minimally replicated blocks: 500000 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 5 (0.001 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 3.00
Corrupt blocks: 0
Missing blocks: 0
Missing replicas: 5
# 2. 检查副本不足块
$ hdfs fsck / | grep “Under replicated”
# 3. 修复副本
# 增加复制因子
$ hdfs dfs -setrep 4 /user/fgedu/data
# 或等待自动修复
# HDFS会自动复制副本不足的块
# 4. 验证修复
$ hdfs fsck /
Status: HEALTHY
Under-replicated blocks: 0 (0.0 %)
4.3 常见问题处理
4.3.1 巡检脚本执行失败
# 排查步骤
# 1. 检查脚本权限
$ ls -la /bigdata/scripts/inspection/daily_check.sh
-rw-r–r– 1 root root 1234 Apr 8 09:00 daily_check.sh
# 2. 检查执行权限
$ chmod +x /bigdata/scripts/inspection/daily_check.sh
# 3. 检查环境变量
$ echo $PATH
# 4. 检查命令路径
$ which hdfs
$ which yarn
# 解决方案
# 在脚本开头添加环境变量
export PATH=/bigdata/app/hadoop/bin:$PATH
export HADOOP_HOME=/bigdata/app/hadoop
4.3.2 巡检报告发送失败
# 排查步骤
# 1. 检查邮件服务
$ systemctl status postfix
# 2. 检查邮件配置
$ cat /etc/postfix/main.cf
# 3. 测试邮件发送
$ echo “test” | mail -s “test” admin@fgedu.com
# 解决方案
# 配置邮件服务器
$ systemctl start postfix
$ systemctl enable postfix
Part05-风哥经验总结与分享
5.1 巡检最佳实践
巡检最佳实践建议:
1. 建立完善的巡检制度
2. 使用自动化巡检工具
3. 定期审查巡检策略
4. 及时处理巡检发现的问题
5. 做好巡检记录和追溯
5.2 使用建议
使用建议:
- 巡检要全面覆盖
- 巡检要按时执行
- 问题要及时处理
- 报告要规范记录
5.3 工具推荐
巡检工具推荐:
- 自定义脚本:灵活定制
- 监控系统:实时监控
- 自动化工具:定时执行
- 报告系统:报告生成
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
