编译hadoop-2.6.0,安装所有native类库

本文详细记录了在CentOS6系统上编译hadoop-2.6.0的过程,包括安装JDK7、maven、autoconf、automake、gcc等依赖,解决GLIBC版本不匹配问题,以及编译hadoop源码,最终成功安装hadoop的native库。
摘要由CSDN通过智能技术生成

编译hadoop-2.6.0

首先,一开始的问题是在学习《hadoop权威指南》的时候学到了压缩这节,就去了解了一下压缩需要安装类库,hadoop-2.6.0/lib/native库里面有东西,hadoop checknative却显示里面全部都是false。查了资料才发现,这说明hadoop是未编译的。我这里用的是CentOS6系统。最好全程使用root用户来操作,省的遇到麻烦。步骤很长,但请耐心操作,否则容易编译失败。

如何知道你的native库是否已经编译过:

[root@master hadoop-2.6.0]# hadoop  checknative  
Native library checking:
hadoop: false 
zlib:   false 
snappy: false 
lz4:    false 
bzip2:  false

这就表示还没有编译。

为何native库不编译就报Unable to load native-hadoop library的信息:
具体报错为:

java.lang.UnstatisfiedLinkError:
 /usr/local/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0:/lib64/libc.so.6: version 'GLIBC 2.14' not found

意思是hadoop native的libhadoop.so.1.0.0需要编译的版本为GLIBC 2.14,而在本地linux上没找到

查看hadoop native的GLIBC支持的版本:

[root@master native]#  strings libhadoop.so.1.0.0 | grep GLIBC    
GLIBC_2.2.5
GLIBC_2.12
GLIBC_2.7
GLIBC_2.14
GLIBC_2.6
GLIBC_2.4
GLIBC_2.3.4

查看本地linux的GLIBC版本

[root@master 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

上面信息可见,在linux上没有GLIBC 2.14,因此报错,处理方式只能是将hadoop源码在本地linux上用本地c库来编译,这样在跑hadoop时就会用本地的c库。
参考了一大堆的文章和经历了一大堆的失败之后,终于把所有需要安装的东西都配齐,照着顺序一步一步走,是不会失败的了已经。

安装hadoop用的是hadoop-2.6.0.tar.gz,这是可以直接使用的版本,但并没有编译,想要编译的话,需要下载hadoop-2.6.0-src.tar.gz才能够安装。
下载完了之后,安装不是一帆风顺的,会报很多错误。在出错重来之前,先把准备工作做好。
1、jdk7
首先是先安装java1.7,这是因为有一些需要中途安装的插件会出现高版本的jdk无法安装的情况,更新插件又会出现低版本无法更新的情况,因此,先在环境变量中把原来的jdk的配置加上#号,如下:

vim /etc/profile
#export JAVA_HOME=.../jdk1.8.0_121
#export PATH=$PATH:$JAVA_HOME/bin

然后,再下载jdk1.7.0_80,下载完之后是jdk-7u80-linux-x64.tar.gz
先解压:tar -zxvf jdk-7u80-linux-x64.tar.gz 得到jdk1.7.0_80
然后再配置环境变量:

export JAVA_HOME=.../jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin

每次更改环境变量,都要记得刷新 source /etc/profile,每个用户都需要刷新。
这里会出现一个问题就是JDK版本切换不过来
使用

java -version

查看是否有转换过来,如果没有转换过来,可以手动给他转过来
方法就是:
先查看一下java和javac的位置

which java
which javac

这两句话分别显示的是java和javac的位置,刷新不过来很正常。记住出现了的两个地址,然后

rm 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值