Hadoop:Hadoop本地库和系统库版本不一致
***********************************************************************************************
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
=======================================================================
安装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~~~
更多阅读
上网本如何装系统 联想s100装什么系统
上网本如何装系统——简介上网本装系统其实和其他笔记本没什么区别,由于没有光驱,少了一种最简单的装系统方法,这里介绍我用自带上网本装系统的心得,主要是使用U盘装系统,不过也可以买个外置光驱。外置光驱装系统就不介绍了,大家都懂,这里
城市设计:现代主义、传统、绿色和系统的观点
【中文书名】《城市设计:现代主义、传统、绿色和系统的观点》【原著名称】City Design:Modernist, Traditional, Green andSystems Perspectives【原著出版者】Routledge【原著作者】Jonathan Barnett【ISBN】978-7-121-24324-0
转:《侯卫东官场笔记》:一本现代版的“官场现形记”
《侯卫东官场笔记》:一本现代版的“官场现形记”文祝和平写题目时,我犯了下难,本想叫官场版的《士兵突击》,但我觉得这有抬举《士兵突击》的嫌疑。从我犯难的踪迹上,想必你已经知道了这本书讲的是什么内容。 没错,这是一本现代官场的
浙江省二本三本大学排名——浙江二本大学和浙江三本大学名单,均 浙江省二本分数线
浙江二本大学和浙江三本大学,均有待补充浙江二本大学:宁波大学浙江工业大学杭州电子科技大学浙江理工大学浙江中医药大学浙江师范大学
小儿难养系列:孩子在家里和在幼儿园表现不一致怎么办?
妈妈的困惑:我儿子今年四岁了,上幼儿园已经有一年了,每天我去接儿子放学的时候,老师都会在我面前夸儿子,说他是班里最听话的小朋友,除了上课认真外,课外活动的时候,还帮助老师,那时就像一小老师,接受能力和动手能力也很强,教了一次后,下次如果