1、阅读编译文档
1、 准备一个 hadoop 源码包,我选择的 hadoop 版本是:hadoop-2.6.5-src.tar.gz,在 hadoop-2.6.5 的源码包的根目录下有一个文档叫做 BUILDING.txt,这其中说明了编译 hadoop 所需要的一些编译环境相关的东西。不同的 hadoop 版本的要求都不一样。对应 的版本参照 BUILDING.txt
请仔细阅读:
Requirements:
* Unix System
* JDK 1.6+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
* Zlib devel (if compiling native code)
* openssl devel ( if compiling native hadoop-pipes )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
2、 对应以上需求,我们准备好所要求版本的这些软件
1、 准备一台 Unix 类型操作系统,在这里我们选用的是 CentOS-6.7,初次编译要求必须联网,切记
以下这些东西都是需要的,详细安装在下面,这里只介绍我准备这些软件所选择的版本
2、 安装 openssl-devel
3、 安装 gcc
4、 安装 gcc-c++
5、 JDK:jdk-7u80-linux-x64.tar.gz
6、 Maven:apache-maven-3.3.3-bin.tar.gz
7、 Ant:apache-ant-1.9.4-bin.tar.gz
8、 FindBugs:findbugs-3.0.0.tar.gz
9、 Cmake:cmake-2.8.12.2.tar.gz
10、Protobuf:protobuf-2.5.0.tar.gz
11、Snappy:snappy-1.1.1.tar.gz
2、准备编译环境
安装以下软件:
yum -y install svn
yum -y install autoconf automake libtool cmake
yum -y install ncurses-devel
yum -y install openssl-devel
3、安装 gcc
先使用命令检测一下看 gcc 是否已经安装过了
[root@compile_hadoop soft]# gcc -v
gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
如果最后一行出现如上的 gcc 版本信息日志,表示已经安装成功过了。
不然使用命令安装:
yum install gcc
4、安装 gcc-c++
直接使用命令安装:yum install gcc-c++
5、安装 make
6、安装 maven(必须)
7、安装 jdk(必须)
8、安装 ant(重要)
9、安装 findbugs(可选,最好装)
10、安装 cmake(重要)
11、安装 protobuf(重要)
12、安装 Snappy
13、编译 hadoop
1、 解压 hadoop 源码包
tar -zxvf /root/soft/hadoop-2.6.5-src.tar.gz -C /root/apps/
2、 在编译之前防止 java.lang.OutOfMemoryError: Java heap space 堆栈问题,在 centos 系统中
执行命令:export MAVEN_OPTS="-Xms256m -Xmx512m"
3、 进入到源码包根目录下
cd /root/apps/hadoop-2.6.5-src
4、 执行命令编译
Create binary distribution with native code and with documentation:
mvn package -Pdist,native,docs -DskipTests –Dtar
如果中途编译失败,并且不要文档的话,请使用这个命令:
mvn clean package -Pdist,native -DskipTests -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy -Drequire.openssl
PS:tar 和 dist 表示用 maven 项目管理工具对 hadoop 进行编译,编译好了之后会打成 tar.gz 包放到 hadoop-dist 目录下,native 和 docs 表示编译出来会编译出来本地库,并且把文档打 包到该.tar.gz 文件中,skipTests 表示忽略测试
5、 静静等待编译……. 第一次编译预估一个小时左右。
6、 编译成功了的话,最后的日志信息: