我不清楚如何在作业级别配置hadoopmapreducelog4j。有人能帮我回答这些问题吗。
1) 如何从客户机添加对log4j日志记录的支持。i、 我想在客户机上使用log4j属性文件,因此不想干扰集群中的hadoop log4j设置。我认为在project/jar中有属性文件就足够了,而hadoop的分布式缓存应该可以完成其余的工作。
2) 如何将消息记录到$hadoop\u home/logs/userlogs/job\u/dir中的自定义文件。
3) map reduce任务会同时使用log4j属性文件吗?客户端作业提供的一个和hadoop集群中的一个?如果是,那么log4j.rootlogger将添加这两个属性值?
谢谢srivatsan nallazhagappan
2条答案
按热度按时间prdp8dxp1#
您可以直接在代码中配置log4j。例如你可以打电话
PropertyConfigurator.configure(properties);
e、 g.在mapper/reducer设置方法中。这是存储在hdfs上的属性的示例:
其中fs是文件系统对象,log4jpropertiespath是hdfs上的路径。
使用此功能,您还可以将日志输出到具有作业id的目录。例如,您可以在调用propertyconfigurator.configure(properties)之前修改我们的属性;
y0u0uwnf2#
在每个作业级别上没有直接的方法重写log4j属性。
MapReduce作业本身不在hadoop中存储日志,而是在本地文件系统中写入日志(
${hadoop.log.dir}/userlogs
)数据节点的。有一个单独的过程从Yarn所谓的日志聚合,收集这些日志和组合。使用
yarn logs --applicationId <appId>
要获取完整日志,请使用unix命令解析和提取所需的日志部分。