在搭建好hadoop环境调试编写第一个wordCount程序会出现一下常见的问题
问题 一
in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:558)
解决方法
1 下载hadoop对应版本的源码
2 在src目录下创建org.apache.hadoop.io.nativeio 即与源码中NativeIO.java 所在的包名一样即可
3 找到源码中的NativeIO.java 类 将其放在新建的org.apache.hadoop.io.nativeio 目录下
4 打开NativeIO.java 类找到557 行 将return access0(path, desiredAccess.accessRight()); 注释掉加上return true 即可。
这样处理之后控制台将无法看到返回的信息,不过程序可以正常执行。目前还没发现更好的解决方法。
问题 二
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解决方法
1 在系统中新建HADOOP_HOMA="E:\hadoop\hadoop-2.6.3"; 与新建java_home 环境变量一样 ,我的Hadoop 在window的安装路径是E:\hadoop\hadoop-2.6.3
2 在系统环境变量的Path中加入E:\hadoop\hadoop-2.6.3\bin 整个过程与安装jdk 类似。
3下载https://codeload.github.com/srccodes/hadoop-common-2.2.0-bin/zip/master下载hadoop-common-2.2.0-bin-master.zip
4解压hadoop-common-2.2.0-bin-master.zip 用其目录下的bin文件中的文件去替换自己(E:\hadoop\hadoop-2.6.3\bin) 下的文件注意hadoop.dll 有2.0以后的版本和2.0以前的版本区别。
问题三