hadoop启动报错处理

 

1.      hadoop启动报错

1.1.    问题1

util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

主要是依赖包 版本 过低的问题。

首先要定位问题,出现该问题的原因主要是hadoop native下面的hadoop静态库的问题:

libhadoop.so.1.0.0

 

原因一:

网上有很多说法是版本 默认 64位 而 系统是  32位,验证一下:

先看下系统版本:

uname -r

再看下  libhadoop.so.1.0.0 库 的版本

file  libhadoop.so.1.0.0

[root@master native]# file libhadoop.so.1.0.0

libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

可以看到并不是版本的问题。

 

 

原因二 :

其实是依赖库的问题

对静态库查看下依赖:看下依赖是否都正常:

ldd libhadoop.so.1.0.0

./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)

        linux-vdso.so.1 =>  (0x00007fff369ff000)

        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3caa7ea000)

        libc.so.6 => /lib64/libc.so.6 (0x00007f3caa455000)

        /lib64/ld-linux-x86-64.so.2 (0x00007f3caac1b000)

 

可以看到是glibc 版本的问题:

 

GLIBC_2.14找不到,现在检查系统的glibc库,  ldd --version  即可检查。

输入命令:

ldd --version

 

ldd (GNU libc) 2.12

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

还可以直接确认下glibc 目前支持的版本:

通过如下查询方法:

strings /lib64/libc.so.6|grep GLIBC

[root@soft native]# strings /lib64/libc.so.6|grep GLIBC

GLIBC_2.2.5

GLIBC_2.2.6

GLIBC_2.3

GLIBC_2.3.2

GLIBC_2.3.3

GLIBC_2.3.4

GLIBC_2.4

GLIBC_2.5

GLIBC_2.6

GLIBC_2.7

GLIBC_2.8

GLIBC_2.9

GLIBC_2.10

GLIBC_2.11

GLIBC_2.12

GLIBC_PRIVATE

[root@soft native]#

 

可以看到目前只支持到 2.12 

那么现在需要升级 glibc 库就行了。

 

1.2.    升级glibc

Glibc 升级采用源码编译安装的方法:

wget  http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 

 

tar -xf glibc-2.17.tar.gz

cd glibc-2.17

mkdir build; cd build

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make -j 8

make  install

strings /lib64/libc.so.6 | grep GLIBC

这时已经有了2.17

重启start-dfs.sh,报错继续。

 

原因三 :

环境配置的问题:

在hadoop-env.sh中,添加下面配置:

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export  HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

 

在修改完成后需要重新执行

hadoop namenode –format

然后再启动。

 

你可能感兴趣的