1. 首页 > Hadoop教程 > 正文

大数据教程FG183-Hadoop日志分析与故障定位实战

本文详细介绍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 日志级别

日志级别:

风哥提示:日志级别从低到高:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。更多学习教程公众号风哥教程itpux_com

Part02-生产环境规划与建议

2.1 日志收集

日志收集:

# 日志收集方案
1. ELK Stack
– Elasticsearch
– Logstash
– Kibana
– 功能强大

2. EFK Stack
– Elasticsearch
– Fluentd
– Kibana
– 轻量级

3. 自建脚本
– rsync
– scp
– 简单灵活

4. 商业产品
– Splunk
– Datadog
– 功能完善

2.2 日志轮转

日志轮转:

logrotate配置:

  • 按大小:例如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.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

风哥提示:日志是故障定位的关键。要熟练使用tail、grep、awk、sed等命令,快速定位问题。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 HDFS故障定位

4.1.1 DataNode启动失败

# 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 任务失败

# YARN任务失败
# 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

生产环境建议:遇到问题先看日志。先看ERROR,再看WARN,按时间顺序排查。更多视频教程www.fgedu.net.cn

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关键词
– [ ] 查看时间上下文
– [ ] 对比正常情况
– [ ] 多方验证确认

风哥提示:日志是运维的重要工具。要养成看日志的习惯,遇到问题先看日志。熟练使用grep、awk等工具,能大大提高排查效率。学习交流加群风哥微信: itpux-com

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

联系我们

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

微信号:itpux-com

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