位linux系统编译hadoop源码 native库

下面是自己编译hadoop源码, 然后将native库上传覆盖hadoop的过程
0 hadoop native库:
在hadoop压缩时 调用此库文件的jni(.so)来调用linux系统的功能, 一般我们的linux机器都是64位,而官网下载的hadoop安装文件都是32位编译的,因此如果不在你本机编译的话,想使用hadoop压缩功能受限。
 
0.1 如何知道你的native库是否已经编译过
  1. cd/opt/hadoop2.5.2/lib/native下,[root@hadoop3 native]# file libhadoop.so.1.0.0   看到这个文件是64位的,这里我编译成功后显示结果如下: libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
  2. 或者直接用  #hdfs dfs -ls /  执行任何一个hadoop命令,如果出现:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 则表示没有编译过
  3. 或者执行[root@hadoop3 native]# hadoop  checknative  Native library checking:
    hadoop: false 
    zlib:   false 
    snappy: false 
    lz4:    false 
    bzip2:  false   如果显示结果是这样的,也表示没有编译过
     
     
     
    0.2  为何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@hadoop3 native]#  strings libhadoop.so.1.0.0 | grep GLIBC    查看hadoop native库
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@hadoop3 native]# strings /lib64/libc.so.6 | grep GLIBC   查看 linux
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库。
 
1 下面是编译hadoop源码,顺带自带生成编译后的 native库,然后将编译好的native库上传替代你安装的hadoop
的lib/native库下东西即可, 最后我会贴出我的配置文件 /etc/profile的写法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值