Debian上Hadoop日志管理技巧
启用YARN日志聚合功能,将分布式节点的日志汇总到HDFS统一目录,避免单节点日志分散。需修改yarn-site.xml配置文件,添加/修改以下属性:
yarn.log-aggregation-enable=true:开启日志聚合;yarn.nodemanager.remote-app-log-dir=/app-logs:指定HDFS中日志聚合的目标目录(需提前创建);yarn.nodemanager.remote-app-log-dir-suffix=logs:日志文件后缀;yarn.log-aggregation.retain-seconds=172800:日志保留时长(单位:秒,示例为2天)。$HADOOP_HOME/sbin/stop-yarn.sh && $HADOOP_HOME/sbin/start-yarn.sh)使配置生效。http://resourcemanager-host:8088)导航至“Applications”页面,选择具体应用即可查看其日志;或通过Job History Server界面(默认http://jobhistory-host:19888)查看已完成作业的日志。yarn logs -applicationId <应用ID>命令直接获取指定应用的日志(应用ID可从Web UI或命令yarn application -list获取);也可用hdfs dfs -cat /app-logs/*/userlogs/*/*查看HDFS中存储的聚合日志。${HADOOP_HOME}/logs目录下(如hadoop-hadoop-namenode-localhost.log)。yarn.nodemanager.remote-app-log-dir指定目录(如/app-logs),按用户和作业ID分层存储(路径示例:/app-logs/user1/logs/application_1234567890_0001)。yarn.log-aggregation.retain-seconds设置日志保留时长,超过期限的日志会自动从节点和HDFS中删除,无需手动干预。delete_old_logs.sh),使用find命令查找并删除超过指定天数(如7天)的本地日志文件(路径:${HADOOP_HOME}/logs/*.log);然后通过Cron定时任务(如0 0 * * * /path/to/delete_old_logs.sh)每天自动执行。修改log4j.properties文件(位于${HADOOP_HOME}/etc/hadoop目录)调整日志级别,满足不同场景需求:
log4j.rootLogger属性(如INFO, console调整为DEBUG, console可输出更详细日志,但会增加磁盘占用);log4j.logger.org.apache.hadoop.hdfs.server.namenode=DEBUG)。CREATE TABLE hadoop_logs (log_line STRING) LOCATION '/app-logs/'),使用Hive SQL进行查询(如SELECT * FROM hadoop_logs WHERE log_line LIKE '%ERROR%'),快速定位错误日志。