部署Hadoop的集群环境是
操作系统CentOS 5.8
hadoop版本为cloudera hadoop-0.20.2-cdh3u3
在群集上设置支持gzip lzo压缩的设置后,在读取压缩文件或压缩输入文件时用于hadoop本地库。 本地库的默认位置是
$ Hadoop _ home/lib/native/Linux-amd64-64 (64位操作系统) )。
$ Hadoop _ home/lib/native/Linux-i386-32 (32位操作系统) ) )。
文件夹中的libhadoop.so文件是hadoop的本地库。
如果本地库不存在,或者本地库与当前操作系统的版本不匹配,则会报告以下错误:
11/09/2017336029336049 warn util.nativecodeloader : unabletoloadnative-hadooplibraryforyourplatform…using builtin-hhh
增加调试信息的设定
$ export Hadoop _ root _ logger=debug,console
$ Hadoop fs-text/test/data/origz/access.log.gz
2012-04-241533605336043,269 warnorg.Apache.Hadoop.util.nativecodeloader : unabletoloadnative-Hadoop library
errorlibhadoop.so/lib 64/libc.so.6请求(libc 2.6 )/usr/local/Hadoop/lib/native/Linux-amd64-64
说明由于系统的glibc版本与libhadoop.so所需的版本不匹配
查看系统的libc版本
# ll /lib64/libc.so.6
lwxrwxrwx 1根根根11 apr 2416336049/lib 64/libc.so.6-libc-2.5.so
系统的版本是2.5
将系统的glibc升级到2.9
下载全球资讯网
wget http://FTP.GNU.org/GNU/glibc/glibc-2.9.tar.bz2
下载glibc-Linux教程
wget 3358 FTP.GNU.org/GNU/glibc/glibc-Linux threads-2.5.tar.bz2
解冻
$tar -jxvf glibc-2.9.tar.bz2
$cd glibc-2.9
$ tar-jxvf ./glibc-Linux threads-2.5.tar.bz2
$cd .
$export CFLAGS='-g -O2 '
$./glibc-2.7/configure-- prefix=/usr-- disable-profile-- enable-add-ons-- with-headers=/usr/Inc
$make
# make安装
编译时需要注意的有三点。
1、将glibc-linuxthreads解压缩到glibc目录。
2、无法在glibc当前目录中运行配置。
3、打开优化开关,如果不是导出cflags='-g-O2 ',就会出现错误
安装后,可以确认ls -l /lib/libc.so.6已升级
lwxrwxrwx 1根根根11 apr 2416336049/lib 64/libc.so.6-libc-2.9.so
测试本地库是否已升级
$ export Hadoop _ root _ logger=debug,console
$ Hadoop fs-text/test/data/origz/access.log.gz
12/04/2508336054336047 info lzo.lzo codec : successfullyloadedinitializednative-lzo library [ Hadoop-lzo rev 6b b1b7f8b ]
12/04/2508336054336047调试util.nativecodeloader : tryingtoloadthecustom-built native-Hadoop library .
12/04/2508336054336047 info util.nativecodeloader : loadedthenative-Hadoop library
12/04/2508336054336047 info zlib.zlib factory : successfullyloadedinitializednative-zlib library
12/04/2508336054336047 debugfs.fsinputchecker : dfsclientreadchunkgotseqno0offsetinblock0lastpacketinblockfalsepacketinacketink 0
升级glibc后,将不再报告错误,您可以看到本地库已成功加载