就为了瞅瞅hadoop源码长啥样,坑是踩了一个又一个,最后将成功的搭建方法记录下来仅供参考。每个人的系统环境不同,出现的问题也会不一样,如果有新坑,欢迎粘贴到底部评论区,回头踩踩。
Windows源码环境搭建
软件下载
Windows:版本8.1;
eclipse:版本eclipse-inst-win64.exe,官方下载地址:eclipse-inst-win64.exe;
JDK:版本1.8.0_201,官方下载地址:jdk-8u201-windows-x64.exe;
Maven:版本Apache Maven 3.5.4,官方下载地址:Maven 3;
Protocal Buffers:版本2.5.0,官方下载地址:protoc-2.5.0-win32.zip
hadoop版本:hadoop-2.7.3-src.tar.gz,官方下载地址:hadoop-2.7.3-src.tar.gz
安装eclipse
略。
安装JDK
略,安装好后,执行java -version验证是否安装成功,如图:
安装Maven
略,安装好后,执行mvn -version验证是否安装成功,如图:
安装Protocal Buffers
解压protoc-2.5.0-win32.zip到指定目录,例如:E:\protoc-2.5.0-win32,将该路径配置到PATH系统变量中,如图:
执行protoc --version验证变量是否配置成功,如图:
创建hadoop源码工程
解压源码
将hadoop-2.7.3-src.tar.gz源代码解压到指定路径,例如:G:\eclipse_workspace\hadoop-2.7.3-src;
安装插件
(1)在安装插件之前可以修改下载源,提高下载速度,具体做法如下:
找到apache-maven-3.5.4/conf/settings.xml配置文件,将如下镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
加入到<mirrors></mirrors>中。当然,这一步是选择性的,可以不修改。
(2)进入G:\eclipse_workspace\hadoop-2.7.3-src\hadoop-maven-plugins目录,执行
mvn install
安装hadoop-maven-plugins插件,成功后,如图:
生成eclipse工程文件
再回到G:\eclipse_workspace\hadoop-2.7.3-src目录,执行
mvn eclipse:eclipse -DskipTests
生成eclipse工程文件,成功后,部分输出如图:
源码导入eclipse
打开eclipse,File-->Import-->Existing Projects into Workspace,如图:
点击Finish,等待导入。
问题
总共有100个问题,仔细看只有如下几类问题:
Access restriction: The type '********' is not API (restriction on required library 'E:\Java\jdk1.8.0_201\jre\lib\rt.jar')
******** cannot be resolved to a type
******** cannot be resolved
解决
(1)hadoop-common
包:org.apache.hadoop.ipc
问题:The import org.apache.hadoop.ipc.protobuf.TestProtos cannot be resolved
解决方法:进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\proto”,执行
protoc --java_out=..\java *.proto
如图:
刷新eclipse中的hadoop-common模块。
包:org.apache.hadoop.io.serializer.avro
问题:AvroRecord cannot be resolved to a type
解决方法:下载avro-tools-x.x.x.jar,下载地址:avro-tools-1.7.7.jar,拷贝到源码根目录下的“hadoop-common-project\hadoop-common\src\test\avro”,在该目录下执行
java -jar avro-tools-1.7.7.jar compile schema avroRecord.avsc ..\java
如图:
刷新eclipse中的hadoop-common模块。
包:org.apache.hadoop.crypto
问题:Access restriction: The type 'DirectBuffer' is not API (restriction on required library 'E:\Java\jdk1.8.0_201\jre\lib\rt.jar')
解决方法:这类错误都是JDK版本问题,默认安装时使用jdk版本是1.7,配置为已经安装的JDK1.8版本即可以解决该类问题。
(2)hadoop-streaming上出现红色感叹号
红色感叹号基本都是Build Path设置问题,打开Build Path就能看到红色叉,如图:
直接remove。
以上所有问题解决后,hadoop源码工程如图:
Linux
软件下载
(1)Linux系统版本:如图,
(2)eclipse:版本eclipse-jee-2018-12-R-linux-gtk-x86_64.tar.gz,官方下载地址:eclipse-jee-2018-12-R-linux-gtk-x86_64.tar.gz;
(3)JDK:版本jdk-8u144-linux-x64.tar.gz,官方下载地址:同Windows;
(4)Maven:版本Apache Maven 3.6.0,官方下载地址:同Windows,没有Windows和Linux版本区分;
(5)Protocal Buffers:版本2.5.0,官方下载地址:protoc-2.5.0.tar.gz
(6)hadoop版本:同Windows。
安装JDK
略。执行
java -version
,验证是否安装成功,如图:
安装Maven
略。执行
mvn -version
,验证是否安装成功,如图:
安装ProtocolBuffer
hadoop-2.7.3源码对应ProtocolBuffer是2.5.0,下载protobuf-2.5.0.tar.gz,解压文件,进入解压后的protobuf-2.5.0/目录,依次执行如下命令:
./configure
make
make install
安装完毕后执行protoc --version,验证是否安装成功,成功返回libprotoc 2.5.0,如图:
安装eclipse
将下载的eclipse直接解压就可以,成功后,如图:
创建hadoop源码工程
解压源码
将hadoop-2.7.3-src.tar.gz源码压缩包,解压到指定目录,例如:/root/workspace/hadoop-2.7.3-src。
安装插件
进入hadoop-2.7.3-src/hadoop-maven-plugins目录,执行
mvn install
进行Eclipse插件hadoop-maven-plugins安装,出现BUILD SUCCESS,表示安装成功,如图:
生成Eclipse项目文件
再回到hadoop-2.7.3-src/目录下执行
mvn eclipse:eclipse -DskipTests
生成Eclipse工程文件,成功后如图:
问题解决
同Windows。