Hadoop源码编译

Hadoop源码编译

[TOC]

Hadoop源码编译

hadoop官方的jar包是32位的,需要在centos64位下进行编译转为64位。
将需求代码编辑进hadoop。

前期准备

CentOS联网

配置CentOS能连接外网。

注意:采用root角色编译,减少文件夹权限出现问题。
选取纯净的centos机器,最好只配置过ip主机名那种。

jar包准备(hadoop源码、JDK8、maven、ant、protobuf)

(1)hadoop-2.7.2-src.tar.gz
(2)jdk-8u144-linux-x64.tar.gz
(3)apache-ant-1.9.9-bin.tar.gz(build工具,打包用的)
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz(序列化的框架)

jar包安装

JDK安装

JDK解压、配置环境变量JAVA_HOMEPATH,验证java-version(以下都需要验证是否配置成功)

1
2
3
4
5
6
[root@hadoop102 software]# tar -zxf jdk-8u144-linux-x64.tar.gz -C /opt/module/
[root@hadoop102 software]# vi /etc/profile

#JAVA_HOME:
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

检查环境:

1
2
3
4
$ source /etc/profile
$ java -version

java version "1.7.0_261"

Maven安装

Maven解压、配置MAVEN_HOMEPATH

1
2
3
[root@hadoop102 software]# tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/

[root@hadoop102 apache-maven-3.0.5]# vim conf/settings.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
1
2
3
4
5
[root@hadoop102 apache-maven-3.0.5]# vim /etcmvn -bersion/profile

#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin

检查环境:

1
2
3
4
5
6
7
8
9
$ source /etc/profile
$ mvn -version

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 21:51:28+0800)
Maven home: /opt/module/apache-maven-3.0.5
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: /opt/module/jdk1.8.0_144/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-754.31.1.el6.x86_64", arch: "amd64", family: "unix"

ant安装

ant解压、配置ANT_HOMEPATH

1
2
3
4
5
6
7
[root@hadoop102 software]# tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/

[root@hadoop102 apache-ant-1.9.9]# vim /etc/profile

#ANT_HOME
export ANT_HOME=/opt/module/apache-ant-1.9.9
export PATH=$PATH:$ANT_HOME/bin

检查环境:

1
2
3
4
$ source /etc/profile
$ ant -version

Apache Ant(TM) version 1.9.9 compiled on February 2 2017

glibc-headers 和 g++

c++支持

1
2
$ yum install glibc-headers
$ yum install gcc-c++

make 和 cmake

make是一个简单的通过文件时间戳控制自动过程、处理依赖关系的软件,这个自动过程可以是编译一个项目。
Make是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).它的作用和qt的qmake是相似的。

1
2
$ yum install make
$ yum install cmake

protobuf 安装

protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。

ProtoBuf是结构数据序列化方法,可简单类比于XML。

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@hadoop102 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/

[root@hadoop102 protobuf-2.5.0]# ./configure
[root@hadoop102 protobuf-2.5.0]# make
[root@hadoop102 protobuf-2.5.0]# make check
[root@hadoop102 protobuf-2.5.0]# make install
[root@hadoop102 protobuf-2.5.0]# ldconfig

# vim /etc/profile

#LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/module/protobuf-2.5.0
export PATH=$PATH:$LD_LIBRARY_PATH

检查环境:

1
2
3
4
$ source /etc/profile
$ protoc --version

libprotoc 2.5.0

安装openssl库

1
$ yum install openssl-devel

安装 ncurses-devel库

1
$ yum install ncurses-devel

yum命令需要每台服务器单独设置,需要同步profile文件、/opt文件夹

编译源码

解压源码到/opt/目录

1
[root@hadoop102 software]# tar -zxvf hadoop-2.7.2-src.tar.gz -C /opt/

进入到hadoop源码主目录

1
2
3
[root@hadoop102 hadoop-2.7.2-src]# pwd

/opt/hadoop-2.7.2-src

通过maven执行编译命令

1
[root@hadoop102 hadoop-2.7.2-src]# mvn package -Pdist,native -DskipTests -Dtar

等待时间30分钟左右,最终成功是全部SUCCESS。编译期间maven报错。可能网络阻塞问题导致依赖库下载不完整导致,多次执行命令(一次通过比较难):

1
[root@hadoop102 hadoop-2.7.2-src]# mvn package -Pdist,nativeN -DskipTests -Dtar

成功的64位hadoop包在/opt/hadoop-2.7.2-src/hadoop-dist/target

1
2
3
[root@hadoop102 target]# pwd

/opt/hadoop-2.7.2-src/hadoop-dist/target

hadoop2.7汇总:新增功能最新编译64位安装、源码包、API、eclipse插件下载

文章作者: HibisciDai
文章链接: http://hibiscidai.com/2020/07/26/Hadoop源码编译/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HibisciDai
好用、实惠、稳定的梯子,点击这里