分享

hadoop本地库与系统版本不一致引起的错误解决方法

xioaxu790 2014-6-8 09:28:55 发表于 总结型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 10154
问题导读:
1、hadoop本地库与系统版本不一的原因是什么?
2、Hadoop安装编译过程中需要注意哪些?




部署hadoop的集群环境为  
操作系统 centos 5.8   
hadoop版本为cloudera   hadoop-0.20.2-cdh3u3

集群中设置支持gzip lzo压缩后,在对压缩文件进行读取或者对输入文件压缩的时候要使用到hadoop的本地库,本地库的默认位置在以下:
  1. $HADOOP_HOME/lib/native/Linux-amd64-64   (64位操作系统)
  2. $HADOOP_HOME/lib/native/Linux-i386-32   (32位操作系统)
复制代码

文件夹中的libhadoop.so文件,就是hadoop的本地库。

如果本地库不存在,或者本地库与当前操作系统的版本不一致的时候,会报下面的错误:
  1. 11/09/20 17:29:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
复制代码

增加调试信息设置
  1. $ export HADOOP_ROOT_LOGGER=DEBUG,console
  2. $ hadoop fs -text /test/data/origz/access.log.gz
  3. 2012-04-24 15:55:43,269 WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  4. error libhadoop.so  /lib64/libc.so.6 required (libc 2.6)    /usr/local/hadoop/lib/native/Linux-amd64-64
复制代码

说明系统中的glibc的版本和libhadoop.so需要的版本不一致导致

查看系统的libc版本  
  1. # ll /lib64/libc.so.6
  2. lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.5.so
复制代码

系统中的版本为2.5

将系统中的glibc升级为2.9

下载glibc
  1. wget  http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2
复制代码

下载glibc-linuxthreads
  1. wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2
复制代码

解压
  1. $tar -jxvf glibc-2.9.tar.bz2
  2. $cd glibc-2.9
  3. $tar -jxvf ../glibc-linuxthreads-2.5.tar.bz2
  4. $cd ..
  5. $export CFLAGS="-g -O2"
  6. $./glibc-2.9/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
  7. $make
  8. #make install
复制代码


安装编译过程中需要注意三点:
1、要将glibc-linuxthreads解压到glibc目录下。
2、不能在glibc当前目录下运行configure。
3、加上优化开关,export CFLAGS="-g -O2",否则会出现错误

安装完后,可以查看ls -l /lib/libc.so.6已升级
  1. lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.9.so
复制代码

测试本地库是否升级
  1. $ export HADOOP_ROOT_LOGGER=DEBUG,console
  2. $ hadoop fs -text /test/data/origz/access.log.gz
  3. 12/04/25 08:54:47 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 6bb1b7f8b9044d8df9b4d2b6641db7658aab3cf8]
  4. 12/04/25 08:54:47 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
  5. 12/04/25 08:54:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library
  6. 12/04/25 08:54:47 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
  7. 12/04/25 08:54:47 DEBUG fs.FSInputChecker: DFSClient readChunk got seqno 0 offsetInBlock 0 lastPacketInBlock false packetLen 132100
复制代码

可以看到将glibc升级后不再报错,已经成功加载本地库



没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条