Hadoop的源码编译

一、为什么要源码编译

Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries) 的概念。说白了,就是Hadoop的某些功能,必须通过JNT来协调Java类文件和Native代码生成的库文件一起才能工作。linux系统要运行Native 代码,首先要将Native 编译成目标CPU 架构的[.so]文件。而不同的处理器架构,需要编译出相应平台的动态库[.so] 文件,才能被正确的执行,所以最好重新编译一次hadoop源码,让[.so]文件与自己处理器相对应。
简单来说就是编译出适合自己机器的Hadoop。

二、编译步骤

1.安装基础环境

yum install -y wget  g++ autoconf automake libtool cmake zlib1g-dev pkg-config openssl-devel gcc-c++ zlib-devel   ncurses-devel  openssl-devel

2.下载Hadoop的源码包

Hadoop的源码包可以直接在Hadoop的官网(hadoop.apache.org)下载,如果没有找到自己需要的版本,可以在[Apache归档]下载。下载完之后将其上传到自己的服务器中,然后解压到指定目录。

mkdir /home/hadoop
tar -zxvf hadoop-2.6.0-src.tar.gz -C /home/hadoop

3.安装jdk并配置环境变量

解压安装

mkdir /home/java
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /home/java

配置环境变量

vi /root/.bashrc
#在打开的文件中添加如下内容
export JAVA_HOME=/home/java/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
#保存并退出
source /root/.bashrc

4.安装maven并配置环境变量

解压安装

mkdir /home/maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /home/maven

配置maven仓库

#在这里我已经提前准备好了相关的仓库将其放在了/home/maven目录下

配置阿里云镜像

cd /home/maven/apache-maven-3.3.9/conf/
vi settings.xml
#在第55行的位置配置了我的仓库
<localRepository>/home/maven/local</localRepository>
#在第164行的位置配置了阿里云镜像
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>
</mirror>
#然后保存并推出

配置maven环境变量

vi /root/.bashrc
#在打开的文件中添加如下内容
export JAVA_HOME=/home/java/jdk1.8.0_181
export MAVEN_HOME=/home/maven/apache-maven-3.3.9
export M2_HOME=/home/maven/apache-maven-3.3.9

export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$M2_HOME/bin
#注意:在这里为了防止编译中遇到maven版本的问题,同时配置了M2的环境变量

#保存并退出
source /root/.bashrc

5.安装protobuf(版本:2.5)并配置环境变量

注意:在这里必须使用protobuf的2.5版本,如果没有找到的话给大家一个连接(https://pan.baidu.com/s/1pJlZubT 百度云)
解压安装

#解压至指定目录
mkdir /home/protobuf
tar -zxvf protobuf-2.5.0.tar.gz -C /home/protobuf

#安装
cd /home/protobuf/protobuf-2.5.0/
./configure --prefix=/home/protobuf/protobuf-2.5.0

make #此命令执行需要等待一定的时间,请不要着急(至少5分钟)
make check #此命令执行需要等待一定的时间,请不要着急
make install #此命令执行需要等待一定的时间,请不要着急

cd bin
./protoc --version #查看protobuf的版本

配置环境变量

vi /root/.bashrc
#在打开的文件中添加如下内容

export PROTOBUF_HOME=/home/protobuf/protobuf-2.5.0
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$M2_HOME/bin:$PROTOBUF_HOME/bin

#保存并退出
source /root/.bashrc

5.安装findbugs并配置环境变量

注:findbugs的下载地址 http://findbugs.sourceforge.net/downloads.html
解压安装

#解压至指定目录
mkdir /home/findbugs
tar -zxvf findbugs-3.0.1.tar.gz -C /home/findbugs

配置环境变量

vi /root/.bashrc
#在打开的文件中添加如下内容
export FINDBUGS_HOME=/home/findbugs/findbugs-3.0.1
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$M2_HOME/bin:$PROTOBUF_HOME/bin:$FINDBUGS_HOME/bin

#保存并退出
source /root/.bashrc

7.开始编译

# 首先,设置maven可以用内存
export MAVEN_OPTS="-Xms256m -Xmx512m"

# 进入到hadoop源码的解压路径下
cd /home/hadoop/hadoop-2.6.0-src/
# 执行如下命令,开始编译
mvn clean package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true

# 如果出现tomcat下载速度过慢
# 将已经准备好的tomcat 直接放入此目录即可
/home/hadoop/hadoop-2.6.0-src/hadoop-common-project/hadoop-kms/downloads/

# 如果第二次出现tomcat下载速度过慢
# 将已经准备好的tomcat 直接放入此目录即可
/home/hadoop/hadoop-2.6.0-src/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads/

注:编译过程持续时间较长,请大家耐心等待,至少20分钟

8.编译成功

编译成功会看到如下效果
在这里插入图片描述
编译好的Hadoop存在于如下目录中
/home/hadoop/hadoop-2.6.0-src/hadoop-dist/target/
如图
在这里插入图片描述
注意:配置环境变量时一定注意不要出错,正确的环境变量如下图所示
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

难过的风景

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值