【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)

时间:2024-03-23 17:03:03

本次内容,我们来演示如何在Linux Idea环境中编译Hadoop 2.7.6 源码

  • 安装maven

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
tar -xzvf apache-maven-3.5.3-bin.tar.gz
  • 安装JDK 8

这里就不在赘述了,直接jdk直接从官网上下载下来,解压安装就行了。我的安装的是最新版本的CentOS Linux 7,其自带了JDK 8。所以这里不需要再安装了,直接使用。


  • 配置maven环境变量

vi ~/.bash_profile
export MAVEN_HOME=/home/hadoop/tools/apache-maven-3.5.3
export PATH=.:$PATH:$MAVEN_HOME/bin
  • 保存退出后,重新加载环境变量

source ~/.bash_profile

如果JAVA_HOME,没有配置对,那么验证maven的时候,可能会出现如下的错误:

The JAVA_HOME environment variable is not defined correctly.
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE.


  • 安装相关的依赖库

yum install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev gcc* openssl-devel


  • 安装protobuf-2.5.0


从如下网址下载后:https://github.com/google/protobuf/tree/v2.5.0

解压进入解压目录,执行如下命令编译安装即可(请使用root用户编译)

./configure
make
make install


  • 源码下载

接下来就是最激动人心的源码编译部分,我们先从官网下载Hadoop 2.7.6版本的源码下来

wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6-src.tar.gz

idea-IC Linux版下载

wget https://download.jetbrains.8686c.com/idea/ideaIC-2018.1.4.tar.gz

并打开hadoop项目源码

【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)


接下来就是漫长的等待,在maven projects窗口配置好我们刚刚安装的maven之后,点击刷新,等maven自动将所有的依赖包下载下来之后,我们就可以开始编译了,好鸡冻!!

我们只要在maven projects窗口输入命令:

mvn clean package -Pdist,native -DskipTests -Dtar

即可开始编译


  • 编译

【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)


编译过程中可能出现如下报错,我们来一个个解决:

hadoop-common: Error running javah command: Error executing command line

找到hadoop-common项目下的pom.xml,将env.JAVA_HOME修改为java.home,文件中有两个地方需要做修改:

<javahPath>${java.home}/../bin/javah</javahPath>

修改hadoop-annotations的依赖范围为compile

vi ./hadoop-common-project/hadoop-auth/pom.xml
vi ./hadoop-common-project/hadoop-common/pom.xml
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-annotations</artifactId>
<scope>compile</scope>
</dependency>

将依赖hadoop-annotations的值由provide改成compile

如果修改环境变量,最好idea退出重新加载,因为可能出现环境变量没加载的情况。然后再重新编译,得到编译成功的清单,完毕!

【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)


【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)

生活

岂止于美

【Hadoop】在Idea环境中编译Hadoop 2.7.6源码(Linux)

作者:苏鹭彬

长按二维码关注