遇到的问题
在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版本
将下载的压缩包放置到某个目录中,例如/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