hadoop start namenode deamon and datanode deamon failed

执行命令hadoop/sbin/start-dfs.sh失败,报错信息以下:java

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

image.png
查找缘由:
一、查看更详细的debug信息node

执行命令export HADOOP_ROOT_LOGGER=DEBUG,console,而后再执行命令hadoop/sbin/start-dfs.sh,发现version `GLIBC_2.14' not found:
Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /usr/local/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/hadoop/lib/native/libhadoop.so.1.0.0)

image.png

好了,如今发现问题了,是查找GLIBC_2.14这个东西找不到,那么接下来就来了解一下这是个什么东西,怎样才能让hadoop找到这个东西。

二、GLIBC是什么linux

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操做系统所提供的系统服务外,它自己也提供了许多其它一些必要功能服务的实现…

三、/lib64/libc.so.6是什么ubuntu

libc.so.6 是c运行时库 glibc的软连接,而系统几乎全部程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软连接找到glibc库。每一个glibc.so文件有它支持的libc版本,能够经过 strings /lib64/libc.so.6 |grep GLIBC查看,必定要选择这条命令列出的版本。若是程序编译的时候连接的libc库版本不在程序运行环境下的glibc库支持的libc版本以内,也会报错。因而,系统的全部命令 ls,cp,cd 等等都没法使用了。

四、查看系统的GLIBC版本api

执行命令strings /lib64/libc.so.6 |grep GLIBC
发现支持的最大版本是GLIBC_2.12,而hadoop错误信息里提到须要GLIBC_2.14

image.png

好了,如今咱们就想办法来添加GLIBC_2.14或更高版本,如今要考虑升级到哪一个版本呢?
查资料发现:对于CentOS这样的系统,为了追求稳定性每每各类库版本都很低,好比6.5(个人机器系统版本)自带的仍是glibc2.12, 而ubuntu 14.04带glibc2.19,若是升级基本C运行库到一个太新的版本,可能会影响CentOS的运行。因此我选择升级一个恰好够用的版本GLIBC_2.14,能解决问题就好,不找麻烦,嘻嘻。
如今就来解决实际的问题:
搭配这里找须要的版本http://ftp.gnu.org/gnu/glibc/

五、下载GLIBC_2.14包app

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

六、解压GLIBC_2.14包oop

tar -zxf glibc-2.14.tar.gz

七、编译ui

cd  glibc-2.14,创建临时目录 mkdir build
cd build 
执行../configure --prefix=/usr/local/glibc-2.14指定安装目录为/usr/local/glibc-2.14
执行make && make install安装
cp /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/ ,也就是把
编译好的so复制到/lib64下面

八、安装spa

重建软件,这一步最重要,操做不当,系统会直接没法使用
cd /lib64
删除旧的文件LD_PRELOAD=/lib64/libc-2.12.so rm libc.so.6
更新为新的文件 LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so libc.so.6
注:libc.so.6只是一个软连,删除后可能会致使ls等命令都没法正常使用。这时不要慌张,能够经过LD_PRELOAD环境变量来解决。

九、查看更新成功操作系统

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

image.png 十、再次执行./sbin/start-dfs.sh没有报错信息了

相关文章
相关标签/搜索