hadoop源码编译的理由
为什么要编译?
答:hadoop提供了很多组件的本地实现,来解决由于性能原因或者某些java类库的缺失造成的问题。
而这些组件保存在hadoop的本地库里,编译hadoop即是构建本地库的过程。
说人话就是,为经过编译的hadoop功能不完善,比如hadoop要支持压缩,就必须编译。
1、准备工作
1、cd /opt/source && tar -zxvf hadoop-2.8.1-src.tar.gz ../apps
2、查看编译要求:
cd /opt/apps/hadoop-2.8.1-src && more BUILDING.txt
* 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、安装jdk
安装:
rpm -ivh jdk-7u80-linux-x64.rpm
环境变量:
vi + /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
验证:
java -version
3、安装依赖
yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool gcc* ncurses-devel make cmake snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake
4、安装maven
1、cd /opt/source && unzip apache-maven-3.3.9-bin.zip && mv apache-maven-3.3.9 ../apps
2、vi + /etc/profile
export MAVEN_HOME=/opt/apps/apache-maven-3.3.9
export PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx1024m"
source /etc/profile
3、验证
mvn -version
注意:
export MAVEN_OPTS="-Xms256m -Xmx1024m"
#####配置maven使用的最大和最小内存,内存不够可能会报错
报错[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.6.5:compile (default-compile) on project hadoop-hdfs: Fatal error compiling: Error while executing the compiler. InvocationTargetException: Java heap space
5、安装protobuf
1、cd /opt/source && tar -zxvf protobuf-2.5.0.tar.gz -C ../apps
2、cd ../apps/protobuf-2.5.0 && ./configure --prefix=/usr/local/protobuf
3、make && make install
4、vi + /etc/profile
export PROTOC_HOME=/usr/local/protobuf
export PATH=$PATH:$PROTOC_HOME/bin
source /etc/profile
5、验证
protoc --version
6、安装findbugs
1、cd /opt/source && unzip findbugs-1.3.9.zip && mv findbugs-1.3.9 ../apps/
2、vi + /etc/profile
export FINDBUGS_HOME=/opt/apps/findbugs-1.3.9
export PATH=$PATH:$FINDBUGS_HOME/bin
source /etc/profile
3、验证:
findbugs -version
5、编译
1、cd /opt/apps/hadoop-2.8.1-src
2、mvn clean package -Pdist,native -DskipTests -Dtar
编译时长从十多分钟到四五个小时不等,视网络而定,因为编译要下好多jar包。
如果不想这么久,可以在编译前将共享文件里的.m2.tar.gz解压到当前用户的家目录。
该.m2文件夹内全是编译下载好的jar包。
注意:
有时候编译过程中会出现下载某个包的时间太久,这是由于连接网站的过程中会出现假死,此时按ctrl+c,重新运行编译命令。
如果出现缺少了某个文件的情况,则要先清理maven(使用命令 mvn clean) 再重新编译。
3、编译成功的提示信息
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17:09 min
[INFO] Finished at: 2019-04-24T19:09:20+08:00
[INFO] Final Memory: 256M/684M
[INFO] ------------------------------------------------------------------------
编译文件及压缩包位于/opt/apps/hadoop-2.8.1-src/hadoop-dist/target目录下:
[root@Linux005 target]# ll /opt/apps/hadoop-2.8.1-src/hadoop-dist/target
total 572388
drwxr-xr-x 2 root root 4096 Apr 24 19:08 antrun
drwxr-xr-x 3 root root 4096 Apr 24 19:08 classes
-rw-r--r-- 1 root root 2106 Apr 24 19:08 dist-layout-stitching.sh
-rw-r--r-- 1 root root 639 Apr 24 19:08 dist-tar-stitching.sh
drwxr-xr-x 9 root root 4096 Apr 24 19:08 hadoop-2.8.1 #####编译文件
-rw-r--r-- 1 root root 194963153 Apr 24 19:08 hadoop-2.8.1.tar.gz #####压缩包
-rw-r--r-- 1 root root 30238 Apr 24 19:08 hadoop-dist-2.8.1.jar
-rw-r--r-- 1 root root 391027860 Apr 24 19:09 hadoop-dist-2.8.1-javadoc.jar
-rw-r--r-- 1 root root 27737 Apr 24 19:09 hadoop-dist-2.8.1-sources.jar
-rw-r--r-- 1 root root 27737 Apr 24 19:09 hadoop-dist-2.8.1-test-sources.jar
drwxr-xr-x 2 root root 4096 Apr 24 19:08 javadoc-bundle-options
drwxr-xr-x 2 root root 4096 Apr 24 19:08 maven-archiver
drwxr-xr-x 3 root root 4096 Apr 24 19:08 maven-shared-archive-resources
drwxr-xr-x 3 root root 4096 Apr 24 19:08 test-classes
drwxr-xr-x 2 root root 4096 Apr 24 19:08 test-dir
所需软件百度云链接:
链接:https://pan.baidu.com/s/1o8nGnnr4abibs2NGePMGAw
提取码:irfi
复制这段内容后打开百度网盘手机App,操作更方便哦