hadoop-2.10.1源码编译
文章目录
前言
目前正在学习hadoop,编译源码时遇到一堆报错,深感网上教程误人子弟,决定自己写一篇教程,教大家从0到1安装好环境并且能够编译成功hadoop-2.10.1。
本人编译hadoop源码所使用的主机是阿里云服务器,系统是CentOS6.10。
一、下载hadoop-2.10.1
下载hadoop-2.10.1-src.tar.gz
wget --no-check-certificate https://mirrors.bfsu.edu.cn/apache/hadoop/core/hadoop-2.10.1/hadoop-2.10.1-src.tar.gz
解压
tar -zxvf hadoop-2.10.1-src.tar.gz -C /opt/
该教程我所有的文件都下载在root目录下,解压到opt文件
二、环境要求
打开hadoop-2.10.1-src里面的BUILDING.txt文件
在BUILDING.txt这个文件里面就已经告诉我们需要的安装的环境了,千万不要再根据别人的教程无脑安装了,适合别人的不一定适合自己啊,本人的血泪教训!!!
不同的hadoop源码版本需要的环境版本各不相同,需要什么环境就老老实实安装什么。
本教程多次所用wget命令,如果觉得太慢了可以安装axel,wget的插件,所用axel更换wget可加速下载。
若wget后面的链接挂了,请自行更换下载。
1.JDK 1.7 or 1.8
本人选择安装jdk1.8,版本jdk-8u202-linux-x64
wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
解压
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/
打开/etc/profile
vim /etc/profile
输入i,在文件的末尾加入如下代码
export JAVA_HOME=/opt/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按下Esc,Shift+:,输入:wq,保存退出,执行命令
source /etc/profile
(本教程在配置任何环境变量都是如此的两步,因此后面不再过多赘述了)
查看是否安装成功jdk
java -version
如果jdk安装失败,及有可能是/etc/profile文件里的JAVA_HOME=后面加的jdk路径写错了,下文所有环境变量的配置问题同理
2.Maven 3.0 or later
本人一开始安装的是maven3.0版本的,最后编译失败了,所以选择更高版本的apache-maven-3.3.9-bin.tar.gz
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /opt/
打开/etc/profile,在文件的末尾加入如下代码
export MAVEN_HOME=/opt/apache-maven-3.3.9
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
执行命令
source /etc/profile
查看是否安装成功
mvn -v
打开apache-maven-3.3.9/conf/setting.xml文件,在mirrors里面加入如下代码,这样可以加快hadoop的编译速度,不然太慢了,等的着急啊!
<mirror><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf></mirror>
maven环境安装配置其为重要!!!本人多次在此踩坑,大多数hadoop编译源码报错都源于maven,最后编译hadoop如果出现maven报错,请尝试rm -rf 删除maven,重新安装配置(从头再来,祝你好运)
3.Findbugs 1.3.9
下载解压
wget http://prdownloads.sourceforge.net/findbugs/findbugs-1.3.9.tar.gz?download
tar -zxvf findbugs-1.3.9.tar.gz\?download -C /opt/
打开/etc/profile,在文件的末尾加入如下代码
export FINDBUGS_HOME=/opt/findbugs-1.3.9
export PATH=$PATH:$FINDBUGS_HOME/bin
执行命令
source /etc/profile
findbugs -version
4.ProtocolBuffer 2.5.0
下载解压
wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
tar zxvf protobuf-2.5.0.tar.gz -C /opt/
进入protobuf
cd /opt/protobuf-2.5.0/
执行编译命令
./configure
make
make check
make install
如果在执行上述命令时出现报错,可先尝试换yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://files.tttidc.com/centos6/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://files.tttidc.com/centos6/epel-6.repo
yum makecache
在执行如下代码
yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
安装完缺少的gcc和gcc-c++之后,请重新执行编译命令,再查看是否安装成功
./configure
make
make check
make install
protoc --version
重要!!!这里极有可能出现报错,./configure、make命令出现报错的的原因大概率是系统缺少gcc和gcc-c++,所以我们在编译protobuf时要保证先安装好编译环境
5.CMake 2.6 or newer
下载解压
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -zxvf cmake-2.8.10.2.tar.gz -C /opt/
进入cmake编译
cd /opt/cmake-2.8.10.2/./bootstrap
gmake
gmake install
查看是否安装成功
cmake -version
6.Zlib devel
下载解压
wget https://www.zlib.net/zlib-1.2.12.tar.gz
tar -zxvf zlib-1.2.12.tar.gz -C /opt/
进入zlib-1.2.12编译
cd /opt/zlib-1.2.12/./configure --prefix=/usr/local/zlib
make
make check
make install
echo "/usr/local/zlib/lib">>/etc/ld.so.conf
查看是否安装成功
ldconfig -v
7.openssl devel
下载openssl-devel
yum install openssl-devel
下载 openssl-devel失败的请更换yum
8.Linux FUSE version 2.6 or above
下载解压
wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.6.0.tar.gz
tar -zxvf fuse-2.6.0.tar.gz -C /opt/
进入fuse编译
cd /opt/fuse-2.6.0/./configure
make
make install
cd /opt/
cp fuse-2.6.0/fuse.pc /usr/share/pkgconfig
modprobe fuse
lsmod | grep "fuse"
9.python
下载解压
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
tar -xvf Python-3.6.4.tgz -C /opt/
这里wget,会有点慢,可考虑自行百度下载axel安装与使用
进入Python编译
cd /opt/Python-3.6.4/./configure --prefix=/usr/local/python3
make
make install
ln -s /usr/local/python3/bin/python3.6/usr/bin/python3
ln -s /usr/local/python3/bin/pip3.6/usr/bin/pip3
查看是否安装成功
python3 -V
10.Node.js / bower / Ember-cli
下载解压
wget https://nodejs.org/dist/v10.6.0/node-v10.6.0-linux-x64.tar.gz
tar -zxvf node-v10.6.0-linux-x64.tar.gz -C /opt/
cd /opt/
mv node-v10.6.0-linux-x64 /usr/local/nodejs
打开/etc/profile
vim /etc/profile
加入如下代码
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
执行命令
source /etc/profile
查看是否安装成功
node -v
npm -v
三、编译hadoop
cd /opt/hadoop-2.10.1-src/
mvn package -Pdist,nativeN -DskipTests -Dtar
总结
以上就是本教程的内容,本文仅仅简单的介绍了如何编译hadoop-2.10.1-src的源码,其实编译其他版本的hadoop源码都是同样的道理。
编译不同的hadoop代码需要的环境版本各不相同,但是没关系,我们把需要的环境先配置好,然后再进行编译。
配置完每一个环境之后都要检查一下是否安装成功!!!
本人在编译hadoop源码时得到的教训是:当我们有一个比较繁琐的任务,而这个任务又可以细分为很多的小任务时,尽量完美的完成好每一个小任务,谨慎小心,因为每一个任务都环环相扣,这句话也送给所有看到这个教程的小伙伴,希望你们都能够编译成功hadoop,加油!
版权归原作者 正在敲代码的小娜 所有, 如有侵权,请联系我们删除。