1. 问题描述
发现hadoop集群,经常出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform这个错误,
所以在hadoop安装目录下,执行 hadoop checknative -a
发现结果是(都是false):
Native library checking:
hadoop: false
zlib: false
snappy: false
lz4: false
bzip2: false
openssl: false
而且会导致 创建hbase表的时候,不支持snappy压缩,也就是创建表的语句写成这样:create 'tableName11', {NAME => 'cf', VERSIONS => 1, COMPRESSION=> 'SNAPPY', TTL => '15768000'},会失败。
2. 正确的应该是:
所以在hadoop安装目录下,执行 hadoop checknative -a ,正确的结果应该如下:
Native library checking:
hadoop: true /data/hadoop/app/hadoop-2.8.2/lib/libhadoop.so
zlib: true /lib64/libz.so.1
snappy: true /usr/lib64/libsnappy.so.1
lz4: true revision:10301
bzip2: true /lib64/libbz2.so.1
openssl: true /usr/lib64/libcrypto.so
也就是各种都是true
3. 解决办法:
步骤一: cp /hadoop的目录/hadoop-2.8.2/lib/native/* /hadoop的目录/hadoop-2.8.2/lib/
步骤二:安装glibc2.14
(可以配置 提示更多的报错内容,在 cd /etc ,然后执行 vim profile
增加一句hadoop的配置:export HADOOP_ROOT_LOGGER=DEBUG,console ,这样执行语句的时候,提示信息会更全。
然后再次执行 hadoop checknative -a,看到提示信息是 说没有安装2.14版本。)
(1)下载glibc-2.14.1-6.x86_64.rpm的七个文件,按照
https://blog.csdn.net/lxlmycsdnfree/article/details/80695593 这个帖子提到的步骤,执行,就没问题了。
(2)还有一种方法,有坑,得注意! 就是下载压缩包,直接安装,如果reboot,会出现Linux内核挂掉,再也连不上linux服务器,只能重装电脑。
以下这种办法,就是 会导致 Linux 内核崩掉的方法,之所以写这么详细,是因为之前按照以下步骤操作过,reboot后机器就挂了:
到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.gz
上传到linux的 /opt 目录下,然后执行
tar glibc-2.14.tar.gz
cd /opt/glibc-2.14
mkdir build
cd ./build
../configure --prefix=/usr/local/glibc-2.14
make -j4
make install
ln -sf /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
(如果出现ln: creating symbolic link `/lib64/libc.so.6': File exists表示没有链接成功,加入f强制执行)
通过ls -l /lib64/libc.so.6查询当前链接版本