ITPub博客

首页 > 大数据 > Hadoop > Hadoop集群Eclipse开发环境的配置

Hadoop集群Eclipse开发环境的配置

Hadoop 作者:阿猫豆浆 时间:2012-07-13 10:31:12 0 删除 编辑
下面的资料基本上和网上搜索同样关键词的结果都是一样的,好像都是同一个人写的资料的流传版本,在搭建好环境后,我也写一遍,只是温故知新而已。

1、Hadoop开发环境简介
1.1 Hadoop集群简介
Java版本:jdk-6u31-linux-i586.bin
Linux系统:Ubuntu
Hadoop版本:hadoop-1.0.0.tar.gz
1.2 Windows开发简介
   Java版本:jdk-6u31-windows-i586.exe
   Win系统:Windows 7 旗舰版
   Eclipse软件:eclipse-jee-indigo-SR1-win32.zip | eclipse-jee-helios-SR2-win32.zip
   Hadoop软件:hadoop-1.0.0.tar.gz
   Hadoop Eclipse 插件:hadoop-eclipse-plugin-1.0.0.jar
   下载地址:http://download.csdn.net/detail/xia520pi/4113746
  备注:我选择择第"V5.0"使用。记得在使用时重新命名为"hadoop-eclipse-plugin-1.0.0.jar"。
2、Hadoop Eclipse简介和使用
2.1 Hadoop工作目录简介
  为了以后方便开发,我们按照下面把开发中用到的软件安装在此目录中,JDK安装除外,我这里把JDK安装在C盘的默认安装路径下,下面是我的工作目录:

    系统磁盘(E:)

        |---HadoopWorkPlat

            |--- eclipse

            |--- hadoop-1.0.0

            |--- workplace

            |---……

 按照上面目录把Eclipse和Hadoop解压到"E:HadoopWorkPlat"下面,并创建"workplace"作为Eclipse的工作空间。

 

2.2 修改系统管理员名字

  为了使Eclipse能正常对Hadoop集群的HDFS上的文件能进行修改和删除,所以修改你工作时所用的Win7系统管理员名字,默认一般为"Administrator",把它修改为"kerry"(我的集群普通用户名),此用户名与Hadoop集群普通用户一致。为了不至于为权限苦恼,我们可以修改Win7上系统管理员的姓名,这样就避免出现该用户在Hadoop集群上没有权限等都疼问题,会导致在Eclipse中对Hadoop集群的HDFS创建和删除文件受影响。

2.3 Eclipse插件开发配置

 第一步:把我们的"hadoop-eclipse-plugin-1.0.0.jar"放到Eclipse的目录的"plugins"中,然后重新Eclipse即可生效。

重启Eclipse如下图:

Hadoop集群Eclipse开发环境的配置

第二步:选择"Window"菜单下的"Preference",然后弹出一个窗体,在窗体的左侧,有一列选项,里面会多出"Hadoop Map/Reduce"选项,点击此选项,选择Hadoop的安装目录(如我的Hadoop目录:E:HadoopWorkPlathadoop-1.0.0)。结果如下图:

Hadoop集群Eclipse开发环境的配置

第三步:建立与Hadoop集群的连接,在Eclipse软件下面的"Map/Reduce Locations"进行右击,弹出一个选项,选择"New Hadoop Location",然后弹出一个窗体

Hadoop集群Eclipse开发环境的配置

Hadoop集群Eclipse开发环境的配置

 

注意上图中的红色标注的地方,是需要我们关注的地方。

Location Name:可以任意其,标识一个"Map/Reduce Location"

Map/Reduce Master

Host:192.168.1.2(Master.Hadoop的IP地址)(上图用的是别人的,我的ip为Hadoop-A)

Port:9001

DFS Master 

Use M/R Master host:前面的勾上。(因为我们的NameNode和JobTracker都在一个机器上。)

Port:9000

User name:hadoop(默认为Win系统管理员名字,因为我们之前改了所以这里就变成了hadoop。)(注:我的为kerry)


 

备注:这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。

   接着点击"Advanced parameters"从中找见"hadoop.tmp.dir",修改成为我们Hadoop集群中设置的地址,我们的Hadoop集群是"/usr/hadoop/tmp",这个参数在"core-site.xml"进行了配置。


Hadoop集群Eclipse开发环境的配置

点击"finish"之后,会发现Eclipse软件下面的"Map/Reduce Locations"出现一条信息,就是我们刚才建立的"Map/Reduce Location"。

Hadoop集群Eclipse开发环境的配置

第四步:查看HDFS文件系统,并尝试建立文件夹和上传文件。点击Eclipse软件左侧的"DFS Locations"下面的"Win7ToHadoop",就会展示出HDFS上的文件结构。

 

3、Eclipse运行WordCount程序

3.1 配置Eclipse的JDK

  如果电脑上不仅仅安装的JDK6.0,那么要确定一下Eclipse的平台的默认JDK是否6.0。从"Window"菜单下选择"Preference",弹出一个窗体,从窗体的左侧找见"Java",选择"Installed JREs",然后添加JDK6.0。

3.2 设置Eclipse的编码为UTF-8(为什么,还不是很懂,留待以后了解)

Hadoop集群Eclipse开发环境的配置

3.3 创建MapReduce项目

从"File"菜单,选择"Other",找到"Map/Reduce Project",然后选择它。接着,填写MapReduce工程的名字为"WordCountProject",点击"finish"完成。

目前为止我们已经成功创建了MapReduce项目,我们发现在Eclipse软件的左侧多了我们的刚才建立的项目。

Hadoop集群Eclipse开发环境的配置

 

3.4 创建WordCount类

  选择"WordCountProject"工程,右击弹出菜单,然后选择"New",接着选择"Class",然后填写如下信息:

Hadoop集群Eclipse开发环境的配置

因为我们直接用Hadoop1.0.0自带的WordCount程序,所以报名需要和代码中的一致为"org.apache.hadoop.examples",类名也必须一致为"WordCount"。找到"WordCount.java"文件,用记事本打开,然后把代码复制到刚才建立的java文件中,修改如下:

 

//package org.apache.hadoop.examples;


//public class WordCount {


//}

package org.apache.hadoop.examples;


import java.io.IOException;

import java.util.StringTokenizer;


import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;


public class WordCount {


  public static class TokenizerMapper 

       extends Mapper{

    

    private final static IntWritable one = new IntWritable(1);

    private Text word = new Text();

      

    public void map(Object key, Text value, Context context

                    ) throws IOException, InterruptedException {

      StringTokenizer itr = new StringTokenizer(value.toString());

      while (itr.hasMoreTokens()) {

        word.set(itr.nextToken());

        context.write(word, one);

      }

    }

  }

  

  public static class IntSumReducer 

       extends Reducer {

    private IntWritable result = new IntWritable();


    public void reduce(Text key, Iterable values, 

                       Context context

                       ) throws IOException, InterruptedException {

      int sum = 0;

      for (IntWritable val : values) {

        sum += val.get();

      }

      result.set(sum);

      context.write(key, result);

    }

  }


  public static void main(String[] args) throws Exception {

    Configuration conf = new Configuration();

    

    //

    conf.set("mapred.job.tracker", "Hadoop-A:9001");

//    conf.set("mapred.job.tracker", "192.168.29.130:9001");

    String[] ars=new String[]{"input/cite75_99.txt","newout"};

    

    String[] otherArgs = new GenericOptionsParser(conf, ars).getRemainingArgs();

//    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();

    

    if (otherArgs.length != 2) {

      System.err.println("Usage: wordcount ");

      System.exit(2);

    }

    Job job = new Job(conf, "word count");

    job.setJarByClass(WordCount.class);

    job.setMapperClass(TokenizerMapper.class);

    job.setCombinerClass(IntSumReducer.class);

    job.setReducerClass(IntSumReducer.class);

    job.setOutputKeyClass(Text.class);

    job.setOutputValueClass(IntWritable.class);

    FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

    System.exit(job.waitForCompletion(true) ? 0 : 1);

  }

}


 

3.5 运行WordCount程序

  选择"Wordcount.java"程序,右击一次按照"Run ASàRun on Hadoop"运行。然后会弹出如下图,按照下图进行操作。

Hadoop集群Eclipse开发环境的配置


<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24006465/viewspace-1120041/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-05-30