问题1:在DFS Lcation 上不能对文件进行操作:
解决方法:
在hadoop上的每个节点上修改该文件 conf/mapred-site.xml,增加:
<property> <name>dfs.permissions</name> <value>false</value> </property>
关闭权限验证
问题2:控制台输出出现下面警告:
log4j:WARN No appenders could be foundfor logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4jsystem properly.
log4j:WARN Seehttp://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
解决方法:
在src文件夹下创建以log4j.properties命名的文件,文件内容如下:
log4j.rootLogger=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d%p [%c] - %m%n
问题3:java.io.IOException: Could not locateexecutable null/bin/winutils.exe in the Hadoop binaries.
解决方法:
在hadoop安装目录下的bin目录里缺少winutils.exe 下载一个添加进去就行,下载地址:hadoop.dll等插件,里面包括了2.4版本之前和之后的。
下载地址 http://download.csdn.net/detail/u010911997/8478049。
问题4:Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
解决方法:
这是由于hadoop.dll 版本问题,2.4之前的和自后的需要的不一样, 需要选择正确的版本并且在 Hadoop/bin和 C:windowssystem32 上将其替换。
问题5:
Exception in thread "main"java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
atorg.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)
目前未找到解决方法,只能修改源代码,下载hadoop安装文件对应版本的源代码src,比如我安装的hadoop-2.5.0-cdh5.3.0版本,那么下载hadoop-2.5.0-cdh5.3.0-src,解压缩之后,按照下面目录找到NativeIO.java类:
hadoop-2.5.0-cdh5.3.0-srchadoop-2.5.0-cdh5.3.0hadoop-common-projecthadoop-commonsrcmainjavaorgapachehadoopio ativeio
将源代码放入 工程的src目录下并创建同样的包名,然后修改源代码。
源代码未修改前:
publicstaticbooleanaccess(String path, AccessRight desiredAccess) throws IOException { return access0(path,desiredAccess.accessRight()); }
源代码修改后:
public staticbooleanaccess(String path, AccessRight desiredAccess) throws IOException { return ture; // return access0(path,desiredAccess.accessRight()); }
修改后编译成功,但是看不到软件运行时候的信息反馈。