HDFS的日志文件默认存储在$HADOOP_HOME/logs目录下(如/home/hadoop/bigdata/hadoop-2.7.5/logs),按组件分类:
hadoop-*-namenode-*.log(主节点运行日志)hadoop-*-datanode-*.log(数据节点运行日志)hadoop-*-secondarynamenode-*.log(辅助节点日志)/var/log/Bigdata/audit/hdfs/目录(如hdfs-audit-*.log)。tail(实时查看末尾)、less(分页查看)、cat(查看全文)等命令。例如:tail -f /home/hadoop/bigdata/hadoop-2.7.5/logs/hadoop-hadoop-twq-namenode-master.log # 实时跟踪NameNode日志
less /home/hadoop/bigdata/hadoop-2.7.5/logs/hadoop-hadoop-twq-datanode-slave1.log # 分页查看DataNode日志
http://master:50070)访问集群日志,支持图形化查看和搜索。使用logrotate工具自动轮转日志,配置文件通常位于/etc/logrotate.d/hadoop(或自定义路径)。示例配置:
/var/log/hadoop/hdfs/*.log { # 匹配HDFS日志路径
daily # 每天轮转一次
rotate 7 # 保留7个备份文件
compress # 压缩旧日志(如.gz格式)
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮转
create 0640 root root # 创建新日志文件并设置权限
}
配置完成后,logrotate会自动执行(可通过cron定时任务触发)。
HDFS使用Log4j框架管理日志级别,支持FATAL(致命错误)、ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试)五个级别。
$HADOOP_HOME/etc/hadoop/log4j.properties文件,找到log4j.rootLogger或特定组件配置,修改日志级别。例如:log4j.rootLogger=INFO, A1 # 全局日志级别设为INFO
log4j.logger.org.apache.hadoop.hdfs=DEBUG # HDFS组件日志级别设为DEBUG(更详细)
修改后需重启HDFS服务使配置生效:$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/start-dfs.sh
hadoop dfsadmin命令临时修改日志级别(无需重启):hadoop dfsadmin -setLogLevel org.apache.hadoop.hdfs.WARN # 将HDFS组件日志级别设为WARN
若HDFS由YARN管理,也可使用yarn命令:yarn logs -applicationId <应用ID> -appMasterLogLevel WARN # 调整特定应用的日志级别
注意:生产环境建议将日志级别设为
INFO或WARN,避免DEBUG级别导致磁盘I/O过高。
ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk进行集中收集、搜索和可视化,快速定位问题(如节点故障、性能瓶颈)。crontab定时任务定期删除旧日志(如7天前),避免磁盘空间耗尽。示例脚本:find /home/hadoop/bigdata/hadoop-2.7.5/logs -name "*.log" -mtime +7 -exec rm -f {} \;
添加到crontab -e中,每天凌晨执行:0 0 * * * /bin/bash /path/to/cleanup_script.sh
hdfs-site.xml启用审计日志:<property>
<name>hdfs.audit.logger</name>
<value>INFO,audit</value>
</property>
<property>
<name>hdfs.audit.log.file</name>
<value>hdfs-audit.log</value>
</property>
重启HDFS后,审计日志会存储在指定路径(如/var/log/Bigdata/audit/hdfs/)。root,所属组设为loggers(自定义组),仅允许授权用户访问:sudo groupadd loggers # 创建日志组
sudo mkdir -p /var/log/hadoop/hdfs # 创建日志目录
sudo chown root:loggers /var/log/hadoop/hdfs # 设置所有者
sudo chmod 640 /var/log/hadoop/hdfs/*.log # 设置权限(root可读写,组可读)
sudo usermod -a -G loggers hadoop_user # 将hadoop用户加入loggers组
sudo chcon -R -t var_log_t /var/log/hadoop/hdfs # 设置SELinux类型为var_log_t
这些操作可防止未授权用户读取敏感日志信息。