Ubuntu环境下Hadoop日志分析的主要方法
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log可实时跟踪NameNode的日志变化)。grep "ERROR" hadoop-hdfs-datanode-*.log可提取所有ERROR级别的日志行;grep -E 'Connection refused|SocketTimeout' *.log可匹配网络异常模式)。awk '/ERROR/ {print $1, $2, $3}'可提取错误日志的时间戳和关键信息;awk '{sum+=$1; sumsq+=$1*$1} END {print "Mean:",sum/NR; print "StdDev:",sqrt(sumsq/NR - (sum/NR)^2)}'可计算Shuffle耗时的均值和标准差,用于分析任务倾斜)。sed -n '2,200p' datanode.log可打印日志文件的第2至200行)。yarn logs -applicationId <appId>命令直接获取YARN应用的日志(无需手动查找日志文件),适用于快速获取任务的执行日志;hadoop fs命令可用于查看HDFS中的日志文件(如hadoop fs -ls /var/log/hadoop/可列出HDFS中的日志目录)。grep -E 'No space left on device|GC overhead limit exceeded|Connection refused' *.log可快速定位磁盘空间或网络问题)。hdfs-site.xml中配置dfs.audit.logger参数),结合Apache Eagle等工具追踪用户的文件操作(如读、写、删除),分析分布式环境中的行为异常(如高频小文件读写导致的性能下降)。logrotate工具管理日志文件的轮转和归档,防止日志文件过大占用磁盘空间(如编辑/etc/logrotate.d/hadoop文件,添加daily(每日轮转)、rotate 7(保留7天)、compress(压缩旧日志)等参数)。log4j.properties文件修改日志级别,如log4j.logger.org.apache.hadoop.hdfs=WARN)。