DEBUG [main]Configuration.<init>(211) | java.io.IOException: config()
atorg.apache.hadoop.conf.Configuration.<init>(Configuration.java:211)
atcom.netqin.hdfs.MyHdfs.isExists(MyHdfs.java:20)
atcom.netqin.hdfs.MyHdfs.main(MyHdfs.java:41)
在客户端使用API访问HDFS的时候保了一个这样的错误。
通过定位代码:
/** A new configurationwhere the behavior of reading from the default
* resources can be turnedoff.
*
* If the parameter {@codeloadDefaults} is false, the new instance
* will not load resourcesfrom the default files.
* @param loadDefaultsspecifies whether to load from the default files
*/
public Configuration(booleanloadDefaults) {
this.loadDefaults =loadDefaults;
if(LOG.isDebugEnabled()) {
LOG.debug(StringUtils.stringifyException(newIOException("config()")));
}
synchronized(Configuration.class) {
REGISTRY.put(this, null);
}
}
原来是标红的这一行抛出的错误,原因就是HDFS不允许在log4j中使用DEBUG输出日志。如果有则抛出了错误,不过这个错误太不明显了,让人搞得莫名其妙。
解决办法:
把Log4j文件
# 本文件为日志显示控制文件
log4j.rootCategory=DEBUG,stdout,file
改为
log4j.rootCategory=ERROR,stdout,file