hadoop WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usin

来源:互联网 发布:网络主播协议 编辑:程序博客网 时间:2024/05/16 10:01

错误截图如下:


有个WARN提示hadoop不能加载本地库,网上搜了下,这个问题基本上是由于在apache hadoop官网上下载的hadoopXXX.bin.tar.gz实在32位的机器上编译的(蛋疼吧),我集群使用的64bit的,加载.so文件时出错,当然基本上不影响使用hadoop(如果你使用mahout做一些机器学习的任务时有可能会遇到麻烦,加载不成功,任务直接退出,所以还是有必要解决掉这个warn的)。

但是每次运行一个命令多有这么个WARN很不爽,想干掉也很简单:

1. 下载hadoop对应版本源码2. 在集群的某台机器上编译3. 替换之前的$HADOOP_HOME/lib/native为新编译的native

编译源码还是挺复杂的

简单的做法是找到编译好后的

hadoop-2.4.1-src/hadoop-dist/target/hadoop-2.4.1.tar.gz


注意:可以去网站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/  下载对应的编译版本

另外我这还有编译好的2.6.5版本的,可以在这下载  http://pan.baidu.com/s/1bpxic2b


用这里面的lib替换掉原来的hadoop中的lib


并修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh

在最后加上:

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"


换掉lib库,在hadoop-env.sh中增加配置文件后,在linux中输入HDFS shell时错误解决


但是用eclipse代码实现HDFS中的文件的上传与下载等操作时仍会报错


解决方法如下:

1  下载hadoop到本地,解压到D:\hadoop\hadoop-2.6.5  ,发现bin目录下没有winutils.exe文件

2 去github上 https://github.com/srccodes/hadoop-common-2.2.0-bin 下载bin文件,并将里面的winutils.exe拷贝到D:\hadoop\hadoop-2.6.5\bin目录下

3 在每一个需要对hdfs操作的中加入如下代码块

static {System.setProperty("hadoop.home.dir", "D:\\hadoop\\hadoop-2.6.5");}

错误解决!!!


0 0
原创粉丝点击