之前看到过很多人讲解源码编译,但自己一直没有尝试过。最近由于工作需要,想在本地搭建一个hadoop阅读环境,学习一下hadoop源码。
准备阶段
(1)首先下载要编译的hadoop源码版本,镜像链接如下:
http://mirror.bit.edu.cn/apache/hadoop/common/
(2)进入到hadoop目录,查看BUILDING.txt,了解编译需要的环境要求:
比如本人编译的hadoop-3.0.2-src:
Requirements:
* Unix System
* JDK 1.8
* Maven 3.3 or later
* ProtocolBuffer 2.5.0
* CMake 3.1 or newer (if compiling native code)
* Zlib devel (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)
* 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)
* python (for releasedocs)
* bats (for shell code testing)
* Node.js / bower / Ember-cli (for YARN UI v2 building)
注:一定要注意你所编译的版本对应的环境要求,版本不一致,会导致后边编译时各种bug。
工具安装
1.下载maven(apache-maven-3.3.3-bin.tar.gz)
http://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
2.安装maven
tar -zxvf apache-maven-3.3.3-bin.tar.gz
3.添加环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_191
export MAVEN_HOME=/usr/local/apache-maven-3.3.3
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
4.加载环境变量
source /etc/proflie
mvn -version
5.下载protobuf(3.0.2明确要求protobuf 2.5.0,官网目前找不到这个版本,提供云盘链接)
https://pan.baidu.com/s/1rO3DKLzR43r-1w_z0TwsCA
6.安装protobuf编译依赖,为了编译安装protoc,需要使用YUM下载几个依赖的工具
yum install -y gcc gcc-c++ make
7.解压安装protobuf
tar -zxvf protobuf-2.5.0.tar.gz
cd /home/XXX/protobuf-2.5.0
./configure
make && make install
8.安装其他编译依赖(建议安装之后,根据BUILDING.txt中要求检查一下版本,比如cmake是否3.1+)
yum install -y cmake openssl-devel ncurses-devel zlib-devel
yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop openssl openssl-devel
9.编译hadoop(漫长的等待)
tar -zxvf hadoop-3.0.2-src.tar.gz -C /usr/local/src/
cd /usr/local/src/hadoop-3.0.2-src
mvn package -Pdist,native,docs -DskipTests -Dtar -X #debug模式编译
最终成功效果:
10.查看编译好的安装包
cd /usr/local/src/hadoop-2.6.4-src/hadoop-dist/target