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_HOME
和PATH
,验证java-version
(以下都需要验证是否配置成功)
1 | [root@hadoop102 software]# tar -zxf jdk-8u144-linux-x64.tar.gz -C /opt/module/ |
检查环境:
1 | $ source /etc/profile |
Maven安装
Maven解压、配置MAVEN_HOME
和PATH
1 | [root@hadoop102 software]# tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/ |
1 | <mirrors> |
1 | [root@hadoop102 apache-maven-3.0.5]# vim /etcmvn -bersion/profile |
检查环境:
1 | $ source /etc/profile |
ant安装
ant解压、配置ANT_HOME
和PATH
1 | [root@hadoop102 software]# tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/ |
检查环境:
1 | $ source /etc/profile |
glibc-headers 和 g++
c++支持
1 | $ yum install glibc-headers |
make 和 cmake
make是一个简单的通过文件时间戳控制自动过程、处理依赖关系的软件,这个自动过程可以是编译一个项目。
Make是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).它的作用和qt的qmake是相似的。
1 | $ yum install make |
protobuf 安装
protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
ProtoBuf是结构数据序列化方法,可简单类比于XML。
1 | [root@hadoop102 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/ |
检查环境:
1 | $ source /etc/profile |
安装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 | [root@hadoop102 hadoop-2.7.2-src]# pwd |
通过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 | [root@hadoop102 target]# pwd |