Hadoop总结之MapReduce

本文详细介绍了Hadoop MapReduce的各个核心概念,包括MapReduce的计算框架、经典的WordCount案例、setup与cleanup阶段的作用、Combiner的使用、Shuffle过程以及如何处理数据倾斜问题。通过这些内容,读者可以全面了解MapReduce的内部处理数据流程。
摘要由CSDN通过智能技术生成

目录

一、简介

二、WordCount

三、setup与cleanup

四、Combiner

五、MapReduce中shuffle

六、MapReduce处理数据倾斜的一些方法

七、MapReduce内部处理数据流程


一、简介

MapReduce计算框架
将计算过程分为两个阶段:Map和Reduce
  Map阶段并行处理输入数据;
  Reduce阶段对Map结果进行汇总
Shuffle连接Map和Reduce两个阶段
  Map Task将数据写到本地磁盘;
  Reduce Task从每个Map Task上读取一份数据;
仅适合离线批处理
  具有较好的容错性和扩展性;
  适合批处理任务;
缺点:
  启动Map/Reduce任务开销大、过多使用磁盘导致IO频繁等;

二、WordCount

public class Driver {

public static void main(String[] args) throws Exception {
	
	// 获取一个提交mr程序到yarn上去的客户端对象
	Configuration conf = new Configuration();
	// 设置参数,指定本mr程序将提交到Yarn集群中去分布式执行
	conf.set("mapreduce.framework.name", "yarn");
	
	Job job = Job.getInstance(conf);
	
	// 提交mr任务之前,需要先设置这个mr任务的一些信息
	
	// 指定我们的mr程序所在的jar包路径
	//job.setJar("/root/wc.jar");
	job.setJarByClass(YarnClient.class);  //可以根据本类的类加载器获得本类所在jar包的路径
	
	// 指定Mapper类和Reducer类
	job.setMapperClass(WordcountMapper.class);
	job.setReducerClass(WordcountReducer.class);
	
	// 指定我们的Mapper输出的key-value的类型
	job.setMapOutputKeyClass(Text.class);
	job.setMapOutputValueClass(IntWritable.class);
	
	// 指定我们的reducer输出的key-value的类型
	job.setOutputKeyClass(Text.class);
	job.setOutputValueClass(IntWritable.class);
	// 指定我们要处理的数据文件所在位置
	FileInputFormat.setInputPaths(job, new Path("/wordcount/input/"));
	// 指定程序最后输出的结果文件所在位置(输出目录必须是不存在的目录,否则会抛异常)
	FileOutputFormat.setOutputPath(job, new Path("/wordcount/output/"));
	
	// 指定本mr任务,reduce task的并行实例数
	job.setNumReduceTasks(2);
	
	// 将本mr任务提交给yarn
	boolean res = job.waitForCompletion(true);  //阻塞方法,一直会等待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值