转自:https://blog.csdn.net/wyxeainn/article/details/81413544

最近实习了,公司做大数据的,要学hadoop,在公司自己把什么都弄好了,因为回来了想自学,

所以想自己虚拟机搭个伪分布式环境,然后自学用,一切都准备好后,eclipse下也已经安装了

hadoop的插件,wordCount也写好了,运行的时候就报了

org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V

错误,这都是上周末的事情了,然后我嫌烦没有解决,反正当时也不急用,这周继续解决问题,

耗了好久好久时间。

我的环境是

Win10 + hadoop2.7.3 + jdk1.8。

本来在公司使用eclipse写mapreduce程序的时候已经遇到这个问题,当时的确也通过把hadoop.dll

和winutils放到hadoop的bin目录下。然后问题解决了,但是在自己电脑上依然这样做,什么方法都

试了都不行。

 

hadoop.dll 和 winutils 以及 修改了NativeIO.java (网上常见的方法)全试了,依旧提示这个错误。

 

解决方案:

1.首先把对应版本的hadoop.dll 和 winutils放到hadoop安装目录的bin目录下。

因为后来版本的hadoop的确缺少了这两个文件。

2.环境变量的配置,这个不多说。

3.比如我写了一个wordcount,运行时一直报这个错误,把下面代码放到wordcount的驱动程序中。

static {
    try {
        System.load("D:/Hadoop/hadoop-2.7.3/bin/hadoop.dll");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load.\n" + e);
      System.exit(1);
    }
}
意思就是让其强制加载bin目录下的hadoop.dll。然后运行程序问题就解决了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐