@[TOC](kettlet5.4提交MapReduce程序出现log4j:ERROR setFile(null,true) call failed.问题解决)
一、问题描述
当在kettle中设计好mapreduce程序后,运行提交程序到Hadoop集群,在kettle这边提升都是执行成功的,但是在Hadoop的yarn web页面(即访问hadoop001:8088端口)会看到程序一直处于RUNNING状态,查看日志后,发现如下的错误:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: /training/hadoop-2.7.3/logs/userlogs/application_1623326307589_0001/container_162000001 (Is a directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.hadoop.yarn.ContainerLogAppender.activateOptions(ContainerLogAppender.java:55)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:104)
at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:262)
at org.apache.commons.logging.impl.Log4JLogger.<init>(Log4JLogger.java:108)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(LogFactoryImpl.java:1025)
at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:844)
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:541)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:292)
at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:269)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:657)
at org.apache.hadoop.service.AbstractService.<clinit>(AbstractService.java:43)
二、问题产生原因
- 主要原因:虚拟机资源不足,导致配置文件相关属性参数值过低导致。
经过检查发现,这个错误是并不是因为权限问题,而是因为yarn配置文件中有些配置属性的参数值过低,导致其无法分配container,往往MapReduce程序在启动的时候会启动两个container,一个container用于启动MR Application Master,另外一个用于启动mapreduce。发生上述错误时的参数的yarn-site.xml(包含虚拟机中配置和kettle中配置)参数配置如下:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<valu

本文介绍在Kettle中提交MapReduce程序时遇到的日志错误log4j:ERRORsetFile(null,true)callfailed及解决方案。问题源于虚拟机资源不足导致配置文件参数过低,通过调整yarn配置解决了问题。

2606

被折叠的 条评论
为什么被折叠?



