Ivy安装及编译hadoop2x-eclipse-plugin

本文介绍了如何使用Apache Ivy安装和编译hadoop2x-eclipse-plugin。首先确保具备JDK和ANT环境,然后下载Ivy,将其jar文件放入ANT的lib目录。通过运行ant命令进行安装验证。接着,详细讲述了如何解决编译hadoop2x-eclipse-plugin过程中遇到的问题,包括修改build文件和处理jar版本不对应的情况。最后,提供了编译成功后的插件位置和Ivy默认下载目录。

之前项目一直采用Maven构建(Maven构建真正的J2EE项目)。最近在github下载一些源码来编译,发现很多项目都开始支持apache Ivy。至此以hadoop2x-eclipse-plugin为例,写篇文章记录一下。

Apache Ivy 是一个优秀的管理(记录、跟踪、解析和报告)项目依赖的工具,可与Apache Ant紧密集成。本篇以2.4.0版本为基础。

Apache Ivy安装环境

1,JDK

2,ANT

安装好上述两个,配置好环境变量,接下来开始安装Ivy。

 

安装Apache Ivy

1,下载Ivy,下载地址:http://ant.apache.org/ivy/download.cgi

2,解压Apache Ivy

3,解压后,将apache-ivy-2.4.0/ivy-2.4.0.jar拷贝到ANT_HOME/lib目录下

4,下载并安装

如果使用ant 1.6.0或者更高版本(本来之前安装的apache-ant-1.9.4)。可以直接在src/example/hello-ivy 目录并运行ant命令,如果构建成功,你就成功的安装了ivy。如下图:

如果使用ant1.5.1或者更高的版本,可以按如下例子修改bulid文件:
- 删除头部命名空间的:xmlns:ivy="antlib:org.apache.ivy.ant"
- 增加ivy任务的定义:

 

  <taskdef name="ivy-configure" classname="org.apache.ivy.ant.IvyConfigure"/>
  <taskdef name="ivy-resolve" classname="org.apache.ivy.ant.IvyResolve"/>
  <taskdef name="ivy-retrieve" classname="org.apache.ivy.ant.IvyRetrieve"/>
  <taskdef name="ivy-publish" classname="org.apache.ivy.ant.IvyPublish"/> 

 

- 使用ivy-xxx替代ivy:xxx
如果构建成功,你就成功的安装了ivy。

 

编译hadoop2x-eclipse-plugin

下载地址:https://github.com/winghc/hadoop2x-eclipse-plugin

如遇如下错误:

 

    [javac] D:\hadoop2x-eclipse-plugin-2.4.1\src\contrib\eclipse-plugin\build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 45 source files to D:\hadoop2x-eclipse-plugin-2.4.1\build\contrib\eclipse-plugin\classes

 

则将:

 

 <target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
    <echo message="contrib: ${name}"/>
    <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     deprecation="${javac.deprecation}">
     <classpath refid="classpath"/>
    </javac>
  </target>

改成

 

 

 <target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
    <echo message="contrib: ${name}"/>
    <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     deprecation="${javac.deprecation}" includeAntRuntime="false">
     <classpath refid="classpath"/>
    </javac>
  </target>

其他可能会遇到hadoop安装目录中jar版本不对应的情况,我们可以根据报错信息下载相对应的jar版本,然后替换掉hadoop安装目录的jar即可。

 

 

- cd src/contrib/eclipse-plugin

- ant jar -Dversion=2.4.1 -Dhadoop.version=2.4.1 -Declipse.home=E:\\tools\\eclipse -Dhadoop.home=E:\\tools\\hadoop-2.4.1

 

D:\hadoop2x-eclipse-plugin-2.4.1\src\contrib\eclipse-plugin>ant jar -Dversion=2.4.1 -Dhadoop.version=2.4.1 -Declipse.home=D:\\tools\\eclipse -Dhadoop.home=D:\\tools\\hadoop-2.4.1
Buildfile: D:\hadoop2x-eclipse-plugin-2.4.1\src\contrib\eclipse-plugin\build.xml

check-contrib:

init:
     [echo] contrib: eclipse-plugin

init-contrib:

ivy-probe-antlib:

ivy-init-antlib:

ivy-init:
[ivy:configure] :: Apache Ivy 2.4.0 - 20141213170938 :: http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file = D:\hadoop2x-eclipse-plugin-2.4.1\ivy\ivysettings.xml

ivy-resolve-common://这个地方会卡很久,但是如果你有翻墙软件的话,下载起来就很快了。

ivy-retrieve-common:
[ivy:cachepath] DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead
[ivy:cachepath] :: loading settings :: file = D:\hadoop2x-eclipse-plugin-2.4.1\ivy\ivysettings.xml

compile:
     [echo] contrib: eclipse-plugin

jar:
     [copy] Copying 1 file to D:\hadoop2x-eclipse-plugin-2.4.1\build\contrib\eclipse-plugin\lib
     [copy] Copying D:\hadoop-2.4.1\share\hadoop\common\lib\htrace-core-3.0.4.jar to D:\hadoop2x-eclipse-plugin-2.4.1\build\contrib\eclipse-plugin\lib\htrace-core-3.0.4.jar
      [jar] Building jar: D:\hadoop2x-eclipse-plugin-2.4.1\build\contrib\eclipse-plugin\hadoop-eclipse-plugin-2.4.1.jar

BUILD SUCCESSFUL
Total time: 7 minutes 13 seconds

 

编译成功,hadoop的eclipse的插件包在:${hadoop2x-eclipse-plugin}/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.4.1.jar

 

ivy.default.ivy.user.dir是Ivy的工作目录,默认情况下载user.home下面,Ivy默认下载的东西可以在这个目录查看。

参考:http://ant.apache.org/ivy/history/latest-milestone/install.html

 

### Hadoop2x Eclipse PluginHadoop 3.1.3版本的兼容性分析 Hadoop2x Eclipse Plugin最初设计用于支持较早版本的Hadoop(如2.x系列),而Hadoop 3.x引入了许多架构上的变化和API更新,这可能导致插件与其不完全兼容。具体来说: #### 插件版本与Hadoop版本的关系 Hadoop-eclipse-plugin需要严格匹配Hadoop的核心库版本。如果使用的是针对Hadoop 2.x开发的插件,则可能无法正常工作于Hadoop 3.x环境之中[^5]。这是因为Hadoop 3.x对许多内部类进行了重构或废弃操作,这些改动可能会破坏Eclipse插件的功能。 #### 已知问题描述 根据用户的尝试记录,在将`hadoop-eclipse-plugin-2.6.0`放置到Eclipse plugins目录后未能看到预期功能菜单项的情况表明该特定版本确实不适合当前所运行的Hadoop实例版本[^1]。即使更换至接近目标版本号(例如3.1.2),虽然能够部分加载但仍然存在功能性障碍比如创建新MapReduce作业时无响应等问题[^3]。 #### 自定义构建的可能性探讨 为了使Hadoop2x Eclipse Plugin适配更高版本的Hadoop, 可考虑自行编译适合的具体步骤包括但不限于调整源码中依赖项以反映最新版Hadoop组件的实际路径以及修正任何因升级引起冲突之处[^2]: ```bash # 设置环境变量以便Ant工具能正确识别Java SDK位置 export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH cd /path/to/hadoop2x-eclipse-plugin-source/ ant clean jar -Dversion=3.1.3 -Declipse.home=/path/to/eclipse ``` 以上命令序列旨在清理旧构建产物并依据指定参数重新打包适用于Hadoop 3.1.3的新插件包。然而需要注意的是此过程复杂度较高且成功率取决于开发者对于两者间差异理解程度如何。 另外值得注意的一点是,Hortonworks曾提供过官方维护过的更现代化一些替代方案即Ambari Metrics Service GUI或者Zeppelin Notebook作为补充选项来弥补传统MR视图局限性;Cloudera同样也有相应产品线(Cloud CDP)可供选择. 尽管如此, 如果坚持沿用原生方式实现集成的话, 上述方法不失为一种努力方向. ```python import os def check_hadoop_version(): hadoop_home = "/usr/local/hadoop" version_file_path = f"{hadoop_home}/VERSION" if not os.path.exists(version_file_path): raise FileNotFoundError(f"Hadoop VERSION file does not exist at {version_file_path}") with open(version_file_path, 'r') as vf: content = vf.read() print(content) check_hadoop_version() ``` 上述脚本可用于验证本地安装好的Hadoop确切版本信息从而辅助判断下一步行动方针。 ### 结论 综上所述,Hadoop2x Eclipse Plugin理论上并不天然支持Hadoop 3.1.3这样的高阶变体形式。要达成无缝衔接效果要么寻找社区贡献者已经预先处理完毕的相关制品要么亲自动手完成定制化改造流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值