解决 Unable to load native-hadoop library for your platform

安装hadoop启动之后或者在启动spark-shell的时候总有警告:

Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

遇到这种情况,原因一般是

Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的版本。

1、首先找到对应自己hadoop版本的64位的lib包,可以自己手动去编译,但比较麻烦,也可以去网上找,好多都有已经编译好了的。

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

3、将准备好的64位的lib包解压到已经安装好的hadoop安装目录的lib/native 和 lib目录下:

  1. [hadoop@hadoopTest ~]$ tar -xvf hadoop-native-64-2.7.0.tar -C hadoop-2.7.2/lib/native  
[java]  view plain  copy
  1. [hadoop@hadoopTest ~]$ tar -xvf hadoop-native-64-2.7.0.tar -C hadoop-2.7.2/lib  
4、 然后增加环境变量:

[java]  view plain  copy
  1. [hadoop@hadoopTest hadoop-2.7.2]$ vi /etc/profile  

5、增加下面的内容:

[java]  view plain  copy
  1. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  
  2. export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"  
6、让环境变量生效
[java]  view plain  copy
  1. [hadoop@hadoopTest hadoop-2.7.2]$ source /etc/profile  
7、如果仍然报错,用命令  
file libhadoop.so.1.0.0  看看结果是否如下

[hadoop@dxer native]$ file libhadoop.so. 1.0. 0 libhadoop.so. 1.0. 0: ELF 64-bit LSB shared object, x86- 64, version 1 (SYSV), dynamically linked, BuildID[sha1]=b3b5e812c2a91fa4b28aa33eb76dc6889d3b91e9, not stripped

8、接着最重要的一步是:

vi ~/.bashrc

配置如下

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_HOME=/home/hadoop/hadoop-2.6.4
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

使配置生效:source ~/.bashrc

你现在可以再试试,应该不会有错了。



部分内容来源于下面两个链接
链接:https://blog.csdn.net/jack85986370/article/details/51902871
链接:https://www.jianshu.com/p/f25a0caafcc6



版权声明:本文为feixiashenxian原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。