`
qindongliang1922
  • 浏览: 2181706 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117427
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125837
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59831
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71237
社区版块
存档分类
最新评论

Linux下编译Hadoop的Eclipse插件

阅读更多
虽然使用Java编写MapReduce作业有点繁琐,但是对于刚入门hadoop的新手来说,有利于理解hadoop的一些底层实现,这无疑也是一种巨大的收获。目前大部分的MapReduce作业都是使用Hive,Pig完成的,当然也有用其他语言实现的,通过使用HadoopStreaming的方式,用原生Java写MR作业的只有很少一部分。在Hadoop2.x中,已经不支持eclipse的插件了,不过可以在配置的XML文件里,加入远程监控的端口,来监控hadoop集群。


由于1.0之后hadoop已经不自带eclipse的插件包了,所以得需要我们自己编译源码生成插件包,建议在Linux下编译,Windows下可能有时候会报一些莫名其妙的错误,先介绍下散仙的环境,Centos6.4的版本,hadoop1.2.0的版本,
hadoop的目录在/root/hadoop-1.2.0下面
eclipse的目录在/root/eclipse下面
总结一下如下的四步来完成编译eclipse插件的过程


步骤操作
1进入/root/hadoop-1.2.0/src/contrib/eclipse-plugin下面,修改build.xml
2进入/root/hadoop-1.2.0/src/contrib下面,修改build-contrib.xml
3/root/hadoop-1.2.0/src/contrib/eclipse-plugin/META-INF下面,修改MANIFEST.MF文件
4使用shell命令进入/root/hadoop-1.2.0/src/contrib/eclipse-plugin下面,执行ant命令进行构建


下面散仙就来详细介绍下,每一步具体怎么操作,在第一步里我们需要向build.xml里面,加入的内容有
1,eclipse的根目录.
2.hadoop的版本号.
3.hadoop的一些引用包.
4,在javac里加入  includeantruntime="on".
内容如下所示:


  <!-- 1,2步的配置  -->
  <property name="eclipse.home" location="/root/eclipse"/>
  <property name="version" value="1.2.0"/>
  <!--第3步的配置  -->
  <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"/>
 <!--第4步的配置  -->
 includeantruntime="on">

散仙会在下文贴出整个XML,现在我们看第二大步的配置,修改build-contrib.xml,内容如下:
 <!--  原始的为off -->
<property name="javac.deprecation" value="on"/>

第三步的修改MANIFEST.MF内容如下:
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



第四步执行命令:截图如下:


最后,插件类生成的目录,截图如下:




下面散仙给出所有配置的全部信息,以供参考,下图的是build.xml里面的内容


<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

             <!-- build.xml -->
<project default="jar" name="eclipse-plugin">

  <import file="../build-contrib.xml"/>

   
  <property name="eclipse.home" location="/root/eclipse"/>
  <property name="version" value="1.2.0"/>
  
  <path id="eclipse-sdk-jars">
    <fileset dir="${eclipse.home}/plugins/">
      <include name="org.eclipse.ui*.jar"/>
      <include name="org.eclipse.jdt*.jar"/>
      <include name="org.eclipse.core*.jar"/>
      <include name="org.eclipse.equinox*.jar"/>
      <include name="org.eclipse.debug*.jar"/>
      <include name="org.eclipse.osgi*.jar"/>
      <include name="org.eclipse.swt*.jar"/>
      <include name="org.eclipse.jface*.jar"/>

      <include name="org.eclipse.team.cvs.ssh2*.jar"/>
      <include name="com.jcraft.jsch*.jar"/>
    </fileset> 
  </path>

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

  <!-- Skip building if eclipse.home is unset. -->
  <target name="check-contrib" unless="eclipse.home">
    <property name="skip.contrib" value="yes"/>
    <echo message="eclipse.home unset: skipping eclipse plugin"/>
  </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="on">
     <classpath refid="classpath"/>
    </javac>
  </target>

  <!-- 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.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"/>


  <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>

</project>


build-contrib.xml的核心配置如下:只有一个地方,notepad++,定位截图如下:
  <property name="javac.deprecation" value="on"/>



下面是MANIFEST.MF里面的内容

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MapReduce Tools for Eclipse
Bundle-SymbolicName: org.apache.hadoop.eclipse;singleton:=true
Bundle-Version: 0.18
Bundle-Activator: org.apache.hadoop.eclipse.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.jdt.launching,
 org.eclipse.debug.core,
 org.eclipse.jdt,
 org.eclipse.jdt.core,
 org.eclipse.core.resources,
 org.eclipse.ui.ide,
 org.eclipse.jdt.ui,
 org.eclipse.debug.ui,
 org.eclipse.jdt.debug.ui,
 org.eclipse.core.expressions,
 org.eclipse.ui.cheatsheets,
 org.eclipse.ui.console,
 org.eclipse.ui.navigator,
 org.eclipse.core.filesystem,
 org.apache.commons.logging
Eclipse-LazyStart: true
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
Bundle-Vendor: Apache Hadoop


至此,已经ant编译完毕,截图如下



启动eclipse后,截图如下:





至此,插件已经完美生成,并运行,因为受上传限制的影响,所以散仙在这里上传不了这个jar包,有需要的朋友们,可以联系散仙。

  • 大小: 76.3 KB
  • 大小: 49.6 KB
  • 大小: 90.2 KB
  • 大小: 31.8 KB
  • 大小: 58 KB
0
0
分享到:
评论
2 楼 gainyray 2014-01-02  
弄好了,将hadoop/hadoop-core-1.2.1.jar copy到hadoop/build下 然后执行命令: ant jar 就编译好了
1 楼 gainyray 2014-01-02  
楼主,最后编译得时候出现java.net.ConnectException: Connection timed out.
然后找到用ant compile -Doffline=true 这个命令编译,显示build sucessful.但是问题是在指定得路径下找不到编译好的jar包,楼主有时间看看,先谢谢了。。。

相关推荐

    编译hadoop eclipse插件文档

    【编译Hadoop Eclipse插件】是开发Hadoop应用程序的重要步骤,它允许开发者在Eclipse环境中直接编写、调试和管理Hadoop项目。本教程将详细解释如何编译和安装Hadoop Eclipse插件。 首先,确保你已经安装了**Java 8*...

    Hadoop Eclipse插件2.2.0版本

    hadoop Eclipse插件Linux版本,编译环境hadoop2.2.0

    用于hadoop开发的eclipse插件

    本人编译的eclipse插件,验证使用正常。插件源码从github获取(hadoop2x-eclipse-plugin) 编译使用环境为: 操作系统:debian 7.6.0(32位) JDK版本:1.6.0_32 eclipse版本:4.4 hadoop版本:2.4.1

    Eclipse-Hadoop2.7.5配套软件及插件

    - **重要性**:JDK1.8是Eclipse Mars和Hadoop2.7.5配套使用的必备组件之一,因为Hadoop2.7.5及其插件都是基于JDK1.8编译的,确保了版本之间的兼容性。 #### 三、使用注意事项 - 在安装和配置过程中,需要注意版本...

    hadoop2.7.1 eclipse 插件 64位linux版本

    在centos7进行编译出来的,亲测可用

    hadoop2.7.1eclipse插件

    hadoop2.7.1的linux下eclipse支持插件。已经经过检查,安装后在eclipse下,可以正常上传,下载,删除hdfs文件,以及跑mapreduce程序。 编译环境:ant1.9.6 jdk1.8 hadoop2.7.1

    hadoop-eclipse-plugin-2.7.7.jar.rar

    该插件是在JDK 1.8.181版本环境下编译,同时兼容了Ant 1.10.9构建工具和Eclipse Kepler版本,这表明它对于开发者来说具有良好的兼容性和稳定性。 Hadoop,作为大数据处理的核心框架,提供了分布式存储和计算的能力...

    hadoop2.6.5-eclipse插件编译完成

    Windows10 64位系统,eclipse下,连接Linux下hadoop的插件,已编译完成,可放置在eclipse安装目录plugins下,本版本已测试

    hadoop-eclipse-plugin-1.2.0

    自己编译的hadoop-1.2.0的eclipse插件,jdk1.6的。在windows和linux下测试可用。

    Cygwin+Eclipse搭建Hadoop单机开发环境-2

    为了在Eclipse中编写和运行Hadoop MapReduce程序,你需要安装Hadoop插件,如Hadoop插件for Eclipse(HDPE)或者使用Eclipse的通用插件如Maven,通过Maven的POM.xml文件管理依赖项。这样,你可以在Eclipse中创建、...

    linux-jdk-1.7+hadoop-eclipse-plugin2.6.0.zip

    这个压缩包“linux-jdk-1.7+hadoop-eclipse-plugin2.6.0.zip”包含了Linux环境下使用的JDK1.7和自编译的Hadoop-Eclipse-Plugin 2.6.0版本,这是一个专门为Eclipse定制的插件,用于简化Hadoop MapReduce项目的开发...

    Cygwin+Eclipse搭建Hadoop单机开发环境-1

    首先,你需要在Eclipse中安装Hadoop相关的插件,如Hadoop插件(如Hadoop-Eclipse-Plugin),它允许你在Eclipse内直接创建和管理Hadoop项目。这可以通过Eclipse的“帮助”菜单下的“安装新软件”选项来完成。安装插件...

    eclipse插件

    2. **Eclipse插件**:Eclipse是一个强大的Java IDE,其可扩展性是通过插件机制实现的。针对特定的开发需求,Eclipse提供了众多插件,如Mylyn用于任务管理,Subversive用于版本控制等。Hadoop插件则是专为Hadoop开发...

    linux下maven在eclipse安装测试Hadoop收集.pdf

    Linux下Maven在Eclipse中安装测试Hadoop的收集 Maven是一种流行的项目管理和构建工具,它可以帮助开发者快速地构建和管理项目。在Linux环境下,使用Maven可以轻松地构建和管理项目。在本文中,我们将介绍如何在...

    我的eclipse的hadoop所需要的插件.rar

    【描述】提到,这个插件主要安装在Eclipse的`plugins`目录下,意味着它是Eclipse插件的标准安装方式。通过这种方式,开发者可以在Eclipse内部直接访问和配置Hadoop相关的资源,例如提交MapReduce作业、监控任务状态...

    hadoop.dll以及winutile

    本篇将详细介绍`hadoop.dll`和`winutils.exe`这两个在Hadoop在Windows环境下运行时的重要组件,以及它们在Hadoop Eclipse插件配置中的作用。 首先,`hadoop.dll`是Hadoop在Windows系统上运行时必需的一个动态链接库...

    hadoop2x-eclipse-plugin-master

    标题"Hadoop2x-eclipse-plugin-master"指的是一个针对Hadoop 2.x版本的Eclipse插件的源码库,主要用于帮助开发人员在Windows操作系统上使用MyEclipse IDE编写和运行MapReduce程序。这个插件使得开发者能够在本地环境...

    Cygwin+Eclipse搭建Hadoop单机开发环境-3

    - 安装Eclipse的Hadoop插件,如Mondrian或Hadoop-Plugin。 - 创建新的Java项目,导入Hadoop的源代码或库。 - 编写MapReduce程序,利用Eclipse的强大调试功能测试和优化代码。 7. **运行Hadoop程序**: - 使用...

    hadoop-eclipse-plugin-1.0.4.jar

    1.这个插件是我查阅资料后成功编译的,hadoop版本为1.0.4 eclipse为3.7,linux、win版本均可。 2.如果你之前尝试过别的hadoop-eclipse*jar插件而没有成功,此时eclipse已经"不干净了",需要新解压的eclipse,将该jar包...

Global site tag (gtag.js) - Google Analytics