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