下载hadoop源码
a. 进入hadoop的下载镜像地址进行下载
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 选择需要下载的版本
点击下载,下载后,解压(我解压到E盘下)
安装JDK(建议使用1.7版本)
a. 如果已经有了jdk就可以跳过此步骤。
b. 如果没有安装就去下载安装并配置好环境变量,此处略过。
安装maven
a. 首先去apache maven的官网上下载mavem
(http://maven.apache.org/download.cgi),下载后解压(我解压到D:\software\maven)
b. 为了maven下载依赖快,可以配置国内的私服,此处配置的是自己搭建的私服。
c. 配置maven环境变量
添加 M2_HOME=D:\software\maven 环境变量 ,再在path环境变量中添加%M2_HOME%\bin;
d. 验证进入cmd命令 输入 mvn-v 如果出现Apache Maven 3.0.5 版本信息,说明安装成功。
安装protoc-2.5.0-win32
a. 解压,然后将里面的protoc.exe,放到一个Path环境变量的路径中,或者在path中配置(在path中添加此配置C:\protoc)
a. 验证 进入cmd命令 输入 protoc--version 如果出现protoc --version说明安装成功。
对源码进行处理
a. 首先下载hadoop所需要的插件
进入源码根目录下的hadoop-maven-plugins目录(E:\hadoop-2.6.4-src\hadoop-maven-plugins) 执行 mvn install 成功后显示BUILD SUCCESS。
b. 再进入hadoop源码的根目录(E:\hadoop-2.6.4-src) 然后执行mvn eclipse:eclipse -DskipTests (这里参数-DskipTests是指忽略工程里的测试test文件,然后生成的是eclipse的工程 )
eclipse导入源码
a. 打开Eclipse,最后专门建一个workspace(即建一个专门目录),执行菜单命令:File->Import,弹出对话框后,在General下面选择Existing Projects into Workspace,然后定位到源代码根目录,点击“Finish”按钮导入。
解决可能出现的问题
问题一:
ERROR: /hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/TestAvroSerialization.java显示没有AvroRecord类。
需要下载avro-tools-x.x.x.jar文件(http://mirrors.hust.edu.cn/apache/avro/)。可以到avro.apache.org上面找最新地址或者最新版本。
进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\avro”执行命令,java-jar D:\softwareData\avro-tools-1.7.7.jar compile schema avroRecord.avsc..\java 其中avsc文件是avro的模式文件,上面命令是要通过模式文件生成相应的.java文件。
问题二:
ERROR: /hadoop-common/src/test/java/下报错 org.apache.hadoop.ipc.protobuf.TestProtos和org.apache.hadoop.ipc.protobuf.TestRpcServiceProtos类不存在。
进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\proto”,执行protoc--java_out=..\java *.proto 命令(protoc就是在上面下载的protoc程序)。
问题三:
ERROR:hadoop-streaming 异常
在eclipse中,右键单击hadoop-streaming项目,选择“Properties”,左侧栏选择JavaBuild Path,然后右边选择Source标签页,出错的是路径。
点击“Link Source按钮”,选择被链接的目录为“<你的源代码根目录>/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf”,链接名可以使用显示的(也可以随便取);
inclusionpatterns中添加capacity-scheduler.xml,exclusion patters中添加**/*.java,这个信息与出错的那项一样;完毕后将出错的项删除。刷新hadoop-streaming项目。