重温战场 发表于 2018-10-31 09:27:03

hadoop里需要的libhadoop.so版本不一致导致问题及解决办法

  $HADOOP_HOME/lib/native/Linux-amd64-64   (64位操作系统)
  $HADOOP_HOME/lib/native/Linux-i386-32   (32位操作系统)
  文件夹中的libhadoop.so文件,就是hadoop的本地。
  问题如下
  如果本地库不存在,或者本地库与当前操作系统的版本不一致的时候,会报下面的错误:

  WARN org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java>  error libhadoop.so/lib64/libc.so.6 required (libc 2.6)    /usr/local/hadoop/lib/native/Linux-amd64-64
  说明系统中的glibc的版本和libhadoop.so需要的版本不一致导致
  解决办法如下
  1、增加调试信息设置
  $ export HADOOP_ROOT_LOGGER=DEBUG,console
  2、查看系统的libc版本
  # ll /lib64/libc.so.6
  lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.5.so
  系统中的版本为2.5
  3、将系统中的glibc升级为2.9
  下载glibc
  wgethttp://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2
  下载glibc-linuxthreads
  wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.5.tar.bz2
  解压
  $tar -jxvf glibc-2.9.tar.bz2
  $cd glibc-2.9
  $tar -jxvf ../glibc-linuxthreads-2.5.tar.bz2
  $cd ..
  $export CFLAGS="-g -O2"
  $./glibc-2.7/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
  $make
  #make install
  安装编译过程中需要注意三点:
  1、要将glibc-linuxthreads解压到glibc目录下。
  2、不能在glibc当前目录下运行configure。
  3、加上优化开关,export CFLAGS="-g -O2",否则会出现错误
  安装完后,可以查看ls -l /lib/libc.so.6已升级
  lrwxrwxrwx 1 root root 11 Apr 24 16:49 /lib64/libc.so.6 -> libc-2.9.so
  4、测试本地库是否升级
  $ export HADOOP_ROOT_LOGGER=DEBUG,console
  可以看到将glibc升级后不再报错,已经成功加载本地库

页: [1]
查看完整版本: hadoop里需要的libhadoop.so版本不一致导致问题及解决办法