MapReduce之Eclipse本地运行

  前面我们介绍的wordcount案例是在Eclipse中写好代码,然后打成jar包,然后在Linux环境中执行的,这种方式在我们学习和调试的时候就显得非常的不方便,所以我们来介绍下直接在Eclipse运行的本地运行方式。

本地运行模式

本地运行模式的特点

  1. mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行。
  2. 而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上。
  3. 本地模式非常便于进行业务逻辑的debug,只要在eclipse中打断点即可

环境准备

  1. Windows系统中我们需要安装hadoop环境。

MapReduce之Eclipse本地运行

具体操作参考此文:https://dpb-bobokaoya-sm.blog.****.net/article/details/88960266

  1. 配置环境变量信息

MapReduce之Eclipse本地运行

MapReduce之Eclipse本地运行

测试

MapReduce之Eclipse本地运行

package com.sxt.mr.wc;

import java.io.IOException;

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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

/**
 * MapReduce的启动类
 * @author dengp
 *
 */
public class WcTest {

	public static void main(String[] args) throws Exception {
		// 1.获取配置文件对象
		Configuration conf = new Configuration(true);
		
		conf.set("mapreduce.framework.name", "local");
		// 输出到HDFS文件系统中
		// conf.set("fs.defaultFS", "hdfs://hadoop-node01:9000");
		// 输出到本地文件系统
		conf.set("fs.defaultFS", "file:///");
		
		// 2.获取Job实例
		Job job = Job.getInstance(conf);
		
		// 3.设置类对象
		job.setJarByClass(WcTest.class);
		
		// 4.设置对应的自定义的MapTask和ReduceTask
		job.setMapperClass(MyMapperTask.class);
		job.setReducerClass(MyReduceTask.class);
		
		// 5.设置MapTask的输出数据类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		
		// 6.设置输出输出类
		FileInputFormat.setInputPaths(job, new Path("c:/tools/bigdata/mr/wc/input/"));
		FileOutputFormat.setOutputPath(job, new Path("c:/tools/bigdata/mr/wc/output/"));
		
		// 7.提交任务
		job.waitForCompletion(true);
	}
}

MapReduce之Eclipse本地运行

MapReduce之Eclipse本地运行