首页  >  文章  >  数据库  >  windows 7 with eclipse 下hadoop应用开发环境搭建

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

WBOY
WBOY原创
2016-06-07 16:31:221138浏览

一、概述 最近开始着手高校云平台的搭建,前些天做了hadoop集群测试环境的安装与配置的经验分享, 这篇文章主要介绍win7 64位下 eclipse4.2 连接远程Redhat Linux 5下hadoop-1.2.0集群开发环境搭建 二、环境 1、window 7 64位 2、eclipse 4.2 3、Redhat Linu

一、概述

最近开始着手高校云平台的搭建,前些天做了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集群

参考我的文章:

http://blog.csdn.net/shan9liang/article/details/9841933

http://www.jialinblog.com/?p=176


?

四、在Eclipse下安装配置hadoop插件

1、编译Eclipse-hadoop插件

参考: http://www.cnblogs.com/chenying99/archive/2013/05/31/3109566.html


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


/**

?* ?根据 Apache 许可证 2.0 版(“许可证”)获得许可;

?* ?除非符合许可证,否则您不得使用此文件。

?* ?您可以在

获取许可证副本

?*

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

?*

?* ?除非适用法律要求或书面同意,否则软件

?* ?根据许可证分发是按“原样”分发的,

?* ?没有任何明示或暗示的保证或条件。

?* ?请参阅许可证以了解管理权限的特定语言和

?* ?许可证下的限制。

?*/



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{

? ??

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

? ? private Text word = new Text();

? ? ??

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

? ? ? ? ? ? ? ? ? ? ) 抛出 IOException、InterruptedException {

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

? ? ? while (itr.hasMoreTokens()) {

? ? ? ? word.set(itr.nextToken());

? ? ? ? context.write(word, one);

? ? ? }

? ? }

? }

??

?公共静态类 IntSumReducer?

? ? ? ?扩展Reducer {

? ? private IntWritable result = new IntWritable();


? ? public void reduce(Text key, Iterable 值,?

? ? ? ? ? ? ? ? ? ? ? ?上下文上下文

? ? ? ? ? ? ? ? ? ? ? ?) 抛出 IOException、InterruptedException {

? ? ? int sum = 0;

? ? ? for (IntWritable val : 值) {

? ? ? ? sum = val.get();

? ? ? }

? ? ? result.set(sum);

? ? ? context.write(key, result);

? ? }

? }


? public static void main(String[] args) 抛出异常 {

? ?配置conf = new Configuration();

? ??

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

? ? if (otherArgs.length != 2) {

? ? ? System.err.println("用法:字数统计 ");

? ? ? System.exit(2);

? ? }

? ? Job job = new Job(conf, "字数统计");

? ? 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,选择运行方式-运行配置

参数根据自己实际情况


input目录下有两个文件input1和input2,内容分别为:hello world,hello hadoop

输出目录无需手动创建。


运行:

右击wordcount-run as -run on hadoop


运行成功,查看输出中的文件内容

你好2

hadoop 1

世界1


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


解决权限问题

1、hadoop权限

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


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


详细参考我的文章:

http://blog.csdn.net/shan9liang/article/details/9734693
http://www.jialinblog.com/?p=172


2、windows下0700问题

这个问题源码真是纠结了我好几天,最后修改还hadoophadoop-core-1.2.0.jar中的FileUtil,重新编译hadoop-core-1.2.0.jar?,替换掉原来的。才能够解决


详细参考我的文章:

http://blog.csdn.net/shan9liang/article/details/9734677

http://www.jialinblog.com/?p=174


七、总结


至此云平台的hadoop集群基本开发环境已经出来了,剩下的就是这里基础上进行丰富了。如果是简单的测试,推荐使用单机hadoop方式,或者α高校。我此时不选择单机或多元化,只是想问卷地模拟真实环境。大家依次选择吧。


作者:shan9liang 发表于2013-8-14 20:11:55 原文链接

阅读:51 评论:0 查看评论

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn