编译cdh4-hadoop的eclipse插件

电脑为纯净版本,即什么编译工具之类的都没有安装

1、安装Maven

首先下载Maven软件包,下载后解压,设置MAVEN_HOME和PATH变量。设置好后,可以使用mvn -version检查是否安装成功。

解压命令

tar -zvxf apache-maven-3.1.1-bin.tar.gz
在最后一行加入:#vi /etc/profile

export MAVEN_HOME=/usr/local/ maven

export PATH=$PATH:$MAVEN_HOME/bin

保存后退出,执行:

source /etc/profile

查看是否安装成功。

#mvn –version

2、安装autotool和ant

Gun

sudo apt-get install autoconf 

automake 

libtool 

ant

3、安装protobuf

下载地址http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.bz2

解压: tar jxvf protobuf-2.4.1.tar.bz2

次执行:./configure,   make,   sudo make install,这三个命令安装ProtoBuffer

使用protoc --version检查ProtoBuffer是否安装成功

protoc –version

libprotoc 2.4.1

 

标明protobuf安装成功。

4、然后编译eclipse-plugin插件

需要将${HADOOP_HOME}/share/hadoop/mapreduce1下面的所有jar包拷贝到

${HADOOP_HOME}/src/hadoop-mapreduce1-project 目录下面

将${HADOOP_HOME}/share/hadoop/mapreduce1/lib下面的所有内容拷贝到

${HADOOP_HOME}/src/hadoop-mapreduce1-project /lib目录下面

<1> 需要定义reactor.repo的url:

 在hadoop/src/hadoop-mapreduce1-project/ivy/ivysettings.xml文件中添加:

 <propertyname="reactor.repo"
           value="http://repo1.maven.org/maven2/"
  override="false"/>

<2>修改build.xml文件中的3处地方。

a.property中增加eclipse.name属性,指向eclipse的目录,这样编译时可以找到eclipse的类;增加version属性,与当前hadoop版本一致,版本号会成为jar包文件名的一部分。

<span style="font-family:Microsoft YaHei;font-size:14px;">  <property name="eclipse.home" location="/u/eclipse" />
  <property name="version" value="2.0.0"/></span>

 PS:上面这步其实也可以不做,可以在调用ant时用参数传进去,类似这样:$ant -Declipse.home=/u/eclipse -Dversion=1.2.1
 b.idclasspathpath中增加hadoop相关jar包的引用,这样在编译时就不会报找不到hadoop的类了。


<span style="font-family:Microsoft YaHei;font-size:14px;"><fileset dir="${hadoop.root}">
      <include name="**/*.jar" />
    </fileset></span>


c.改完上面的,当我们在编译的时候,那些需要的JAR包并没有同时添加到生成的JAR内,这样会有错误,所以我们要修改MANIFIEST.MF文件,相信搞过可运行JAR包的朋友都清楚这个文件用一个JAR来说是多么的重要.在同级目录下找到META-INF/MANIFEST.MF,找到Bundle-ClassPath:,然后添加如下:

<span style="font-family:Microsoft YaHei;font-size:14px;">classes/,lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-cli-1.2.jar
</span>
注意,这一大段不要换行,否则在生成JAR包时会报错。

d.在jar的target中增加相关的hadoop类,这样eclipse可以在运行时连接和断开hadoop。将插件放入eclipse中,而不能new hadoop Location时就是因为缺少jar包造成的


<span style="font-family:Microsoft YaHei;font-size:14px;"><!-- <copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
    <copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>
    -->

    <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"/></span>


具体版本如下所示。

然后在${HADOOP_HOME}/src/hadoop-mapreduce1-project/src/contrib/eclipse-plugin目录下面执行ant命令

执行该命令前需要配置:然后在${HADOOP_HOME}/src/hadoop-mapreduce1-project/src/contrib/eclipse-plugin 目录下的build.xml文件。这个网上有很多。根据你的hadoop目录和eclipse目录修改相应的属性,以及添加相应的jar包等。

编译成功后会在

${HADOOP_HOME}/src/hadoop-mapreduce1-project/build/contrib/eclipse-plugin/目录下生成

hadoop-eclipse-plugin-2.0.0-mr1-cdh4.4.0.jar文件。这个就是对应的eclipse包。

 

如果编译时出现卡顿,可以ant clean 然后再重新编译

注意,编译出来的hadoop-eclipse-plugin-2.0.0-mr1-cdh4.3.0.jar插入到eclipse里,虽然能显示DFSLocaltion,和Mapreduce.但是右击“NewHadoop Location”却没有反应。

这个是由于缺少jar包造成的。CDH4.2及以前的版本,只需要添加如下包即可:

<span style="font-family:Microsoft YaHei;font-size:14px;">   <copyfile="${hadoop.root}/hadoop-core-${version}.jar"tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/>
   <copyfile="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/commons-configuration-1.6.jar"  todir="${build.dir}/lib"verbose="true"/>
   <copy file="${hadoop.root}/lib/commons-httpclient-3.1.jar"  todir ="${build.dir}/lib"verbose="true"/>
   <copy file="${hadoop.root}/lib/commons-lang-2.5.jar"  todir ="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  todir ="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  todir ="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/hadoop-common-2.0.0-cdh4.2.0.jar"  todir="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/hadoop-auth-2.0.0-cdh4.2.0.jar"  todir="${build.dir}/lib"verbose="true"/>
   <copyfile="${hadoop.root}/lib/hadoop-hdfs-2.0.0-cdh4.2.0.jar"  todir="${build.dir}/lib"verbose="true"/></span>

而CDH4.3,CDH4.4则需要下面的包。

<span style="font-family:Microsoft YaHei;font-size:14px;">    <copyfile="${hadoop.root}/hadoop-core-${version}.jar"tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/>
    <copyfile="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/commons-configuration-1.6.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/commons-httpclient-3.1.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/commons-lang-2.5.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copyfile="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copy file="${hadoop.root}/lib/hadoop-common-2.0.0-cdh4.4.0.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/hadoop-auth-2.0.0-cdh4.4.0.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/hadoop-hdfs-2.0.0-cdh4.4.0.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/slf4j-log4j12-1.6.1.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/slf4j-api-1.6.1.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/log4j-1.2.17.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/protobuf-java-2.4.0a.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/lib/hadoop-annotations-2.0.0-cdh4.4.0.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copyfile="${hadoop.root}/hadoop-tools-2.0.0-mr1-cdh4.4.0.jar"  todir="${build.dir}/lib"verbose="true"/>
    <copy file="${hadoop.root}/lib/guava-11.0.2.jar"  todir="${build.dir}/lib"verbose="true"/></span>

将hadoop-eclipse-plugin-2.0.0-mr1-cdh4.4.0.jar拷贝到eclipse/plugin目录下,重启eclipse。会发现,上图中左侧"ProjectExplorer"下面发现"DFS Locations",说明Eclipse已经识别刚才放入的HadoopEclipse插件了。

5、将hadoop-eclipse-plugin放到eclipse中,完成插件编译

(1)选择"Window"菜单下的"Preference",然后弹出一个窗体,在窗体的左侧,有一列选项,里面会多出"Hadoop Map/Reduce"选项,然后打开MapReduce视图Window -> Open Perspective-> Other选择Map/Reduce,图标是个蓝色的象

在console窗口那块会多一个黄色的大象Map/ReduceLocation的图标,选中它在其下面空白处右击鼠标,会出现三个选择项NewHadoop Location , Edit Hadoop Location和Delete.鼠标左键单击NewHadoop Location 选项来添加新的Location.进入配置Location的界面

Location name:取个有意义的名字,没有限制

Map/Reduce Master:JobTracker的IP和端口,根据mapred-site.xml中配置的mapred.job.tracker来填写
DFS Master:Name Node的IP和端口,根据core-site.xml中配置的fs.default.name来填写
本文的CDH4.4是CDH HA配置,HDFS和Jobtracker都做了HA,所以配置参数跟非HA稍微有不同,但是依然是一台机器在工作,所以只要查询相应的端口号即可。
我的hadoop完全分布式cluster结构配置如上图所示,其中DFS端口号为8020,MapReduce端口号8021。点击Finish就OK了。


依照此例还可创建别的自己需要的Location,如pseudo。此时在Porject Explorer的DFS Locations下会出现刚刚配置好的Location,开启相应的hadoop集群进程就可以点击查看目录结构了,而且点击右键,可以进行新建文件夹、删除文件夹、上传文件、下载文件、删除文件等操作。

注意:每一次操作完在eclipse中不能马上显示变化,必须要点击鼠标右键并refresh一下才可以看到最新的数据。

 

参考:http://blog.csdn.net/lostage2/article/details/15339453

             http://f.dataguru.cn/thread-185468-1-1.html

             http://cxshun.iteye.com/blog/1876366


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值