当前位置:   article > 正文

hadoop WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usin_2023-09-25 10:24:47,388 warn [org.apache.hadoop.ut

2023-09-25 10:24:47,388 warn [org.apache.hadoop.util.nativecodeloader] - una

错误截图如下:


有个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操作的中加入如下代码块

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

错误解决!!!


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/851334
推荐阅读
相关标签
  

闽ICP备14008679号