1.hadoop项目日志输出级别node
首先了解log4j的基本知识,参考以前的博客。app
对于hadoop来讲,日志很繁杂。对于输出日志的级别,首先查看hadoop的日志文件log4j.propertiesoop
log4j.rootLogger=${hadoop.root.logger}, EventCounter的前一部分是hadoop.root.logger。因此咱们能够知道,对已咱们修改hadoop的配置文件,默认应该是修改hadoop.root.logger的值,EventCounter应该是默认hadoop会添加在后面。相似的道理,咱们修改任何的日志配置,都应该不会影响到系统自己的日志输出,由于它都会在log4j.rootLogger后面添加系统自己须要实现的日志实现。惟一影响的就是日志的输出级别了。包括咱们打包的mapreduce、spark项目都是这个道理,都不会影响到系统自己的日志输出,除了日志输出级别。因此咱们的log4j.rootLogger配置应该很简单,就是配置一下日志的输出级别和你本身须要实现的日志输出,若是都用默认的,则项目中log4j.rootLogger能够直接是空的。对于spark来讲,他自己是不会输出到console的,因此须要在加上log4j.rootCategory=DEBUG, console,而且在日志文件中加上console的相关配置,这样console才会输出全部的日志,默认是没有console的。对于日志的输出级别判断,使用log.isDebugEnabled()便可。spa
2.日志类别关系.net
hadoop日志有不少,大概分为服务日志和做业日志。服务日志就是hadoop各个基础服务的日志,如hdfs,resourcemanager,nodemanager,yarn等服务产生的日志;做业日志就是在yarn上运行的任务产生的日志,有jobhistory日志和Container日志,jobhistory日志就是应用程序运行的日志,如开始时间结束时间等,container就是真正的代码产生的日志。咱们部署的Map reduce jobhistory 服务,查看的日志就是jobhistory的日志,通常会有连接到container上。对于在yarn上运行的spark任务,spark的job history没有连接指向container的日志。map reduce job history只会收集mapReduce任务的日志,须要启动spark的job history,才能看到spark的任务日志。日志
对于上图的spark类型的任务,只有成功的History连接才会指向spark 的history server,kill掉的是不会指向spark的history server的。并且从这里点进去的spark类型任务,只会显示application master节点的信息,不会显示其余节点的container的信息。mapreduce任务则会显示全部节点的信息。server
3.hadoop日志存放路径详解blog
参考:Hadoop日志存放路径详解hadoop
4.动态设置hadoop日志级别部署
访问地址:http://namenode:50070/logLevel,便可动态设置日志级别,设置后立马生效。