您的位置:首页 > 编程语言 > Java开发

mac下 eclipse+hadoop2.6.0完全配置,实例验证

2015-09-17 21:13 483 查看
最近开始自己搞hadoop实战的一些东西,之前其实已经接触了很久的mapreduce的一些方法,也写了比较多的算法了

但是一直没有很理论的研究过,准备在这个月里面完整的记录一下这方面的理论知识

简述安装配置过程

首先我的电脑是



安装的hadoop版本是2.6下载地址网上很多我就不写了

eclipse的版本



安装配置的过程就不说了,主要是首先安装jdk,然后安装hadoop,之后对hadoop中的多个配置文件进行修改,主要是一些文件的端口号,还有需要的默认datanode的数量等

直接从eclipse中的配置开始说,因为前面的资料网上很多,但是因为自己的版本比较新,后面的程序部分,资料就不全了

eclipse中配置hadoop 2.6的版本

首先网上一直有资料说是在windows的preference下进行配置,但是我的eclipse中就没有preference这一项

1 将hadoop-eclipse-plugin-2.6.0.jar 拷贝到eclipse对应的目录下



2 在window->open perspective中



可以看到Map/Reduce的标志

对应着在面板中有了Map/Reduce Location的部分

点击打开配置项可以对端口号吗进行配置



如果配置成功,在左边的工程界面中会出现dfs的部分并且有相应的文件情况,应该就是对应的hdfs文件的分布情况了



3 创建一个map/reduce的工程

在第一次创建工程的时候可以对eclipse配置的hadoop的安装地址进行配置,设置为默认之后就不用再进行配置了



4 编写实例,进行验证

首先给出例子的代码,只要直接在工程上新建一个java文件就可以了

import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
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 configuration

因为这里的inputPath,outputPath都还没有配置,这样参数索引的时候会越界



这里我配置的是本地的文件,当然也可以配置在hdfs上,后面会提到

运行,可以在本地的文件中看到

输入文件内容



输出文件内容:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: