阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

编译Hadoop 1.2.1 Hadoop-eclipse-plugin插件

204次阅读
没有评论

共计 4677 个字符,预计需要花费 12 分钟才能阅读完成。

编译 Hadoop1.x.x 版本的 eclipse 插件为何如此繁琐?

个人理解,ant 的初衷是打造一个本地化工具,而编译 hadoop 插件的资源间的依赖超出了这一目标。导致我们在使用 ant 编译的时候需要手工去修改配置。那么自然少不了设置环境变量、设置 classpath、添加依赖、设置主函数、javac、jar 清单文件编写、验证、部署等步骤。

那么我们开始动手

主要步骤如下

  • 设置环境变量
  • 设置 ant 初始参数
  • 调整 java 编译参数
  • 设置 java classpath
  • 添加依赖
  • 修改 META-INF 文件
  • 编译打包、部署、验证

具体操作

设置语言环境 

$ export LC_ALL=en

设置 ant 初始参数
修改 build-contrib.xml 文件

$ cd /hadoop-1.2.1/src/contrib$
vi build-contrib.xml

编辑并修改 hadoop.root 值为实际 hadoop 解压的根目录

<property name=”hadoop.root” location=”/Users/kangfoo-mac/study/hadoop-1.2.1″/>

添加 eclipse 依赖

<property name=”eclipse.home” location=”/Users/kangfoo-mac/work/soft/eclipse-standard-kepler-SR1-macosx-cocoa” />

设置版本号

<property name=”version” value=”1.2.1″/>

调整 java 编译设置
启用 javac.deprecation

$ cd /hadoop-1.2.1/src/contrib$
vi build-contrib.xml

<property name=”javac.deprecation” value=”off”/>

改为

<property name=”javac.deprecation” value=”on”/>

ant 1.8+ 版本需要额外的设置 javac includeantruntime=“on”参数

<!– ====================================================== –>

<!– Compile a Hadoop contrib’s files –>
<!– ====================================================== –>
<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=”on”>
<classpath refid=”contrib-classpath”/>
</javac>
</target>

修改编译 hadoop 插件 classpath

$ cd hadoop-1.2.1/src/contrib/eclipse-plugin$
vi build.xml

添加 文件路径 hadoop-jars

<path id="hadoop-jars">
<fileset dir="${hadoop.root}/">
<include name="hadoop-*.jar"/>
</fileset>
</path>

将 hadoop-jars 添加到 classpath

<path id="classpath">
<pathelement location="${build.classes}"/>
<pathelement location="${hadoop.root}/build/classes"/>
<path refid="eclipse-sdk-jars"/>
<path refid="hadoop-jars"/>
</path>

修改或添加额外的 jar 依赖
因为我们根本都没有直接编译过 hadoop, 所以就直接使用 ${HADOOP_HOME}/lib 下的资源. 需要注意,这里将依赖 jar 的版本后缀去掉了。
同样还是在 hadoop-1.2.1/src/contrib/eclipse-plugin/build.xml 文件中修改或添加

$ cd hadoop-1.2.1/src/contrib/eclipse-plugin
$ vi build.xml

找到 <!– Override jar target to specify manifest –> 修改 target name 为 jar 中的 copy file 的路径,具体如下:

<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" tofile="${build.dir}/lib/commons-cli.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" tofile="${build.dir}/lib/commons-configuration.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" tofile="${build.dir}/lib/commons-httpclient.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar" tofile="${build.dir}/lib/commons-lang.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-core-asl.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-mapper-asl.jar" verbose="true"/>

修改 jar 清单文件

cd ./hadoop-1.2.1/src/contrib/eclipse-plugin/META-INF

vi MANIFEST.MF

找到这个文件的 Bundle-ClassPath 这一行,然后,修改成

Bundle-ClassPath: classes/,lib/commons-cli.jar,lib/commons-httpclient.jar,lib/hadoop-core.jar,lib/jackson-mapper-asl.jar,lib/commons-configuration.jar,lib/commons-lang.jar,lib/jackson-core-asl.jar

请保证上述字符占用一行,或者满足 osgi bundle 配置文件的换行标准语法也行的。省事就直接写成一行,搞定。

新建直接打包并部署 jar 到 eclipse/plugin 目录的 target

cd hadoop-1.2.1/src/contrib/eclipse-plugin
vi build.xml

添加 target 直接将编译的插件拷贝到 eclipse 插件目录

<target name="deploy" depends="jar" unless="skip.contrib">
<copy file="${build.dir}/hadoop-${name}-${version}.jar" todir="${eclipse.home}/plugins" verbose="true"/> </target>

将 ant 默认 target default=“java” 改为 default=“deploy”

<project default="deploy" name="eclipse-plugin">

编译并启动 eclipse 验证插件

ant -f ./hadoop-1.2.1/src/contrib/eclipse-plugin/build.xml

启动 eclipse,新建 Map/Reduce Project, 配置 hadoop location. 验证插件完全分布式的插件配置截图和 core-site.xml 端口配置

效果图

编译 Hadoop 1.2.1 Hadoop-eclipse-plugin 插件

相关源文件
hadoop-1.2.1/src/contrib/build-contrib.xml
hadoop-1.2.1/src/contrib/eclipse-plugin/build.xml
hadoop-1.2.1/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF
hadoop-eclipse-plugin-1.2.1.jar

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2014 年资料 / 1 月 /21 日 / 编译 hadoop 1.2.1 Hadoop-eclipse-plugin 插件

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

参考 Linux 下 Hadoop Eclipse 插件编译安装 http://www.linuxidc.com/Linux/2013-07/86931.htm

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4677字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中