Hadoop eclipse开发解决Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException

问题:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

应用环境

                Hadoop: apache hadoop1.2.1

  Eclipse Version: Kepler Service Release 1


计划在Eclipse中直接运行一些MapReduce测试程序,在 google code上下载了插件:hadoop-0.20.1-eclipse-plugin.jar,但是在配置hadoop location时却报错:

Call to localhost/127.0.0.1:9000 failed on local exception: Java.io.EOFException,如图所示:


原因:Hadoop服务端版本和eclipse插件版本不一致


解决方案:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

所以就重新编译了一个hadoop 1.2.1 eclipse plugin,编译过程如下:

1. 插件源代码在${hadoop源码目录}/src/contrib/eclipse-plugin下面,需要修改build.xml文件如下:

(Note:需要修改的地方已经用蓝色字体进行了标注,其他保持原本默认配置即可

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

<project default="jar" name="eclipse-plugin">
 
  <!-- 增加如下这8个property配置 -->
  <property name="name" value="${ant.project.name}" />
  <property name="root" value="${basedir}" />
  <property name="hadoop.root" location="
haoop源码目录" />
  <property name="version" value="
1.2.1" />
  <property name="eclipse.home" location="
eclipse安装位置"/>
  <property name="build.dir" location="${hadoop.root}/build/contrib/${name}"/>
  <property name="build.classes" location="${build.dir}/classes"/>
  <property name="src.dir" location="${root}/src/java"/>

  <!-- end -->   
 
  <!-- 注释掉这个import语句 -->
  <!--<import file="../build-contrib.xml"/>-->

  <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"/>
    <path refid="eclipse-sdk-jars"/>
    <!-- 增加这个fileset配置 -->
    <fileset dir="${hadoop.root}">
         <include name="*.jar"/>
    </fileset>

    <!-- end -->
  </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">
    <echo message="contrib: ${name}"/>        
    <!--
     如下的encoding配置非常关键!
    -->
    <javac
     encoding="ISO-8859-1"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="on"
     deprecation="off">
     <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}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
     <!-- 增加如下6个copy配置 -->
     <copy file="${hadoop.root}/lib/commons-cli-1.2.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/jackson-core-asl-1.8.8.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-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true" />

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


Note: 其实完全可以剪切这段代码使用,注意修改您机器上的hadoop源码目录路径和eclipse安装路径!


2. 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/hadoop-core.jar,lib/jackson-core-asl-1.8.8.jar,lib/jackson-mapper-asl-1.8.8.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-cli-1.2.jar
Bundle-Vendor: Apache Hadoop


3. 在hadoop源码目录下新建build/contrib/eclipse-plugin/classes目录。

在${hadoop源码目录}/src/contrib/eclipse-plugin目录下执行:ant,开始编译插件。
编译完成之后,在${hadoop源码目录}/build/contrib/eclipse-plugin/下面会生成hadoop-eclipse-plugin-1.2.1.jar文件,复制到eclipse的plugin目录下即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值