本文详细介绍Hadoop日志分析与故障定位实战,包括日志位置、常用命令、搜索分析、故障定位等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 日志概述
日志是系统运行的记录,包含错误、警告、信息等内容。更多视频教程www.fgedu.net.cn
- 问题诊断
- 性能分析
- 审计追踪
- 安全监控
1.2 日志位置
日志位置:
1. Hadoop日志
– $HADOOP_HOME/logs/
– /bigdata/app/hadoop/logs/
2. HDFS日志
– hadoop-hadoop-namenode-*.log
– hadoop-hadoop-datanode-*.log
– hadoop-hdfs-audit.log
3. YARN日志
– hadoop-hadoop-resourcemanager-*.log
– hadoop-hadoop-nodemanager-*.log
– yarn-hadoop-*.log
4. 应用日志
– 用户应用日志
– Container日志
– $HADOOP_HOME/logs/userlogs/
1.3 日志级别
日志级别:
Part02-生产环境规划与建议
2.1 日志收集
日志收集:
1. ELK Stack
– Elasticsearch
– Logstash
– Kibana
– 功能强大
2. EFK Stack
– Elasticsearch
– Fluentd
– Kibana
– 轻量级
3. 自建脚本
– rsync
– scp
– 简单灵活
4. 商业产品
– Splunk
– Datadog
– 功能完善
2.2 日志轮转
日志轮转:
- 按大小:例如100MB
- 按时间:每日、每周
- 保留数量:例如保留7个
from bigdata视频:www.itpux.com
2.3 日志保留
日志保留:
1. 在线日志
– 保留7-30天
– 快速查询
– 占用空间
2. 归档日志
– 压缩存储
– 保留3-6个月
– 按需恢复
3. 离线备份
– 长期备份
– 保留1年以上
– 合规要求
Part03-生产环境项目实施方案
3.1 常用日志命令
3.1.1 查看日志
# 查看最新日志
tail -f /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 查看最后100行
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 查看前100行
head -n 100 /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 分页查看
less /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 查看文件大小
ls -lh /bigdata/app/hadoop/logs/
# 统计行数
wc -l /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
3.2 日志搜索
3.2.1 grep搜索
# 搜索ERROR
grep “ERROR” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 搜索ERROR,显示上下文
grep -C 10 “ERROR” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 搜索多个关键词
grep -E “ERROR|WARN” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 搜索并统计
grep -c “ERROR” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
# 递归搜索
grep -r “ERROR” /bigdata/app/hadoop/logs/
# 搜索最近1小时
grep “$(date -d ‘1 hour ago’ ‘+%Y-%m-%d %H’)” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log
3.3 日志分析
3.3.1 日志统计
# 统计ERROR数量
grep “ERROR” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log | wc -l
# 统计WARN数量
grep “WARN” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log | wc -l
# 按小时统计
grep “2024-04-08” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log | awk ‘{print $2}’ | cut -d: -f1 | uniq -c
# 查找Top N错误
grep “ERROR” /bigdata/app/hadoop/logs/hadoop-hadoop-namenode-*.log | awk -F: ‘{print $NF}’ | sort | uniq -c | sort -rn | head -10
Part04-生产案例与实战讲解
4.1 HDFS故障定位
4.1.1 DataNode启动失败
# 1. 查看DataNode日志
tail -n 200 /bigdata/app/hadoop/logs/hadoop-hadoop-datanode-*.log
# 输出示例:
# ERROR … – Incompatible clusterIDs in /bigdata/fgdata/hdfs/data: namenode clusterID = CID-123456789; datanode clusterID = CID-987654321
# 2. 问题原因:clusterID不匹配
# 通常是NameNode格式化了,DataNode没有清理
# 3. 解决方法
# 停止DataNode
hdfs –daemon stop datanode
# 清理DataNode数据目录(注意:会丢失数据!)
mv /bigdata/fgdata/hdfs/data /bigdata/fgdata/hdfs/data.backup
mkdir -p /bigdata/fgdata/hdfs/data
chown -R hadoop:hadoop /bigdata/fgdata/hdfs/data
# 启动DataNode
hdfs –daemon start datanode
sleep 30
# 4. 验证
jps
hdfs dfsadmin -report
4.2 YARN故障定位
4.2.1 任务失败
# 1. 查看ResourceManager日志
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hadoop-resourcemanager-*.log
# 2. 查看NodeManager日志
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hadoop-nodemanager-*.log
# 3. 查看应用日志
yarn application -list
yarn logs -applicationId application_1234567890123_0001
# 4. 查看Container日志
ls -l /bigdata/app/hadoop/logs/userlogs/application_1234567890123_0001/
cat /bigdata/app/hadoop/logs/userlogs/application_1234567890123_0001/container_1234567890123_0001_01_000001/stdout
cat /bigdata/app/hadoop/logs/userlogs/application_1234567890123_0001/container_1234567890123_0001_01_000001/stderr
4.3 常见故障
4.3.1 常见错误
# 1. 连接拒绝
# 错误:Connection refused
# 原因:服务未启动或端口错误
# 检查:jps、netstat
# 2. 权限问题
# 错误:Permission denied
# 原因:权限不足
# 检查:文件权限、用户
# 3. 空间不足
# 错误:No space left on device
# 原因:磁盘满
# 检查:df -h
# 4. 内存不足
# 错误:OutOfMemoryError
# 原因:内存不足
# 检查:内存配置
# 5. 网络问题
# 错误:Network is unreachable
# 原因:网络不通
# 检查:ping、telnet
Part05-风哥经验总结与分享
5.1 最佳实践
最佳实践:
- 日志轮转:配置日志轮转
- 日志收集:集中收集日志
- 日志级别:合理设置日志级别
- 先看日志:问题先看日志
- 关键词搜索:搜索ERROR、WARN
5.2 经验技巧
1. 先看最新日志
– tail -f 实时查看
– tail -n 100 看最后100行
2. 搜索关键词
– ERROR、WARN、Exception
– Failed、Error、Cannot
3. 看时间戳
– 问题发生的时间
– 前后相关日志
4. 对比正常日志
– 正常时的日志
– 异常时的差异
5. 多方验证
– 多个节点日志
– 不同服务日志
5.3 检查清单
## 日常检查
– [ ] 日志轮转正常
– [ ] 磁盘空间充足
– [ ] 没有ERROR日志
– [ ] WARN日志可解释
## 故障排查
– [ ] 查看服务日志
– [ ] 搜索ERROR关键词
– [ ] 查看时间上下文
– [ ] 对比正常情况
– [ ] 多方验证确认
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
