1 问题
在启动dfs,start-dfs.sh和hdfs dfs -ls /等命令执行的时候,一直出现
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2 原因
增加调试信息设置
$ export HADOOP_ROOT_LOGGER=DEBUG,console
-------------------------------------------------------------------------------
关于HADOOP_ROOT_LOGGER的含义
修改$HADOOP_CONF_DIR/log4j.properties文件 hadoop.root.logger=ALL,console
or: (只对一次会话有效)
开启:export HADOOP_ROOT_LOGGER=DEBUG,console
关闭:export HADOOP_ROOT_LOGGER=INFO,console
-------------------------------------------------------------------------------
15/09/30 11:48:08 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
15/09/30 11:48:08 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0)
可以看到上述的信息,即缺少glibc_2.14,百度得到的信息为软件编译用的机器上的glibc版本比执行命令的linux机器上的glibc版本高
需要安装glibc_2.14或者更高版本
3 解决
去http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.gz
安装:在解压后的glibc源码目录建立构建目录build,并cd进入构建目录
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14 #计划安装到/opt对应目录下,不需事先创建
make -j4
make install
在make install的时候可能会报错,找不到一个文件ld.so.conf,用find命令找下,发现在/etc目录下,将它拷贝到/opt/glibc-2.14/etc/下
再次执行make install即可
安装完后,执行hdfs依然会出现警告
将libc.so.6拷贝到hadoop lib下:cp /opt/glibc-2.14/lib/libc.so.6 /opt/hadoop-2.7.1/lib/native/
执行hdfs不再出现警告将libc.so.6 拷贝到hadoop集群每个节点的lib下:scp libc.so.6 slave169:/opt/hadoop-2.7.1/lib/native/
不需要重启dfs,每个节点都不再报warn信息
参考资料:http://www.xuebuyuan.com/642177.html