在上一篇博文中简略介绍了在windows上部署hadoop源码到eclipse中,下面介绍通过unix处理项目部署的过程。
Hadoop源码构建环境需求(Hadoop-2.7.2):
Requirements:
*Unix System
*JDK 1.7+
*Maven 3.0 or later
*Findbugs 1.3.9 (if running findbugs)
*ProtocolBuffer 2.5.0
*CMake 2.6 or newer (if compiling native code), must be 3.0 or newer on Mac
*Zlib devel (if compiling native code)
*openssl devel ( if compiling native hadoop-pipes and to get the best HDFSencryption performance
)
*Jansson C XML parsing library ( if compiling libwebhdfs )
*Linux FUSE (Filesystem in Userspace) version 2.6 or above ( if compilingfuse_dfs )
*Internet connection for first build (to fetch all Maven and Hadoopdependencies)
0、环境要求
*Unix System
*JDK 1.7+
*Maven 3.0 or later
*ProtocolBuffer 2.5.0
我的hadoop编译环境是:
Centos7
jdk1.8
Maven3.3.9
ProtocolBuffer2.5.0
我的本机开发环境:
MacOS10.10.5
eclipseMars.2
1、官网下载hadoop源码包:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2-src.tar.gz
2、解压,进入解压目录:
[root@hq-centos7~]# cd hadoop-2.7.2-src/
3、安装hadoop-maven-plugins,进入下级hadoop-maven-plugins目录,执行maven安装:
[root@hq-centos7hadoop-2.7.2-src]# cd hadoop-maven-plugins/
[root@hq-centos7hadoop-maven-plugins]# mvn install
4、进入根目录构建eclipse工程文件:
[root@hq-centos7hadoop-maven-plugins]# cd ..
[root@hq-centos7hadoop-2.7.2-src]# mvn eclipse:eclipse -DskipTests
5、构建完成之后,把hadoop-2.7.2-src目录内容都拷贝到开发环境机器,导入到eclipse:[File] > [Import] >[Maven]>[Existing Maven Projects]
注意:拷贝时,注意隐藏文件也要拷贝。我用ftp工具拷贝目录文件时,隐藏文件没有拷贝,导致导入到eclipse中时编译错误。隐藏文件主要包括.classpath、.project等eclipse文件,由mvn eclipse:eclipse -DskipTests时生成,不拷贝过去的话,相关eclipse项目配置就会没有,导致出错。
6、导入后eclipse,继续报错。
错误1:java build path中保留了编译环境(linux环境)下的jdk路径,直接删除引用即可。
错误2:pom.xml中executor元素报错:
鼠标移动错误上,提示见上图3个处理选项,选择第2项,问题解决。
错误3:Problems视图提示需要UpdateProject:
解决方法:右键报错项目->Maven->Update Project,选择上"Force Update ofSnapshots/Realease",点击“OK”
错误4:Spark Streaming的Java Build Path->Source,使用了编译环境(linux)下的路径,提示找不到路径。解决方法:直接删掉即可。
错误5:hadoop-common项目报错,报错类是在src/test/java下,属于测试类,该错误可以不用管。
错误6:hadoop-hdfs项目报错,主要是xml提示错误,可以不用管。
至此,除了hadoop-common、hadoop-hdfs两个项目提示有错(这两个项目的错误可以不用管,不影响使用),其它项目都构建正确。