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

目前配置eclipse插件主要有两个版本,一个是在windows下重新编译配置,另一个是在linux在重新配置编译。

下面逐步讲解在linux下编译-配置eclipse插件的过程。

  1. 环境:

     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
  2. 安装前准备:

    Ant、jdk、eclipse、Apache hadoop 2.2.0安装包都准备好

    eclipse插件源代码准备好(https://github.com/winghc/hadoop2x-eclipse-plugin)

    在集群上把Apache hadoop 2.2.0部署好

  3. 进行插件编译:
    • 将Apache hadoop 2.2.0的安装包和eclipse拷至任意目录,如/home/hadoop/Downloads/hadoop-2.2.0和/home/hadoop/Downloads/eclipse. 切记:整个路径中不能出现任何空格,否则ant编译过程会报错!
    • 进入插件目录进行编译,如插件放在/home/hadoop/Downloads/hadoop2x-eclipse-plugin
      $ cd /home/hadoop/Downloads/hadoop2x-eclipse-plugin/src/contrib/eclipse-plugin
      $ ant jar -Dversion=2.2.0 -Declipse.home=/home/hadoop/Downloads/eclipse -Dhadoop.home=/home/hadoop/Downloads/hadoop-2.2.0

      注意:其中-Declipse.home和-Dhadoop.home需要指定eclipse的安装目录和hadoop安装文件的存放目录,切记:这两个目录的全路径中都不能存在空格

      接下来就是漫长的等待了,主要慢的是target:ivy-download,ivy-resolve-common这两步。

      最后生成的插件在:

      hadoop2x-eclipse-plugin/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.2.0.jar

  4. 接下来进行插件的安装与配置
    • 将hadoop-eclipse-plugin-2.2.0.jar拷贝到eclipse的plugins目录下,启动eclipse
    • 进入Window-->Preference配置根目录:

    • 进入Window-->Open Perspective-->other-->Map/Reduce打开Map/Reduce窗口

    • 打开Map/Reduce View,右键,选择New hadoop location

      配置location

      注意:MR Master和DFS Master配置必须和mapred-site.xml和core-site.xml等配置文件一致

    • 打开Project Explorer,查看HDFS文件系统:

    • 新建Mapreduce项目

    • 创建MapReduce程序
  5. 编写WordCount程序测试插件使用:
    • 在MapReduce工程下新建WordCount.java程序,代码如下:

      import java.io.IOException;
      import java.util.*;
      import org.apache.hadoop.fs.Path;
      import org.apache.hadoop.conf.*;
      import org.apache.hadoop.io.*;
      import org.apache.hadoop.mapred.*;
      import org.apache.hadoop.util.*;
      public class WordCount {
      public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
      private final static IntWritable one = new IntWritable(1);
      private Text word = new Text();
      
      public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
       String line = value.toString();
       StringTokenizer tokenizer = new StringTokenizer(line);
       while (tokenizer.hasMoreTokens()) {
         word.set(tokenizer.nextToken());
         output.collect(word, one);
       }
      }
      }
      public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
      public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
       int sum = 0;
       while (values.hasNext()) {
         sum += values.next().get();
       }
       output.collect(key, new IntWritable(sum));
      }
      }
      public static void main(String[] args) throws Exception {
      JobConf conf = new JobConf(WordCount.class);
      conf.setJobName("wordcount");
      
      conf.setOutputKeyClass(Text.class);
      conf.setOutputValueClass(IntWritable.class);
      
      conf.setMapperClass(Map.class);
      conf.setReducerClass(Reduce.class);
      
      conf.setInputFormat(TextInputFormat.class);
      conf.setOutputFormat(TextOutputFormat.class);
      
      FileInputFormat.setInputPaths(conf, new Path(args[0]));
      FileOutputFormat.setOutputPath(conf, new Path(args[1]));
      
      JobClient.runJob(conf);
      }
      }
    • 配置运行时参数:右键-->Run as-->Run Confiugrations

    • 将程序放在hadoop集群上运行:右键-->Runas -->Run on Hadoop,最终的输出结果会在HDFS相应的文件夹下显示。至此,Linux下hadoop-2.2.0 eclipse插件配置完成。

  6. 配置过程中出先的问题:
    • 在eclipse中无法向文件HDFS文件系统写入的问题,这将直接导致eclipse下编写的程序不能在hadoop上运行。

      网上的解决方案有三个:

      a. 取消hadoop hdfs的用户权限检查。打开conf/hdfs-site.xml,找到dfs.permissions属性,将其修改为false(默认为true).[我当初的配置文件中写成了dfs.permission,虽然这个值修改成了false,但依旧无效,从而导致这个环境配置不成功,泪奔了]

      b. 修改hadoop location参数,在advanced parameter选项卡中,找到hadoop.job.ugi选项,将此选项改为启动hadoop的用户名即可(注意,第一次设置的时候可能没有hadoop.job.ugi参数,在报错后去看就有了)[其实我怎么也没找到这个选项]

      c. 因为eclipse使用hadoop插件提交作业是,会默认以DrWho身份去将作业写入hdfs文件系统中,对应的也是HDFS上的/usr/hadoop,由于DrWho用户对hadoop目录并没有写入权限,所以导致异常发生。解决方法为:放开hadoop目录的权限,命令如下:$hadoop
      fs -chmod 777
       [当初配置的时候,只放开了几个目录的权限,从而到导致作业无法提交写入到HDFS中,哭死了...]

    • 另外,eclipse插件的使用可能跟eclipse版本有关系,我使用的是eclipse-jee-luna-R-linux-gtk-x86_64.tar.gz版本的eclipse,在ubuntu 12.04 64bit下是可以使用的

下面来讲解一些在Windows下编译配置eclipse插件

  1. 环境:

     Windows 7 64bit 专业版
     eclipse-standard-luna-R-win32-x86_64
     Apache Ant(TM) version 1.9.4
     JDK Version 1.7.0_67
  2. 安装前准备:

    Ant、jdk、eclipse、Apache hadoop 2.2.0安装包都准备好

    eclipse插件源代码准备好(https://github.com/winghc/hadoop2x-eclipse-plugin)

    在集群上把Apache hadoop 2.2.0部署好

  3. 进行插件编译:
    • 将Apache hadoop 2.2.0的安装包和eclipse拷至任意目录,如E:\hadoop-2.2.0和E:\eclipse. 切记:整个路径中不能出现任何空格,否则ant编译过程会报错!
    • 进入插件目录进行编译,如插件放在E:\hadoop2x-eclipse-plugin
      $ cd hadoop2x-eclipse-plugin/src/contrib/eclipse-plugin
      $ ant jar -Dversion=2.2.0 -Declipse.home=E:\eclipse -Dhadoop.home=E:\hadoop-2.2.0

      注意:其中-Declipse.home和-Dhadoop.home需要指定eclipse的安装目录和hadoop安装文件的存放目录,切记:这两个目录的全路径中都不能存在空格

      接下来就是漫长的等待了,主要慢的是target:ivy-download,ivy-resolve-common这两步。

      最后生成的插件在:

      hadoop2x-eclipse-plugin/build/contrib/eclipse-plugin/hadoop-eclipse-plugin-2.2.0.jar

  4. 配置window 7中hadoop环境变量:
    • 在Window7中设置%HADOOP_HOME%,并把%HADOOP_HOME%\bin加入PATH环境变量[这一步如果不做的话,hadoop程序运行的过程中会出现空指针异常,从而到时程序运行失败]
    • 另外还需要下载一个插件https://github.com/srccodes/hadoop-common-2.2.0-bin,解压后把下载的bin目录覆盖%HADOOP_HOME%\bin目录下的文件

      注意,这两步是必须的,否则将导致各种奇葩错误

      接下来的步骤与Linux版本配置方案中的4、5步骤相同

  5. 配置过程中出现的问题:
    • 在使用ant编译eclipse插件的时候,会出现一堆警告,如

      [javac] E:\hadoop-2.2.0\share\hadoop\hdfs\hadoop-hdfs-2.2.0.jar(org/apache/h
      adoop/hdfs/DistributedFileSystem.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的
      注释方法 ‘value()‘
      [javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apac
      he/hadoop/fs/FileSystem.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的注释方法 ‘
      value()‘
      [javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apac
      he/hadoop/fs/FileSystem.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的注释方法 ‘
      value()‘
      [javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apac
      he/hadoop/fs/FileSystem.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的注释方法 ‘
      value()‘
      [javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apac
      he/hadoop/fs/FSDataInputStream.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的注
      释方法 ‘value()‘
      [javac] E:\hadoop-2.2.0\share\hadoop\common\hadoop-common-2.2.0.jar(org/apac
      he/hadoop/fs/FSDataOutputStream.class): 警告: 无法找到类型 ‘LimitedPrivate‘ 的注
      释方法 ‘value()‘
      [javac] 注: 某些输入文件使用或覆盖了已过时的 API。
      [javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
      [javac] 注: 某些输入文件使用了未经检查或不安全的操作。
      [javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
      [javac] 7 个警告

      但最终还是会编译成功的,这些警告不用去管

    • 插件的安装成功与否与eclipse版本有关系,我以前使用的是windows下64bit j2ee版本的eclipse,将其与插件一个通过ant编译后发现eclipse无法识别插件。
    • 另外在下载eclipse插件的源代码中有一个已经编译好的eclipse插件,该插件是不能使用的,放在eclipse中使用的话会报classNotDefException
时间: 2024-08-08 22:09:16

hadoop-2.2.0配置eclipse插件(windows和linux平台)的相关文章

【甘道夫】Win7x64环境下编译Apache Hadoop2.2.0的Eclipse插件

目标: 编译Apache Hadoop2.2.0在win7x64环境下的Eclipse插件 环境: win7x64家庭普通版 eclipse-jee-kepler-SR1-win32-x86_64.zip Apache Ant(TM) version 1.8.4 compiled on May 22 2012 java version "1.7.0_45" 参考文章: http://kangfoo.u.qiniudn.com/article/2013/12/build-hadoop2x

hadoop2.6.0的eclipse插件编译和设置

1.编译hadoop2.6.0的eclipse插件 下载源码: git clone https://github.com/winghc/hadoop2x-eclipse-plugin.git 编译源码: cd src/contrib/eclipse-plugin ant jar -Dversion=2.6.0 -Declipse.home=/opt/eclipse -Dhadoop.home=/opt/hadoop-2.6.0 eclipse.home 和 hadoop.home 设置成你自己的

TestNG 6.1.1 + eclipse Luna 4.4.0 + TestNG Eclipse 插件报错

相关信息: eclipse 32位 ---------------------------------- Eclipse Standard/SDK Version: Luna Release (4.4.0) Build id: 20140612-0600 jdk 1.8 本地安装 32位 ---------------------------------- java version "1.8.0_11" Java(TM) SE Runtime Environment (build 1.

tomcat https/ssl 服务配置(带有双向验证,windows,linux平台验证通过)

1. 创建服务器密钥,其密钥库为 /home/gr/server.ks PS1: 注意keypass和storepass保持一致,它们分别代表 密钥密码和密钥库密码, PS2: 注意 CN=localhost 中,localhost表示要配置SSL的主机名,不能任意指定 ~$keytool -genkey -v -alias serverKey -dname "CN=192.168.10.101" -keyalg RSA -keypass 123456 -keystore server

Windows 和 Linux 平台下的端口转发工具

原文地址: http://unmi.cc/windows-linux-port-forwarding/ 这里记录一下我曾经使用过的几个端口转发工具,即端口映射.端口重定向,和 NAT 也是差不多的概念. Linux 下用过 iptables,rinetd:Windows 下用过某个防火墙的 NAT 功能.RemoteAnywhere 的端口重定向.FPipe,还有最近刚找到的 PassPort.试着去设置一下 Windows 2000 的 NAT  功能,但未成功,还是特定的软件简单易用,下面介

使用recvfrom()接收UDP包在Windows和Linux平台的不同表现

1 UDP接收原理 操作系统的UDP接收流程如下:收到一个UDP包后,验证没有错误后,放入一个包队列中,队列中的每一个元素就是一个完整的UDP包.当应用程序通过recvfrom()读取时,OS把相应的一个完整UDP包取出,然后拷贝到用户提供的内存中,物理用户提供的内存大小是多少,OS都会完整取出一个UDP包.如果用户提供的内存小于这个UDP包的大小,那么在填充慢内存后,UDP包剩余的部分就会被丢弃,以后再也无法取回. 这与TCP接收完全不同,TCP没有完整包的概念,也没有边界,OS只会取出用户要

hadoop2.6.0的eclipse插件安装

1.安装插件 下载插件hadoop-eclipse-plugin-2.6.0.jar并将其放到eclips安装目录->plugins(插件)文件夹下.然后启动eclipse. 配置 hadoop 安装目录 配置Map/Reduce 视图 点击"大象" 在“Map/Reduce Locations” Tab页 点击图标“大象”,选择“New Hadoop location…”,弹出对话框“New hadoop location…”.填写Location name和右边的Port:9

Mongodb在windows和linux平台的安装配置

配置和环境: win10(本机)和linux(CentOs7)内网服务器各一台. Mongodb版本:3.07 一.windows 安装Mongodb 1.首先从官网下载mongo.我是win7 64bit 所以下载此版本. 链接:https://www.mongodb.org/downloads#production 2.创建数据目录 Mongodb将数据目录存储在db目录下.但这个目录不会主动创建,需要自己创建.我在D:\data\下建立db:也就是D:\data\db 3.试试能否正常运行

Redis/SSDB+Twemproxy的配置与使用(Mac/Linux平台)

对于redis而已,相信不少的后台开发人员一直都在使用,相比memcache而已,redis不仅可以作为key-value缓存使用,而且提供了丰富的数据结构如set.list.map等,能够实现很多复杂的功能,但是Redis本身主要作用是内存缓存,不适合做持久化存储到磁盘,所以目前出现了很多基于磁盘存储的组件,如:SSDB.ARDB. LevelDB.LMDB.beansDB等 Twemproxy是一个Redis/Memcached代理中间件,可以实现诸如分片逻辑.HashTag.减少连接数等功