1.版本说明
操作系统:ubantu16.04.1 Desktop
hadoop:hadoop-2.7.3-src
eclipse:java-neon
其他需要安装软件说明:
jdk1.8 maven3.0.5 ProtocalBuffer-2.5.0
安装教程请参考我的另一篇博客:http://blog.youkuaiyun.com/blue_it/article/details/54133407
2.导入前准备
将hadoop-2.7.3-src.tar.gz解压到eclipse的workspace目录,如下图:
cd进入hadoop-2.7.3-src/hadoop-maven-plugins/目录,输入如下命令:
mvn install
如下图:
执行成功会提示如下信息:
cd 进入hadoop-2.7.3-src目录,输入如下命令:
mvn eclipse:eclipse -DskipTests
执行完成会提示build success。
3 导入
打开eclipse,点击File ---> Import --->Existing Maven Projects
点击,找到workspace下的hadoop-2.7.3-src文件夹,选中,点击finish,即开始导入hadoop源码
导入过程中会弹出对话框选择Resolve all later,然后点击finish即完成项目的导入。
4 错误处理
源码导入后,会看到大概有五十多个项目,其中部分出现红叉,有一个出现红色感叹号。红叉大概有两类原因引起,pom.xml错误和类库无法找到,红色感叹号由资源文件未找到引起。
- 解决pom.xml错误
在eclipse菜单栏选取Windows ---> Preferences ---> Maven ---> Lifecycle Mappings,如下图:
点击Open Workspace Lifecycle Mappings Metadata,即可看到eclipse中打开了lifecycle-mappings-metadata.xml文件,关闭Prefences窗口,编辑lifecycle-mappings-metadata.xml文件,将如下xml内容,复制到lifecycle-mappings-metadata.xml中对原来的文件内容进行覆盖。
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>1.7</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<versionRange>2.5</versionRange>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<versionRange>3.4</versionRange>
<goals>
<goal>descriptor</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-maven-plugins</artifactId>
<versionRange>2.7.3</versionRange>
<goals>
<goal>protoc</goal>
<goal>version-info</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<versionRange>1.5</versionRange>
<goals>
<goal>bundle</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-maven-plugins</artifactId>
<versionRange>1.5</versionRange>
<goals>
<goal>bundle</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<versionRange>1.7.4</versionRange>
<goals>
<goal>schema</goal>
<goal>protocol</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
编辑文件完成后,保存,再次打开Windows ---> Preferences ---> Maven ---> Lifecycle Mappings,一次点击Rload Workspace Lifecycle Mappings Metadata、 Apply、 OK。
选择Update Project …即可修正pom.xml出现红叉的错误。
- 解决红叉错误: org.apache.hadoop.ipc.protobuf.xxxx找不到错误
进入hadoop-2.7.3-src/hadoop-common-project/hadoop-common/src/test/proto目录
在命令行中输入如下命令:
protoc --java_out=../java *.proto
执行完成后,选中项目,F5刷新项目,即可解决错误。
- 解决红叉错误:AvroRecord cannot be resolved to a type TestAvroSerialization.java
下载下载 avro-tools-1.7.4.jar,放在hadoop-2.7.3-src/hadoop-common-project/hadoop-common/src/test/avro/目录下
然后执行下述命令:
java -jar avro-tools-1.7.4.jar compile schema avroRecord.avsc ../java
然后执行下述命令:
java -jar avro-tools-1.7.4.jar compile schema avroRecord.avsc ../java
执行完成后,选中项目,F5刷新项目,即可解决错误。
- 解决红色感叹号:Project 'hadoop-streaming' is missing required source……
选定项目右键,properties->Java Build Path->Source->选定带红叉的项->Remove,然后关闭窗口即可。