windows 7 with eclipse 下hadoop应用开发环境搭建

标签: windows eclipse hadoop | 发表时间:2013-08-14 12:11 | 作者:shan9liang
分享到:
出处:http://blog.csdn.net
一、概述
最近开始着手高校云平台的搭建,前些天做了hadoop集群测试环境的安装与配置的经验分享, 这篇文章主要介绍win7 64位下 eclipse4.2 连接远程Redhat Linux 5下hadoop-1.2.0集群开发环境搭建

二、环境
1、window 7 64位
2、eclipse 4.2
3、Redhat Linux 5
4、hadoop-1.2.0

三、安装配置hadoop集群
参考我的文章:

 
四、在Eclipse下安装配置hadoop插件
1、编译Eclipse-hadoop插件

2、安装
安装插件就很简单了,把上面编译的插件文件放到 Eclipse的安装目录下的plugins,重新启动Eclipse

3、配置
(1)将hadoop解压到windows文件系统的某个目录中
(2) 打开Eclipse,设置好workspace

 打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。

(3)选择window -> open perspective -> Other... , 选择有大象图标的 Map/Reduce,此时,就打开了Map/Reduce的开发环境。可以看到,右下角多了一个Map/Reduce Locations的框。如下图

 

新建,在打开的窗口中输入:

 

Location Name : 此处为参数设置名称,可以任意填写

Map/Reduce Master (此处为Hadoop集群的Map/Reduce地址,应该和mapred-site.xml中的mapred.job.tracker设置相同)

DFS Master (此处为Hadoop的master服务器地址,应该和core-site.xml中的 fs.default.name 设置相同)

设置完成后,点击Finish就应用了该设置。

此时,在最左边的Project Explorer中就能看到DFS的目录,如下图所示。

配置完毕

五、测试
新建项目:File-->New-->Other-->Map/Reduce Project ,项目名可以随便取,如hadoop_test_01

它会自动添加依赖包,如下:

 

可以运行hadoop自带的wordcount实例

/**
 *  Licensed 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.
 */


package com.jialin.hadoop;

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<Object, Text, Text, IntWritable>{
    
    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<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> 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();
    
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length != 2) {
      System.err.println("Usage: wordcount <in> <out>");
      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);
  }
}

运行时参数设置:

右击wordcount,选择run as - run configurations

 

参数根据自己实际情况

input目录下有两个文件input1和input2,内容分别为:hello world,hello hadoop
output目录不用手动创建。

运行:
右击wordcount-run as -run on hadoop

运行成功,查看output中的文件内容
hello 2
hadoop 1
world 1

 
注:测试中遇到问题的解决方式

解决权限问题
1、hadoop权限
如果当前登录windows的用户名和hadoop集群的用户名不一致,将没有权限访问,会报错

 目前做法是开发时将hadoop服务集群关闭权限认证,正式发布时,可以在服务器创建一个和hadoop集群用户名一致的用户,即可不用修改master的permissions策略。

详细参考我的文章:

 
2、windows下0700问题
这个问题真是纠结了我好几天,最后修还hadoop源码hadoop-core-1.2.0.jar中的FileUtil,重新编译 hadoop-core-1.2.0.jar ,替换掉原来的。才得以解决

详细参考我的文章:

 
七、总结

至此高校云平台的hadoop集群基本开发环境已经出来了,剩下的就是在此基础上进行丰富了。如果是简单的测试,推荐使用单机hadoop方式,或者伪分布式。我之所以不选择单机或伪分布式,只是想尽可能地模拟真实环境。大家按需选择吧。


 

作者:shan9liang 发表于2013-8-14 20:11:55 原文链接
阅读:51 评论:0 查看评论

相关 [windows eclipse hadoop] 推荐:

windows 7 with eclipse 下hadoop应用开发环境搭建

- - CSDN博客云计算推荐文章
最近开始着手高校云平台的搭建,前些天做了hadoop集群测试环境的安装与配置的经验分享, 这篇文章主要介绍win7 64位下 eclipse4.2 连接远程Redhat Linux 5下hadoop-1.2.0集群开发环境搭建. 1、window 7 64位. 三、安装配置hadoop集群. 四、在Eclipse下安装配置hadoop插件.

Eclipse执行Hadoop WordCount

- - CSDN博客云计算推荐文章
Eclipse执行Hadoop WordCount.   我的Eclipse是安装在windows下的,通过Eclipse执行程序连接Hadoop,需要让虚拟机的访问地址和本机的访问地址保持在同一域内,虚拟机的地址更改前面的文章介绍过了,如果想改windows本机ip地址,打开“网络和共享中心“,点击左侧菜单”更改适配器设置“,选择相应连接网络进行IpV4属性地址修改即可.

Hadoop学习笔记之在Eclipse中远程调试Hadoop

- - BlogJava-首页技术区
话说Hadoop 1.0.2/src/contrib/eclipse-plugin只有插件的源代码,这里给出一个我打包好的对应的Eclipse插件:. 下载后扔到eclipse/dropins目录下即可,当然eclipse/plugins也是可以的,前者更为轻便,推荐;重启Eclipse,即可在透视图(Perspective)中看到Map/Reduce.

基于Eclipse的Hadoop开发环境配置方法

- - CSDN博客推荐文章
(1)启动hadoop守护进程. 在Terminal中输入如下命令:. (2)在Eclipse上安装Hadoop插件. 找到hadoop的安装路径,我的是hadoop-0.20.2,将/home/wenqisun/hadoop-0.20.2/contrib/eclipse-plugin/下的hadoop-0.20.2- eclipse-plugin.jar拷贝到eclipse安装目录下的plugins里,我的是在/home/wenqisun/eclipse /plugins/下.

eclipse远程连接hadoop进行开发测试

- - 开源软件 - ITeye博客
eclipse远程连接hadoop进行开发测试. 马克飞象 由于搭建hadoop环境在仿真系统,在本地远程连接hdfs和提交mapreduce的job任务精力了曲折,现整理如下:. hadoop环境 :hadoop2.5.2 jdk1.7 eclipse_luno hadoop_eclipse插件2.6; .

Eclipse 3.7发布

- Power - Solidot
Eclipse基金会宣布发布开源集成开发环境Eclipse 3.7,代号Indigo.

Google宣布Eclipse Labs

- 旺旺 - Solidot
Google和众多开源社区的开发者都使用Eclipse IDE,Google开发者用Eclipse开发了Android、App Engine、Google Chrome,以及大量Web应用程序. 现在Google宣布与Eclipse基金会合作,促进Eclipse生态系统,他们的合作结晶是Eclipse Labs.

eclipse插件-easy explore

- - 博客园_首页
最近找到一个Eclipse的插件,名字是Easy Explore,是 Easy Structs 其 中的一个部分. 主要的功能就是在Eclipse里面视图的部分如果看到自己的工程,或者Package,包什么的,在安装完该插件以后点击鼠标右键,选 择"Easy Explore"就可以快速的打开该文件的windows存放文件夹,对于快速的导出源文件是一个很有用的插件.

Eclipse Memory Analyzer简介

- - Java - 编程语言 - ITeye博客
Eclipse Memory Analyzer是一个非常棒的堆内存分析工具,是JDK自带的堆分析工具jhat的一个非常好的替代品,能够快速地定位Java内存泄露的原因.       可能有的同学会问,JVM不是号称自动内存管理,GC会自动垃圾回收,Java怎么会有内存泄露,不会搞错吧.       在开始分析之前,我们先想想,在编程这个角度上,我们如何避免堆内存泄露呢.

Eclipse注释模板

- - ITeye博客
Eclipse注释模板:Window->Preference->Java->Code Style->Code Template. (1)Comments-Types 类注释. * @author 你的名字. * @Version 版本. * @ModifiedBy 修改人. * @Copyright 公司名称.