遇到的问题

在centos6.8上,安装完hadoop后,启动dfs时,报错WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...

经过查阅资料后,发现可能有两种原因,一是下载的hadoop是32位版本,libhadoop.so.1.0.0文件时32位的,却运行在64为机器上。可是经过查看后,file lib/native/libhadoop.so.1.0.0,libhadoop.so.1.0.0该文件是64位的,系统也是64位的。显然不是这个原因。

原因二:系统预装的glibc库是2.12版本,而hadoop期望是2.14版本。用ldd命令查看libhadoop.so.1.0.0文件的依赖库,果然发现找不到glibc2.14。

strings /lib64/libc.so.6|grep GLIBC

ldd --version查看系统预装的glibc库

那么现在解决办法就是升级glibc库到2.14。

安装glibc-2.14

到下载地址下载glibc-2.14版本

可以选择glibc-2.14.tar.gz

将下载的压缩包放置到某个目录中,例如/home/目录 开始执行下列shell命令

[root@xxx home]# tar -xzvf glibc-2.14.tar.gz    //解压压缩包[root@xxx home]# cd glibc-2.14    //进入解压后的文件目录[root@xxx glibc-2.14]# mkdir build    //创建build文件夹[root@xxx glibc-2.14]# cd build     //进入build文件夹[root@xxx build]# ../configure --prefix=/opt/glibc-2.14    // 配置glibc并设置当前glibc-2.14安装目录位/opt/glibc-2.14(安装目录可以自己选择),记住这个安装目录,后面操作需要用到[root@xxx build]# make -j4     //开启编译加速  4个进程[root@xxx build]# make install     //开始安装

接下来等待安装完成

glibc软链

安装完成后, 建立软链指向glibc-2.14, 执行如下命令:

$ rm -rf /lib64/libc.so.6           // 先删除先前的libc.so.6软链$ ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6   //建立新的软连接

注意

删除libc.so.6之后可能导致系统命令不可用的情况, 可使用如下方法创建2.14的链接

$ LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so  ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

如果上述更新失败可使用如下命令还原到2.12版本

$ LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

此时再通过命令查看glibc可以看到底部有新安装的GLIBC_2.14