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

错误截图如下:


有个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值