欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi

程序员文章站 2022-07-14 15:21:17
...

最近在虚拟机上安装hadoop。但是在启动的时候有一个警告。

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

暂时还不知道会有什么后果。但是看着就很不舒服。所以就先解决掉它,然后再配置其他的。
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
在网上找到了好几种解决方法,也都试了。下面一一列出来。

方法一

我是用这个方法解决的。
是因为依赖库的版本原因。
先查看一下静态依赖库:
先进入到hadoop安装目录下的 lib/native 下
使用 ldd libhadoop.so.1.0.0 命令查看依赖库
可以看到提示:version `GLIBC_2.14’ not found
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi

那我们接下来确认下glibc的系统库版本

进入到hadoop安装目录下的 sbin 目录下
使用 ldd --version 命令查看系统库版本
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
可以看到当前的版本是2.12,可以使用 strings /lib64/libc.so.6|grep GLIBC 命令确认下GLIBC所支持的版本
最大支持到2.12版本,而我们hadoop中的版本是2.14,可以确定基本是这个问题造成的;那接下来的解决办法就是更新系统的CLIBC版本。
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
可以在这里查看GLIBC的官方最新版本: http://ftp.gnu.org/gnu/libc/.
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
可以看到最新的版本已经是2.31了。
进入到我们的tar包存放目录下,从网站上下载2.17版本吧。
我本来想的是要用最新版本的,但是安装的时候,报错了。应该就是因为版本太高了的原因。
报错信息如下:

configure: error: 
*** These critical programs are missing or too old: as GNU ld make bison compiler python
*** Check the INSTALL file for required versions.

所以咱也老老实实跟网上的大神一样用2.17版本。只要比hadoop需要的2.14高就可以。

wget  http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 

Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
因为文件服务器不在国内,所以会有一点慢。
下载完成之后,解压
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
解压完成之后,进入到解压后的目录中。

[aaa@qq.com glibc-2.31]# mkdir build
[aaa@qq.com glibc-2.17]# cd build/
[aaa@qq.com build]#
[aaa@qq.com build]#../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
[aaa@qq.com build]#make && make install

我在编译过程中又遇到了一个错误。
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
错误主要是没有C编译器.,如果也有这个错误的先安装C编译器:
yum -y install gcc
安装完C编译器再去编译glibc
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi
编译完之后,版本已经到了,最大支持2.17了。
然后再启动hadoop。那个警告就不在了!!!
Hadoop启动警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... usi

方法二

如果方法一中你的依赖版本没有问题,可以试试这个方法。
针对ldd --version没有提示:version GLIBC_2.xxx not found的 解决方案是让它成功加载native-hadoop library。

在hadoop安装目录下的 etc/hadoop/hadoop-env.sh 文件后面添加下方配置:

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

方法三

网上也有说是因为hadoop跟Linux系统的版本不一样的。就是你Linux是32位的,但是你hadoop是64位的导致的。
这简直就是破罐子破摔法。
一般前两个方法是能解决的。真的解决不了。就试这个吧、
先看下自己操作系统的版本:

[aaa@qq.com native]# uname -r
2.6.32-696.30.1.el6.x86_64

我们再看下 libhadoop.so.1.0.0 库 的版本
这个在hadoop安装目录下的 lib/native 下执行

[aaa@qq.com 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, not stripped