哭了,这个问题困扰了我好几天,终于找到了解决的方法,谢谢博主!

因为在Linux的环境下运行代码不是特别方便,所以,文章介绍的是在Windows环境下运行hadoop程序,搭配的环境是hadoop2.7.2+Windows10+eclipse.

    一,搭建环境

    1.将编译后的hadoop.jar包解压到非中文路径

    2.Windows10环境下,可能需要在bin目录下添加文件

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    3.配置hadoop环境变量,配置HADOOP_HOME和path路径

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

环境搭建好以后就可以创建hadoop项目,但是在运行MapReduce项目的时候遇到报错.

Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

查了很久,说的是hadoop.dll和我当前的hadoop版本不匹配会导致这个问题.

需要将将源码中NativeIO.java中access方法返回值修改为true,然后将修改后的源码添加到工程中就可以.

hadoop2.7.2中NativeIO.java所在的路径为

hadoop-common-2.7.2-sources.jar\org\apache\hadoop\io\nativeio 

下图是源码中方法的返回值

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

将源代码里面access方法的返回值修改,改为true,

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

修改后将源码添加到工程中就可以运行了.

解决Windows环境下Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
--------------------- 
作者:a904364908 
来源:CSDN 
原文:https://blog.csdn.net/a904364908/article/details/81061074 
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章: