Hadoop2 自己动手编译Hadoop的eclipse插件

前言:

      毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了。对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环境跑起来,然后在能用的基础上在多想想为什么。

      通过这三个礼拜(基本上就是周六周日,其他时间都在加班啊T T)的探索,我目前主要完成的是:

  1.在Linux环境中伪分布式部署hadoop(SSH免登陆),运行WordCount实例成功。 http://www.cnblogs.com/PurpleDream/p/4009070.html 

      2.自己打包hadoop在eclipse中的插件。  http://www.cnblogs.com/PurpleDream/p/4014751.html

      3.在eclipse中访问hadoop运行WordCount成功。

      所以我下边会分三次记录下我的过程,为自己以后查阅方便,要是能帮助到其他人,自然是更好了!

===============================================================长长的分割线====================================================================

正文:

      如果你想在eclipse中安装hadoop的插件,一个很重要的问题就是hadoop的版本与eclipse版本的匹配问题,如果不匹配,可能会导致很多问题。

综上,我在完成了在Linux的CentOS系统中安装hadoop并简单运行WordCount之后(具体参看本文前言中的博客链接),将学习的重点放到了hadoop的eclipse插件上。其实网上也有部分文章在介绍如何编写插件,但是由于我的eclispe版本是Juno,而之前在CentOS安装的是hadoop-1.0.1,所以没有找到完全匹配的成功案例。所以最终决定自己也动手变异一个自己的hadoop插件。

在有了这个想法之后,一开始会觉得特别困难,但是在真正去做之后,会发现很多问题其实还是可以解决的,只要你懂得如果使用百度和谷歌,多参考一下别人的文章,汲取精华,最终一定会成功的。

第一步,确定大致流程:

   1.首先我需要ant编译,然后就是hadoop-1.0.1.tar.gz这个安装包,还有就是eclipse。

2.针对我自己的环境,电脑是Win7,eclispe是Juno,下载了hadoop-1.0.1.tar.gz,就差ant之前没有安装。

第二步,安装ant:

   1.我参考的是这篇文章http://blog.csdn.net/yang382197207/article/details/10185251,我当时下载的是apache-ant-1.9.4,其他的步骤按照这篇文章介绍的配置就会成功。

第三步,在正式建立项目之前,我在介绍下我的环境: OS: windows 7,  Eclipse: Juno,  JDK: 1.6.0_43,  Hadoop: 1.0.1

1.首先在Eclipse中新建一个Java项目,名字叫hadoop-1.0.1-eclipse-plugin,其实这个名字你可以随意的。

2.解压hadoop-1.0.1.tar.gz,在解压后的目录中(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),依次将下面的文件放到项目中:

(1).将\hadoop-1.0.1\src\contrib\eclipse-plugin里面的所有文件以及\hadoop-1.0.1\src\contrib\build-contrib.xml拖拽到项目中

(2).将根目录\hadoop-1.0.1里的所有.jar文件拖拽到eclipse项目中bin目录下。

3.打开项目中的build-contrib.xml,做如下的配置:

(1).找到<property name="hadoop.root" location="hadoop-1.0.1解压缩后的目录"/>

(2).找到<property name="eclipse.home" location="自己的eclipse的目录"/>

(3).找到<property name="version" value="hadoop的版本号"/>

         可以参考我的配置,如图:

<property name="name" value="${ant.project.name}"/>
<property name="root" value="${basedir}"/>
<property name="hadoop.root" location="D:/SettingUp/ITSettingUp/Hadoop/hadoop-1.0/hadoop-1.0.1"/>
<property name="eclipse.home" location="D:/HaveSetted/ITHaveSetted/Eclipse"/>
<property name="version" value="1.0.1"/>  

4.打开项目中的build.xml,做如下的配置:

(1).将文件开头的 <import file="../build-contrib.xml"/> 修改为 <import file="build-contrib.xml"/>

(2).在<javac...>里如下图加入includeantruntime="on",效果如下:

<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="classpath"/>
    </javac>
</target>

(3).在<path id="classpath">中添加:<path refid="hadoop-jars"/>,效果如下:

<!-- Override classpath to include Eclipse SDK jars -->
<path id="classpath">
    <pathelement location="${build.classes}"/>
    <pathelement location="${hadoop.root}/build/classes"/>
    <path refid="eclipse-sdk-jars"/>
    <path refid="hadoop-jars"/>
</path>

(4).在<target name="jar" depends="compile" unless="skip.contrib">这个标签里,在<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>这个配置的下面添加如下几个jar包的配置:

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

最终效果如图:

<!-- Override jar target to specify manifest -->
  <target name="jar" depends="compile" unless="skip.contrib">
    <mkdir dir="${build.dir}/lib"/>
    <copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.0.1.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}/lib/commons-configuration-1.6.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-lang-2.4.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar"  todir="${build.dir}/lib" verbose="true"/>

    <jar
      jarfile="${build.dir}/hadoop-${name}-${version}.jar"
      manifest="${root}/META-INF/MANIFEST.MF">
      <fileset dir="${build.dir}" includes="classes/ lib/"/>
      <fileset dir="${root}" includes="resources/ plugin.xml"/>
    </jar>
</target>

(5).在文件末尾</project>标签之前添加配置:

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

5.打开hadoop-1.0.1的解压缩目录(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1),复制两个jar包到对应的目录文件夹,以我的文件目录结构举例如下:

(1).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\hadoop-core-1.0.1.jar 复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\这个文件夹中

(2).将D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib\commons-cli-1.2.jar复制到D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\build\ivy\lib\Hadoop\common这个文件夹中

6.再回到eclipse,打开项目中的\META-INF\MANIFEST.MF文件,做如下的添加:

Bundle-ClassPath: classes/,
 lib/hadoop-core-1.0.1.jar,
 lib/commons-cli-1.2.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/jackson-mapper-asl-1.8.8.ja, 

7.经过上边的配置,基本已经完成,我们可以编译项目了。右击build.xml文件选择 Run As Ant Build,编译成功,生成的hadoop-1.0.1-eclipse-plugin.jar在hadoop-1.0.1解压目录的\build\contrib\eclipse-plugin文件夹里面。

第四步,当然就是在eclipse中配置我们编译好的插件。

1.把hadoop-1.0.1-eclipse-plugin.jar文件放到eclipse安装目录的plugins中,重启eclipse。重启后,会在Window->Open Perspective->Other里,看到大象图标的Map/Reduce出现,或者是window->Preferences中看到Hadoop Map/Reduce这个选项。

2.window->Preferences中点击Hadoop Map/Reduce这个选项,将Hadoop的那个解压缩目录(我的是D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1)的路径配置上,配置效果图如下:

3.然后我们在Window->Open Perspective->Other里,点击Map/Reduce,切换到这个模式,截图如下:

4.切换到Map/Reduce模式后,我们看到画面(4)中的截图,点击右下角的两个小图标,测试有没有反应,如果有反应,暂时先别配置,这个我下篇博客会具体讲。如果怎么点都没有反应,则可以做如下操作:

(1).打开项目中的\META-INF\MANIFEST.MF文件,找到之前编译时,添加的Bundle-ClassPath: classes/  这个位置,之前我们添加了7个jar包的配置,再增加四个,如下:

 lib/hadoop-common-0.21.0.jar,
 lib/hadoop-hdfs-0.21.0.jar,
 lib/log4j-1.2.15.jar,
 lib/hadoop-mapred-0.21.0.jar

(2).然后我们还需要去网上下载这四个jar包放到下面的文件夹中,以我的目录举例:D:\SettingUp\ITSettingUp\Hadoop\hadoop-1.0\hadoop-1.0.1\lib。

(3).然后在重新编译即可,在替换原来的插件时,在重启eclipse的过程中,你可以这样做:先删除原来的插件,原来重启eclipse,确认Map/Reduce没了;然后再关掉eclipse,将新的插件放到plugins里,之后再次启动eclipse。解决这个问题时我在网上参考的文章是:http://blog.csdn.net/kky2010_110/article/details/7774747,大家也可以看看~。

(4).上边所提到的截图如下:

经过上边说的这些步骤,eclipse中的hadoop插件我们算是编译完了,这个过程中一定要注意的是,不要怕失败,多尝试,因为hadoop版本与eclipse版本是有关系的,所以导致你的版本和我的不太一致,可能会失败,但是也可能会成功。所以在这里再次提醒,注意文章开始,我对自己的环境的版本的介绍,尤其是eclipse和hadoop的版本。建议大家如果有时间的话,可以先不管版本,按照我的步骤先走一遍,如果实在是不成功的话,则可以找个和我一样的eclipse和hadoop版本,再体验一回。因为,我在这个过程中,就发现,由于是第一次学hadoop,不见到成功的效果,总觉得少点什么,总想见识一下,莫取笑哈~

至于下一步,如果配置Location和运行WordCount,我会在下一篇博客中具体说明,谢谢支持,觉得文章还不错的话,多多点赞,多多留言哈,这将使我充满动力!

时间: 2024-10-20 03:23:24

Hadoop2 自己动手编译Hadoop的eclipse插件的相关文章

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序

win7 64位下安装hadoop的eclipse插件并编写运行WordCount程序 环境: win7 64位 hadoop-2.6.0 步骤: 1.下载hadoop-eclipse-plugin-2.6.0.jar包 2.把hadoop-eclipse-plugin-2.6.0.jar放到eclipse安装目录下的plugins目录下 3.打开eclipse发现左边多出来一个DFS Locations 4.在win7上解压hadoop-2.6.0. 5.下载hadoop.dll.winuti

hadoop的eclipse插件

我使用的hadoop是2.9.2版本的,对应的eclipse插件也要使用2.9.2的,我自己编译了一份,上传到了百度网盘,下载地址如下: 链接:https://pan.baidu.com/s/11uM1tSeu-1zdTQrydfX5QA 提取码:p6y9 把插件放到eclipse的plugins目录,重启eclipse后,就可以使用这个插件了. 启动eclipse,右上角会多出一个Map/Reduce的Perspective,切换到该Perspective,下面会有Map/Reduce Loc

Hadoop学习之编译eclipse插件

近期准备開始学习Hadoop1.2.1的源码,感觉最好的方法还是能够在运行Hadoop及hadoop作业时跟踪调试代码的实际运行情况.因为选择的IDE为eclipse,所以准备编译一下hadoop的eclipse插件,以下就直接进入正题.Hadoop的eclipse插件源码位于hadoop-1.2.1/src/contrib/eclipse-plugin/中,直接进入该文件夹,在不做不论什么改动的情况下,在命令行输入ant,运行效果例如以下: [[email protected] eclipse

配置Hadoop的Eclipse开发环境

前言 在先前的文章(点击此处浏览)中,已经介绍了如何在Ubuntu Kylin操作系统下搭建Hadoop运行环境,而现在将在之前工作的基础上搭建Eclipse开发环境. 配置 开发环境:Eclipse 4.2 其他同先前 第一步 安装Eclipse4.2 在Eclipse官网获取到Eclipse然后解压到用户目录即可. 第二步 编译Hadoop的Eclipse插件 这一步可以选择使用别人编译好了的插件(需注意hadoop版本号 和编译时的Eclipse版本号要一致),也可以自行编译(较繁琐).

在fedora20下配置hadoop2.5.1的eclipse插件

我现在是把hadoop-2.5.1的路径是/opt/lib64/hadoop-2.5.1下面,然后将hadoop-2.2.0的路径是/home/hadoop/下载/hadoop-2.2.0,我的eclipse的路径是/opt/programming/atd-bundle/eclipse. 因为老师需要我们写mapreduce程序,所以现在需要配置hadoop的eclipse插件.之前在windows下面安装hadoop一直会有莫名其妙的问题,所以索性直接在linux下面装了.Linux下面还更简

hadoop-2.2.0配置eclipse插件(windows和linux平台)

目前配置eclipse插件主要有两个版本,一个是在windows下重新编译配置,另一个是在linux在重新配置编译. 下面逐步讲解在linux下编译-配置eclipse插件的过程. 环境: Ubuntu 12.04 64bit 3.2.0-29-generic eclipse-jee-luna-R-linux-gtk-x86_64.tar.gz Apache Ant(TM) version 1.8.2 JDK Version 1.7.0_67 安装前准备: Ant.jdk.eclipse.Apa

自己动手一步一步安装hadoop(含编译hadoop的native本地包)

最近项目需要用到hadoop,边学习边应用,第一步无疑是安装hadoop,我安装的是hadoop-2.4.1,下面是详细步骤,做备忘以后查看 一.下载依赖软件 1.java hadoop官网说明只支持java 6和7 ,下载最新的java7 http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz 2.maven 从maven官网下载http://maven.apache.org/download

hadoop1.2 eclipse插件编译

目录说明 在编译之前,我们需要先下载后hadoop 1.2.1的源码文件,并解压到合适的位置.目录结构如下: Eclipse: D:\eclipse Hadoop: D:\hadoop-1.2.1 Step1导入 Hadoop-eclipse 插件工程 1. 下载hadoop-1.2.1.tar.gz,并解压缩到 D盘根目录下2. 在 Eclipse 中选择 File->Import->General/Existing Projectsinto Workspace 导入Hadoop的Eclip

如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar

如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.2.0.jar http://cxshun.iteye.com/blog/1876366 大数据是当今的一个热门话题,相信搞JAVA的我们当然不能错过了,尤其是hadoop这个大数据时代的宠儿是属于我们JAVA界的(核心是用JAVA写的). 看到hadoop,相信一堆概念大家都听得不少了,什么MapReduce,这个就大概解释下: Map:俗点说就是直接把数据打散,一份数据把它切分成多份小的数据进行处理,这个过