Hadoop:Hadoop本地库和系统库版本不一致

这个问题是针对于hadoop版本是2.2.0。上面这个报错是在启动HDFS出现的,完整的信息如下:

***********************************************************************************************
Hadoop本地库
Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(NativeLibraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。
Hadoop本地库在hadoop文件夹下lib/native中,内容如下:

其中的libhadoop.so就是had oop的本地库。如果本地库不存在或者和当前操作系统版本不一致时,就会出现上面的报错。
***********************************************************************************************
错误定位
下面的测试方法来自于:http://www.linuxidc.com/Linux/2012-04/59200.htm。运行两个命令,如下:

截取主要的错误信息如下:
Failed to load native-hadoop with error:java.lang.UnsatisfiedLinkError:/home/chenhuan/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0:/lib/tls/i686/cmov/libc.so.6: version`GLIBC_2.12' not found (required by/home/chenhuan/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0)
-------------------------------------------------------------------
关键在于这句:/lib/tls/i686/cmov/libc.so.6:version 'GLIBC_2.12'notfound
看样子确实是因为libc的版本不对,需要的版本应该是2.12。可以使用下面的命令来查看libc的版本:

这里实际的版本是2.11.1。
------------------------------------------------------------------
所以解决问题的办法是将系统的libc版本升级到2.12.1。
***********************************************************************************************
升级libc
从下面的地址下载两个文件:http://ftp.gnu.org/gnu/glibc/
(1)glibc-2.12.1.tar.gz
(2)glibc-linuxthreads-2.5.tar.bz2
=======================================================================
Hadoop:Hadoop本地库和系统库版本不一致
安装libc-2.12.1
-----------------------------------------------------------
(1)建立一个文件夹,将glibc-2.12.1.tar.gz解压入其中;

-----------------------------------------------------------
(2)将glibc-linuxthreads-2.5.tar.bz2解压到glibc-2.9中

-----------------------------------------------------------
(3)configure
注意,这里需要退出glibc-2.12.1文件夹,在外层文件夹调用configure命令。下面的两个命令非常重要,直接决定是否可以成功:
$export CFLAGS="-O2 -U_FORTIFY_SOURCE-fno-stack-protector"
$./glibc-2.12.1/configure --prefix=/usr --disable-profile--enable-add-ons --with-headers=/usr/include--with-binutils=/usr/bin

----------------------------------------------------------
(4)make
直接在外层文件夹调用make就可以了,如果上面的CFLAGS设置不对,这里会出现如下的一个error:
../misc/syslog.c:In function ‘__vsyslog_chk’:
../misc/syslog.c:123: sorry, unimplemented: inlining failed in callto ‘syslog’: function body not available
../misc/syslog.c:155: sorry, unimplemented: called from here
make[2]: *** [/mnt/adm/sources/glibc-build/misc/syslog.o] Error1
make[2]: Leaving directory `/mnt/adm/sources/glibc-src/misc'
make[1]: *** [misc/subdir_lib] Error 2
make[1]: Leaving directory `/mnt/adm/sources/glibc-src'
make: *** [all] Error 2 #make install
更加详细的内容可以参考这篇文章:http://swiss.ubuntuforums.org/showthread.php?p=7624127
---------------------------------------------------------
(5)sudo make install
如果make没有问题,这里一般不会出现问题,至此安装完成。
*********************************************************************************************
现在可以再来查看libc的版本,如下:

但是在/lib/tls/i686/cmov/libc.so.6中的结果还是libc.2.12.1.so

既然libc-2.12.1.so已经存在了,再创建一个libc.so.6的符号链接就可以了~~~

PS:折腾了一下午终于搞定了,明天开始做答辩PPT~~~

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/248082.html

更多阅读

上网本如何装系统 联想s100装什么系统

上网本如何装系统——简介上网本装系统其实和其他笔记本没什么区别,由于没有光驱,少了一种最简单的装系统方法,这里介绍我用自带上网本装系统的心得,主要是使用U盘装系统,不过也可以买个外置光驱。外置光驱装系统就不介绍了,大家都懂,这里

城市设计:现代主义、传统、绿色和系统的观点

【中文书名】《城市设计:现代主义、传统、绿色和系统的观点》【原著名称】City Design:Modernist, Traditional, Green andSystems Perspectives【原著出版者】Routledge【原著作者】Jonathan Barnett【ISBN】978-7-121-24324-0

转:《侯卫东官场笔记》:一本现代版的“官场现形记”

《侯卫东官场笔记》:一本现代版的“官场现形记”文祝和平写题目时,我犯了下难,本想叫官场版的《士兵突击》,但我觉得这有抬举《士兵突击》的嫌疑。从我犯难的踪迹上,想必你已经知道了这本书讲的是什么内容。  没错,这是一本现代官场的

小儿难养系列:孩子在家里和在幼儿园表现不一致怎么办?

妈妈的困惑:我儿子今年四岁了,上幼儿园已经有一年了,每天我去接儿子放学的时候,老师都会在我面前夸儿子,说他是班里最听话的小朋友,除了上课认真外,课外活动的时候,还帮助老师,那时就像一小老师,接受能力和动手能力也很强,教了一次后,下次如果

声明:《Hadoop:Hadoop本地库和系统库版本不一致》为网友海拔太高太耀眼分享!如侵犯到您的合法权益请联系我们删除