日志是定位问题最重要的手段,Hadoop2中的日志主要有三类:系统日志;应用日志(Job);标准输出
系统日志
系统日志指各个组件打印的日志,如resourcemanager、namenode等,系统日志默认在${HADOOP_HOME}/logs目录下,格式为hadoop-username-service.log或者yarn-username-service.log,这个比较简单,很容易在找到,但是路径和日志级别都是可以修改的,可以在yarn-daemon.sh和hadoop-daemon.sh分别修改yarn和HDFS的日志路径和级别。
应用日志
应用日志指每个application打印的日志(例如一个MR任务),应用日志默认保存在${HADOOP_HOME}/logs/userlogs下,按照application_时间戳_应用ID创建目录保存,该目录下保存了每个container的日志,包括AM和Task的日志
标准输出
在编写应用时(例如MR),经常会用到标准输出(System.out.print())或者异常输出,帮助我们定位问题,而这类输出则保存在每个container的标准输出中,具体路径在${HADOOP_HOME}/logs/userlogs/application_时间戳_应用ID/container_时间戳_应用ID_TaskID_TaskAttemptID/下的stdout(标准输出)或者stderr(标准错误输出)