背景:
Hadoop课上,老师推荐了 hadoop eclipse plugin, 感觉挺方便的。通过一个插件访问HDFS, 比API, HDFS Shell 方式方便许多,当然,它的功能也比较简单。
对于2.9.2版本,网上的资源相对较少,参考了一些文章之后,折腾了几天,终于搞定。本文总结了一些个人经验,希望有所帮助。
主要参考了这两篇:
本文采用的编译环境:
Ubuntu 19.04 (主)/ Windows10 1903(次)
Hadoop 2.9.2
Eclipse 2019-09 + JDK 1.8 + Ant 1.10.7
环境配置
点击链接可以下载安装包
- Hadoop hadoop-2.9.2.tar.gz
- Eclipse 2019-09 eclipse-java-2019-09-R-linux-gtk-x86_64.tar.gz
- Jdk + Ant
win apache-ant-1.10.7-bin.zip
linux apache-ant-1.10.7-bin.tar.gz
sudo vim /etc/profile
文末加入
export ANT_HOME=/opt/apache-ant
export JAVA_HOME=/opt/java/jdk1.8.0_221
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$ANT_HOME/bin:${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
保存退出,使之生效
source /etc/profile
下载项目https://github.com/winghc/hadoop2x-eclipse-plugin
开始编译
进入hadoop2x-eclipse-plugin 目录
/src/contrib/eclipse-plugin/build.xml
1. 修改 ${hadoop2x-eclipse-plugin}/src/contrib/eclipse-plugin/build.xml
130行左右,添加并修改如下内容,解决eclipse中new location无反应的问题
<copy file="${hadoop.home}/share/hadoop/common/lib/htrace-core4-${htrace.version}-incubating.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.home}/share/hadoop/common/lib/woodstox-core-5.0.3.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.home}/share/hadoop/common/lib/stax2-api-3.1.4.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.home}/share/hadoop/common/lib/stax-api-1.0-2.jar" todir="${build.dir}/lib" verbose="true"/>
</manifest> 前修改并添加如下内容
!!!注意缩进,最后一行无逗号
lib/htrace-core4-${htrace.version}-incubating.jar,
lib/woodstox-core-5.0.3.jar,
lib/stax2-api-3.1.4.jar,
lib/stax-api-1.0-2.jar,
lib/hadoop-hdfs-client-2.9.2.jar
去掉depends="init, ivy-retrieve-common"
,避免卡在开始
2. 修改 ${hadoop2x-eclipse-plugin}/ivy/libiries.properties
更改对应行为如下内容,解决jar包版本不匹配的问题
commons-collections.version=3.2.2
log4j.version=1.2.17
slf4j-api.version=1.7.25
slf4j-log4j12.version=1.7.25
htrace.version=4.1.0
3.修改${hadoop2x-eclipse-plugin}/src/contrib/eclipse-plugin/plugin.xml
170行左右添加如下内容,解决DFS locations点击右键无反应的问题
<extension point="org.eclipse.ui.commands">
<command id="dfs.browser.action.delete"
name="Delete">
</command>
<command id="dfs.browser.action.disconnect"
name="Disconnect">
</command>
<command id="dfs.browser.action.refresh"
name="Refresh">
</command>
<command id="dfs.browser.action.download"
name="Download from DFS">
</command>
<command id="dfs.browser.action.upload_files"
name="Upload files to DFS">
</command>
<command id="dfs.browser.action.upload_dir"
name="Upload directory to DFS">
</command>
<command id="dfs.browser.action.open"
name="view">
</command>
<command id="dfs.browser.action.reconnect"
name="Reconnect">
</command>
<command id="dfs.browser.action.mkdir"
name="Create new directory">
</command>
</extension>
4.正式编译
hadoop2x-eclipse-plugin-master/src/contrib/eclipse-plugin
下
打开terminal
ant jar -Dversion=2.9.2 -Dhadoop.version=2.9.2 -Declipse.home=/opt/eclipse -Dhadoop.home=/home/kiko/hadoop
注意 !!! 路径都是绝对路径
win cmd中,要用双引号括着路径,不然的话会有错误
出现BUILD SUCCEESFUL
即构建成功
得到的jar包在hadoop2x-eclipse-plugin-master\build\contrib\eclipse-plugin
目录下
5. 解决No FileSystem for scheme: hdfs 和
class org.apache.hadoop.hdfs.DistributedFileSystem not found 问题
虽然构建成功了,但使用的时候依然会有错误!
解决方法:
修改hadoop-eclipse-plugin-2.9.2.jar/lib/hadoop-common-2.9.2.jar/core-default.xml,添加
<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
<description>The FileSystem for hdfs: uris.</description>
</property>
逐层替换,得到新的 hadoop-eclipse-plugin-2.9.2.jar
6. 安装
注:理论上,这个jar包是 linux windows 通用的
将jar包放进plugins 目录下,新建工作空间,
清理原来的设置,清理原来的设置,清理原来的设置
如果不清理,极有可能出现错误(插件正常,但就是配置不了)
这里提供一个办法,到eclipse/configeration目录下,
删除 除了 .settings ,org.eclipse.core.runtime , config.ini 之外的文件
配置插件,检查是否可以正常使用 ✔?