apache 官方发布的hadoop 2.2.0中只包含了32bit版本,多数生产环境中使用的是64bit的环境,需要64bit的hadoop2.2,则必须自己编译。本文记录在编译过程中遇到的一些问题和相应的解决办法。
1. 系统环境
编译安装之前,请检查系统的环境。开始的时候,我在一台比较老的机器上编译,遇到了一个奇怪的错误,"no such instruction: `crc32***",报错的截图如下:
是一段汇编代码编译出错,经查crc系列指令属于SSE4_2指令集,需要支持该指令集的CPU,但是查看我的系统CPU支持该指令集(使用cat /proc/cpuinfo查看),截图如下:
最后发现是由于我的系统的GCC版本太低导致的问题,我的GCC版本是3.4.5,而SSE4_2指令集要求GCC4.3以上。
由于升级环境或牵连到其它的项目,最后我在另外一台装有CentOS6.4(64bit)的机器上执行编译,并且编译成功。
查看系统版本:
Linux ** 2.6.32_1-7-0-0 #1 SMP *** x86_64 x86_64 x86_64 GNU/Linux查看gcc版本:
gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2)
我们的编译器版本非常的低
查看CPU信息:
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz12 cores
flags: *** sse4_1 sse4_2 ***
2. 编译准备
安装protobuf:
安装cmake:
安装maven:
3. 编译
解压hadoop 2.2.0的源代码
进入源代码目录
执行编译命令