hadoop源码编译(从0到1一步步教你如何编译,适用于任何hadoop版本)

本文详细介绍了如何在CentOS6.10上从头开始编译Hadoop 2.10.1源码,包括所需的所有环境配置,如JDK 1.8、Maven 3.3.9、Findbugs 1.3.9、ProtocolBuffer 2.5.0、CMake 2.6、Zlib、Openssl、Linux FUSE、Python 3.6.4、Node.js、Bower和Ember-cli。每个步骤都提供了详细的命令和注意事项,确保读者能够成功编译源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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++

若yum不成功,则自行更换一个可以所用的yum源

安装完缺少的gcc和gcc-c++之后,请重新执行编译命令,再查看是否安装成功

./configure
make
make check
make install

protoc --version

重要!!!这里极有可能出现报错,./configure、make命令出现报错的的原因大概率是系统缺少gcc和gcc-c++,所以我们在编译protobuf时要保证先安装好编译环境

5.CMake 2.6 or newer

下载解压

cd /root/
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

下载解压

cd /root/
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

下载解压

cd /root/
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

下载解压

cd /root/
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

下载解压

cd /root/
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,加油!

<think>好的,我现在需要帮助用户解决在Ubuntu系统中将Hadoop连接到Eclipse的问题。首先,我应该确认用户的具体需求是什么。他们可能想要在Eclipse IDE中配置Hadoop开发环境,以便于开发和调试Hadoop应用程序。接下来,我需要回忆相关的步骤和可能遇到的常见问题。 首先,用户需要安装Eclipse。在Ubuntu上,可以通过snap或者直接下载安装。不过,考虑到兼容性,可能需要特定版本的Eclipse,比如Eclipse IDE for Java Developers,因为Hadoop主要是用Java开发的。然后,Hadoop应该已经安装并配置好了,用户需要确认Hadoop版本,因为不同版本Hadoop可能有不同的插件或配置方式。 接下来,安装Hadoop Eclipse插件是关键步骤。Hadoop自带的插件可能需要编译,或者用户需要下载预编译的jar文件。比如,对于Hadoop 2.x,可能需要从源码编译hadoop-eclipse-plugin,这需要安装Ant工具。用户可能会遇到找不到插件或者版本不兼容的问题,这时候需要指导他们如何正确获取插件。 然后,配置Eclipse中的Hadoop插件,包括设置Hadoop安装目录和配置Map/Reduce的定位。用户需要知道如何在Eclipse的Preferences中添加Hadoop的相关路径,以及如何创建新的Map/Reduce项目。这里可能需要指定Hadoop的安装路径,并确保路径正确无误。 配置HDFS Location也是一个重要步骤。用户需要输入NameNode的主机名和端口,比如默认的9000或者8020,这取决于Hadoop的配置。如果用户遇到连接问题,可能需要检查Hadoop的配置文件,如core-site.xml和hdfs-site.xml,确认端口是否正确,以及防火墙设置是否允许连接。 用户可能会在连接HDFS时遇到权限问题,这时候需要指导他们如何修改HDFS的权限或者在代码中设置权限。此外,运行MapReduce程序时,类路径问题也是常见的,可能需要添加Hadoop的库到项目的构建路径中。 最后,提醒用户注意版本兼容性,不同版本Hadoop和Eclipse可能需要不同的插件版本,或者特定的配置调整。如果用户的问题仍然存在,建议他们检查日志文件,或者尝试重新安装插件,确保所有步骤都正确执行。 在整个过程中,需要确保给出的命令准确无误,并且适合用户的Ubuntu环境。比如,使用apt-get安装依赖项,使用正确的路径来编译插件。同时,用户可能需要基本的命令行操作知识,比如解压文件、移动文件到Eclipse的插件目录等。 总结一下,步骤大致是:安装Eclipse,安装Hadoop插件,配置插件,创建项目,连接HDFS,处理常见问题。每个步骤都可能存在潜在的坑,需要详细说明解决方法,确保用户能够一步步完成配置。</think>在Ubuntu系统中将Hadoop与Eclipse集成,可通过以下步骤实现: --- ### **步骤1:安装Eclipse** 1. 通过终端安装: ```bash sudo snap install --classic eclipse ``` 或从[Eclipse官网](https://www.eclipse.org/downloads/)手动下载并安装。 2. 确保已安装Java环境: ```bash sudo apt-get install openjdk-11-jdk ``` --- ### **步骤2:安装Hadoop Eclipse插件** 1. **获取插件**: - Hadoop自带插件源码(路径:`$HADOOP_HOME/share/hadoop/tools/lib/hadoop-eclipse-plugin-*.jar`)。 - 若未找到,需手动编译: ```bash cd $HADOOP_HOME/share/hadoop/tools/eclipse-plugin ant jar -Dversion=2.10.1 # 版本号需匹配你的Hadoop版本 ``` 2. **将插件复制到Eclipse目录**: ```bash cp hadoop-eclipse-plugin-*.jar /usr/lib/eclipse/plugins/ ``` --- ### **步骤3:配置Hadoop插件** 1. 启动Eclipse,进入 `Window > Preferences`: - 在左侧选择 `Hadoop Map/Reduce`,设置`Hadoop安装路径`为你的Hadoop根目录(如`/usr/local/hadoop`)。 - 点击 `Apply and Close`。 2. **配置Map/Reduce视图**: - 打开视图:`Window > Show View > Other > MapReduce Tools > Map/Reduce Locations`。 - 右键点击空白区域,选择 `New Hadoop Location`。 - 配置参数: - **Location Name**:自定义名称(如`Hadoop-Cluster`)。 - **Map/Reduce Master**:设置JobTracker的地址和端口(默认:`localhost:9001`)。 - **DFS Master**:设置NameNode的地址和端口(默认:`hdfs://localhost:9000`)。 --- ### **步骤4:创建Hadoop项目** 1. 新建项目:`File > New > Project > Map/Reduce Project`。 2. 输入项目名称,选择`使用默认Hadoop库`。 3. 右键项目,选择 `Configure > Convert to Maven Project`(可选,便于依赖管理)。 --- ### **步骤5:连接HDFS文件系统** 1. 进入 `Window > Show View > Other > Remote Systems > Remote Systems`。 2. 右键选择 `New Connection > Hadoop Distributed File System (HDFS)`。 3. 输入NameNode地址(如`hdfs://localhost:9000`),完成连接。 --- ### **常见问题解决** 1. **插件加载失败**: - 确认插件版本Hadoop版本匹配。 - 检查`eclipse/plugins`目录权限。 2. **连接HDFS超时**: - 检查Hadoop服务是否运行: ```bash jps # 应显示NameNode、DataNode、ResourceManager等进程 ``` - 确认`core-site.xml`中配置的端口与Eclipse一致: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> ``` 3. **权限问题**: - 在代码中设置HDFS权限: ```java Configuration conf = new Configuration(); conf.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()); FileSystem fs = FileSystem.get(conf); fs.setPermission(new Path("/user"), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); ``` --- ### **总结** 通过以上步骤,你可以在Eclipse中直接操作HDFS并开发MapReduce程序。若需调试代码,可直接右键选择 `Run As > Java Application`。建议参考[Hadoop官方文档](https://hadoop.apache.org/docs/stable/)以适配具体版本环境。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值