5.编译hadoop源码

上次我们说到了文件压缩和文件格式,为了本地native包不为空,我们决定自己编译一下Hadoop源码。

环境准备

Linux环境:CentOS 6.5

jdk版本:jdk1.7(注:pom文件里面很多注明了1.7,所以最好用1.7编译)

maven版本:apache-maven-3.6.0

Hadoop版本:hadoop-2.6.0-cdh5.7.0

依赖jar包库:repo

编译准备

编译前我们需要做如下几步:

  • 创建hadoop用户,并在家目录创建app source software repo等目录

  • 部署JAVA环境

  • 安装maven(记得修改本地仓库地址和添加一个阿里maven仓库)
  • 安装Protocol Buffer 2.5.0

前三步我就不写了,我们直接讲如何安装Protocol Buffer 2.5.0

安装Protocol Buffer 2.5.0

首先下载Protocol Buffer,这里我已经放到云盘,大家需要自己下载。也可以去官网找。

进到相关目录

1
2
# su - hadoop
$ cd ~/software

使用rz命令上传

1
$ rz

解压

1
$ tar -xzvf protobuf-2.5.0.tar.gz -C ../source

进行安装

使用root安装一下类库和命令(如果已经存在可以略过)

1
2
3
$ exit
# yum install -y gcc gcc-c++ make cmake
# su - hadoop

回到我们的需要编译的目录

1
$ cd ~/source/protobuf-2.5.0

指定安装目录

1
$ ./configure --prefix=/home/hadoop/app/protobuf-2.5.0

开始安装

1
$ make && make install

配置用户变量

1
$ vi ~/.bash_profile

添加如下语句

1
2
export PROTOC_HOME=/home/hadoop/app/protobuf-2.5.0
export PATH=$PROTOC_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

使环境变量生效

1
$ source ~/.bash_profile

验证

1
$ protoc --version

安装其它依赖

新开一个窗口,使用root安装一些类库

1
2
# yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
# yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake

编译Hadoop

进入相关目录

1
$ cd ~/software

使用rz命令上传hadoop-2.6.0-cdh5.7.0

1
$ rz

解压

1
$ tar -zxvf hadoop-2.6.0-cdh5.7.0-src.tar.gz -C ../source

进行安装

上传repo库

1
2
3
4
$ cd ~/repo
$ rz
$ tar -zxvf repo.tar.gz
$ mv repo ./

修改maven的setting.xml,将你的仓库地址指向repo这个目录

1
$ vi $MAVEN_HOME/conf/setting.xml

1
<localRepository>/home/hadoop/repo</localRepository>

进入相关目录

1
2
$ cd ~/source/hadoop-2.6.0-cdh5.7.0
$ mvn clean package -Pdist,native -DskipTests -Dtar
注意: -DskipTests :跳过测试
-Dtar :打成tar包

编译成功

注意:如果不使用提供的jar库来编译,过程中会出现很多jar下载失败!

编译之后

我们需要的包在以下的目录,将它拷贝到我们的app下面就可以开始我们hadoop部署了!

1
cp /home/hadoop/source/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target/hadoop-2.6.0-cdh5.7.0.tar.gz ~/app/