hadoop 2.2.0 源码编译笔记
2013-10-27 16:02
429 查看
apache 官方发布的hadoop 2.2.0中只包含了32bit版本,多数生产环境中使用的是64bit的环境,需要64bit的hadoop2.2,则必须自己编译。本文记录在编译过程中遇到的一些问题和相应的解决办法。
查看系统版本:
Linux master 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
查看gcc版本:
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
查看CPU信息(我在笔记本的虚拟机里面编译的):
Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
2 cores
flags: *** sse4_1 sse4_2 ***
由于hadoop2使用maven管理,在编译过程中需要联网,所以请找一台可以连接外网的机器进行编译。
在编译hadoop 2.0.5-alpha中发现其不支持2.5.0, 所以建议使用2.4.1 :
注意,protobuf安装的时候,如果指定prefix,那么编译结果里面会包含这个位置,结果文件如果拷贝到别的位置,会无法执行。
maven的源码安装遇到了很多依赖,我直接下载bin解压使用了,过程中没有发现异常。如果有兴趣,可以自己编译安装,源代码地址如下:
http://mirrors.cnnic.cn/apache/maven/maven-3/3.1.1/source/apache-maven-3.1.1-src.tar.gz
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.0.5-alpha/hadoop-2.0.5-alpha-src.tar.gz
进入源代码目录
执行编译命令
编译成功之后,在hadoop-dist/target/目录下生成有hadoop-2.2.0-tar.gz文件,这个就是我们要的东东。
开始的时候,我在一台比较老的机器上编译,遇到了一个奇怪的错误,"no such instruction: `crc32***",报错的截图如下:
是一段汇编代码编译出错,经查crc系列指令属于SSE4_2指令集,需要支持该指令集的CPU,但是查看我的系统CPU支持该指令集(使用cat /proc/cpuinfo查看),截图如下:
最后发现是由于我的系统的GCC版本太低导致的问题,我的GCC版本是3.4.5,而SSE4_2指令集要求GCC4.3以上。
由于升级环境或牵连到其它的项目,最后我在另外一台装有CentOS6.4(64bit)的机器上执行编译,并且编译成功。
Could not transfer artifact org.apache.maven.plugins:maven-enforcer-plugin:pom:1.0 from/to central (http://repo.maven.apache.org/maven2): Connection to http://repo.maven.apache.org refused: Connection timed out
网络问题,重试吧
Connection to https://repository.apache.org refused: Connection timed out
按照后面的提示mvn <goals> -rf :** 重试即可
不能生成Makefile的问题
环境cache,重新解压src,重新编译
1. 系统环境
编译安装之前,请检查系统的环境。查看系统版本:
uname -a
Linux master 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
查看gcc版本:
gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
查看CPU信息(我在笔记本的虚拟机里面编译的):
cat /proc/cpuinfo | less
Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
2 cores
flags: *** sse4_1 sse4_2 ***
由于hadoop2使用maven管理,在编译过程中需要联网,所以请找一台可以连接外网的机器进行编译。
2. 编译准备
安装protobuf
http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz在编译hadoop 2.0.5-alpha中发现其不支持2.5.0, 所以建议使用2.4.1 :
注意,protobuf安装的时候,如果指定prefix,那么编译结果里面会包含这个位置,结果文件如果拷贝到别的位置,会无法执行。
./configure --prefix=/home/work/local/protobuf-2.4.1 make -j12 make install
安装cmake
http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz./configure --prefix=/home/work/local/cmake-2.8.12 make -j24 make install
安装maven
http://mirrors.cnnic.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gzmaven的源码安装遇到了很多依赖,我直接下载bin解压使用了,过程中没有发现异常。如果有兴趣,可以自己编译安装,源代码地址如下:
http://mirrors.cnnic.cn/apache/maven/maven-3/3.1.1/source/apache-maven-3.1.1-src.tar.gz
获取hadoop2.2.0源代码
由于spark0.8的依赖,我只能使用2.0.5-alpha版本,所以这里附上两个版本的地址http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.0.5-alpha/hadoop-2.0.5-alpha-src.tar.gz
3. 编译
解压hadoop 2.2.0的源代码tar xzvf hadoop-2.2.0-src.tar.gz
进入源代码目录
cd hadoop-2.2.0-src
执行编译命令
mvn package -Pdist,native,docs -DskipTests -Dtar
编译成功之后,在hadoop-dist/target/目录下生成有hadoop-2.2.0-tar.gz文件,这个就是我们要的东东。
4. 问题记录
1. no such instruction: `crc32***开始的时候,我在一台比较老的机器上编译,遇到了一个奇怪的错误,"no such instruction: `crc32***",报错的截图如下:
是一段汇编代码编译出错,经查crc系列指令属于SSE4_2指令集,需要支持该指令集的CPU,但是查看我的系统CPU支持该指令集(使用cat /proc/cpuinfo查看),截图如下:
最后发现是由于我的系统的GCC版本太低导致的问题,我的GCC版本是3.4.5,而SSE4_2指令集要求GCC4.3以上。
由于升级环境或牵连到其它的项目,最后我在另外一台装有CentOS6.4(64bit)的机器上执行编译,并且编译成功。
Could not transfer artifact org.apache.maven.plugins:maven-enforcer-plugin:pom:1.0 from/to central (http://repo.maven.apache.org/maven2): Connection to http://repo.maven.apache.org refused: Connection timed out
网络问题,重试吧
Connection to https://repository.apache.org refused: Connection timed out
按照后面的提示mvn <goals> -rf :** 重试即可
不能生成Makefile的问题
环境cache,重新解压src,重新编译
相关文章推荐
- 虚拟机增加新硬盘和vim显示行号
- 希尔排序(shell)
- 在fedora14装载的linux上,创建一个可运行的bash脚本文件
- 下载网站
- XP下硬盘安装fedora linux操作系统
- Hadoop 2.2.0 (YARN)搭建笔记
- RegOpenKeyEx返回值为5
- 十分重要的文档,property各种详解
- 在OpenCV中用指针访问像素值的一些体会
- 分享25个新鲜出炉的 Photoshop 高级教程
- linux内核组成
- openfire 绑定第三方账号 设置密码编码格式
- Hadoop作业提交多种方案 hadoop插件编译
- linux screen工具的使用
- Linux/Unix监控其他用户和信号
- Linux下目录和硬盘使用情况总结
- E:Could not open lock file /var/lib/dpkg/lock...
- 【linux高级环境编程学习笔记二】信号通信
- linux下fork()函数在行缓冲和全缓冲情况下对IO的影响
- Hadoop的探索历程