顿搜
Hadoop编译——Linux Ubuntu 14.04 手动编译Hadoop 2.7.1源码
本教程以Ubuntu14.04作为系统环境,手动编译Hadoop 2.7.1源码。官网提供的编译好的二进制文件是基于32位操作系统的,如果使用64位操作系统,请手动编译源码。下面主要讲解如何在Ubuntu 14.04中安装所需组件和如何编译Hadoop 2.7.1 的源码。由于软件版本的关系,并不总是一帆风顺,但问题往往都是由于软件之间版本不兼容或者安装不正确造成的。
如果不愿意自己动手编译,或者编译过程出错无法解决,下面我提供自己编译好的文件供大家下载。
下载 hadoop-2.7.1.tar.gz 提取码:kit3
备注:编译使用JAVA 1.8.0_66,GCC/G++ 4.8.4(Ubuntu 4.8.4-2ubuntu1~14.04)
一、下载Hadoop 2.7.1
1、方式一 浏览器下载
进入官网下载Hadoop2.7.1 ,然后下拉找到Download,点击进去。
然后选择最新版,下载源码。因为目前提供的编译好的二进制文件是基于32位操作系统的,如果你使用的是64位操作系统,请下载源码自己编译。如果是32位系统,愿意折腾的也可以下载后自己编译。
1、方式二 WGET下载
执行以下命令下载Hadoop2.7.1源码
wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz二、安装必备组件
以下是Apache官网给出的所需组件列表:
- Unix System<
- JDK 1.7+<
- 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 and to get the best HDFS encryption performance )<
- Jansson C XML parsing library ( if compiling libwebhdfs )<
- Linux FUSE (Filesystem in Userspace) version 2.6 or above ( if compiling fuse_dfs )<
- Internet connection for first build (to fetch all Maven and Hadoop dependencies)<
1、安装JDK
因为Hadoop本身就是JAVA编写的,所以需要JVM,依次执行如下命令即可。
apt-get purge openjdk*
apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer //将8改为7可安装JDK7输入java -version检测,如果出现以下内容,表示安装成功。
注、如果想下载指定版本进行安装 , 请参考Linux Ubuntu 14.04 下JDK 8 的安装与配置
2、安装Maven
输入以下命令安装Maven
apt-get -y install maven输入mvn -v检测,如果出现以下内容,表示安装成功。
注、如果想下载指定版本进行安装 , 请参考Linux Ubuntu 14.04 Maven 3.3.3 的安装与配置
3、安装Native libraries
注意:如果没有安装GCC和G++,请先安装,因为部分依赖包需要编译。
安装GCC和G++,请参考Linux Ubuntu 14.04 下 GCC/G++ 的安装
依次输入以下命令安装Native libraries
apt-get -y install build-essential
apt-get -y install autoconf
apt-get -y install automake
apt-get -y install libtool
apt-get -y install cmake
apt-get -y install zlib1g-dev //如果安装失败可暂时不理
apt-get -y install pkg-config
apt-get -y install libssl-dev4、安装ProtocolBuffer
apt-get -y install libprotobuf-dev
apt-get -y install protobuf-compiler注、如果想下载指定版本进行安装 , 请参考Linux Ubuntu 14.04 下 ProtoBuf 2.6.1 的编译安装与配置
Hadoop 要求安装的ProtoBuf 为2.5.0,如果安装了较新的版本如2.6.1,编译时会抱如下错误
5、安装FindBugs
apt-get install findbugs注、如果想下载指定版本进行安装 , 请参考Linux Ubuntu 14.04 下FindBugs 3.0.1 的安装与配置
以上1、2、3、4、5 都是必备的软件依赖包,下面还可以安装一些可选的包(也可不安装)
5、安装Snappy compression
apt-get -y install snapp
apt-get -y install libsnappy-dev6、安装Bzip2
apt-get -y install Bzip2
apt-get -y install libbz2-dev7、安装Jansson
apt-get -y install libjansson-dev8、安装Linux FUSE
apt-get install fuse libfuse-dev三、解压Hadoop2.7.1
前面已经下载了源码,现在可以直接解压了,切换到下载的目录,执行以下命令解压到/opt/下
tar -zvxf hadoop-2.7.1-src.tar.gz -C /opt/四、编译Hadoop2.7.1
切换到相应目录,执行以下命令进行编译。
mvn package -Pdist,native,docs -DskipTests -Dtar备注:编译时需要联网,并且编译过程很慢,请耐心等待。
五、编译出错处理
1、Out of memory errors
特别对于虚拟机中的Ubuntu,可能会占内存不足,一方面将虚拟机的内存增大,另一方面请执行
export MAVEN_OPTS="-Xms256m -Xmx512m"2、No goals have been specified
这是因为pom.xml中build属性没有设置Goal。只需要打开pom.xml文件,在所有的
<defaultGoal>compile</defaultGoal>3、Ant BuildException
主要因为FindBugs版本不正确或者安装不正确,官方要求1.3.9以上版本。
如果想下载指定版本进行安装 , 请参考Linux Ubuntu 14.04 下FindBugs 3.0.1 的安装与配置
六、编译过程欣赏
之所以用欣赏两个字,主要是因为手动编译时,往往由于环境问题而不能成功。
1、正在编译HDFS
2、正在编译MapReduce
3、正在编译YARN
七、编译成功
八、编译后的文件
默认编译后的文件放在 hadoop-dist/target中
红色方框是编译后的文件,红色箭头所指是将编译后的文件压缩成的tar.gz包。


















