Linux下Hadoop的日志管理怎么做
小樊
43
2025-11-30 19:52:56
Linux下Hadoop日志管理实操指南
一 日志分类与存放路径
- 系统服务日志:包括 HDFS(NameNode、DataNode) 与 YARN(ResourceManager、NodeManager),默认位于 $HADOOP_HOME/logs,常见命名如:hadoop--namenode-.log、yarn--resourcemanager-.log。这些日志用于定位守护进程启动、运行与异常问题。
- 作业与容器日志:MapReduce/Spark on YARN 的 ApplicationMaster 与 Container 日志 默认分散在各节点的本地 $HADOOP_HOME/logs 中;启用日志聚合后,作业运行完成后会汇总到 HDFS,便于统一检索与留存。
- 历史作业日志:由 MapReduce JobHistory Server 提供查询能力,通常访问 19888 端口查看历史任务详情与日志入口。
二 查看与检索日志
- 本地实时查看与检索:
- 实时跟踪:tail -f $HADOOP_HOME/logs/yarn--resourcemanager-.log
- 关键字过滤:grep -n “ERROR|Exception” $HADOOP_HOME/logs/hadoop--namenode-.log
- 大文件分页:less $HADOOP_HOME/logs/hadoop--datanode-.log(/ 搜索,q 退出)
- Web 与命令行聚合查看:
- ResourceManager:8088 查看应用列表与日志入口
- JobHistory:19888 查看历史作业与日志
- 聚合日志拉取:yarn logs -applicationId application_XXXX_XXXX
- 系统级服务日志(如使用 systemd 管理 Hadoop 进程):journalctl -u hadoop-.service(按时间、优先级筛选)
三 配置与轮转
- 日志目录与级别:在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置 HADOOP_LOG_DIR,在 $HADOOP_HOME/etc/hadoop/log4j.properties 中配置 log4j.rootLogger 与各类 RollingFileAppender(如 MaxFileSize、MaxBackupIndex)以控制滚动与保留数量。
- 使用 logrotate 做系统级轮转(推荐对 $HADOOP_LOG_DIR 统一托管):
- 示例(/etc/logrotate.d/hadoop):
- /var/log/hadoop/.log { daily rotate 7 compress missingok notifempty }
- 含义:按天轮转、保留 7 份、压缩旧日志、目录缺失不报错、空文件不轮转。
- 日志聚合(YARN):在 yarn-site.xml 启用并配置保留期,作业完成后日志自动上传 HDFS,便于集中查询与生命周期管理。
- 历史服务器(MapReduce):在 mapred-site.xml 配置 JobHistory Server 地址与 done/intermediate-done 目录,启动 historyserver 后在 19888 查询历史作业日志。
四 清理与生命周期策略
- 本地日志清理脚本示例(保留最近 7 天,先压缩再删除 30 天前):
- 压缩 7 天前:find $HADOOP_LOG_DIR -type f -name ‘*.log’ -mtime +7 -exec gzip {} ;
- 删除 30 天前:find $HADOOP_LOG_DIR -type f -name ‘*.log.gz’ -mtime +30 -delete
- 聚合日志保留:通过 yarn.log-aggregation.retain-seconds 设置 HDFS 上的保留时长(如 604800 秒=7 天),避免无限增长。
- 权限与安全:对日志目录设置合适的 属主/属组 与 权限(如 640),必要时通过 SELinux 设置正确的上下文,限制非授权访问。
五 集中化与可视化
- 采集与传输:使用 Flume/Logstash 采集各节点日志并发送到 Elasticsearch 或 HDFS,实现统一存储与检索。
- 存储与格式:长期归档可落 HDFS,按分析需求选择 JSON/Parquet/ORC 等列式或结构化格式。
- 检索与展示:使用 ELK(Elasticsearch+Logstash+Kibana) 或 Solr 构建检索与仪表盘;结合 Grafana 与 Prometheus 做指标可视化与告警联动。