【MapReduce】9.MapReduce过程详解

0.0 定义

0.1 定义

MapReduce 是一个分布式运算程序的编程框架

0.2 功能

将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。

0.3 优缺点

优点
1)MapReduce 易于编程
2)良好的扩展性
3)高容错性
4)适合 PB 级以上海量数据的离线处理
缺点
1)不擅长实时计算
2)不擅长流式计算
3)不擅长 DAG(有向无环图)计算

1.0 MapReduce架构

1.1 架构图

在这里插入图片描述

1.1 架构的细节

主要集中MapTest(数据分发到各各节点)、ReduceTask(计算)、MapTask(结果合并)

1.2 一些问题

1.2.1 MapReduce工作流程

在这里插入图片描述
在这里插入图片描述

1.2.2 InputFormat数据输入

1.2.2.1 切片与MapTask并行度决定机制

(数据切片和选择多少节点处理的关系!)
1)问题引出

MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度。

思考:1G的数据,启动8个MapTask,可以提高集群的并发处理能力。那么1K的数据,也启动8个MapTask,会提高集群性能吗?MapTask并行任务是否越多越好呢?哪些因素影响了MapTask并行度?

2)MapTask并行度决定机制

数据块:Block是HDFS物理上把数据分成一块一块。

数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。

3)总结
在这里插入图片描述

1.2.2.2 FileInputFormat切片

(文件的切片原理!)
切片过程
在这里插入图片描述

切片机制
在这里插入图片描述

1.2.2.3 CombineTextInputFormat切片机制

(小文件的处理机制)
问题:因为小文件过多,会造成资源的浪费(一个小文件就占用一个节点的情况,是不可取的!)
解决:多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个MapTask处理

1.2.3 MapTask工作机制

在这里插入图片描述

1.2.4 shuffle工作机制

在这里插入图片描述

1.2.5 ReduceTask工作机制

在这里插入图片描述

1.2.6 结果输出

2.0 MapReduce程序的编写

2.1 Mapper阶段

(1)用户自定义的Mapper要继承自己的父类
(2)Mapper的输入数据是KV对的形式(KV的类型可自定义)
(3)Mapper中的业务逻辑写在map()方法中
(4)Mapper的输出数据是KV对的形式(KV的类型可自定义)
(5)map()方法(MapTask进程)对每一个<K,V>调用一

2.2 Reducer阶段

(1)用户自定义的Reducer要继承自己的父类
(2)Reducer的输入数据类型对应Mapper的输出数据类型,也是KV
(3)Reducer的业务逻辑写在reduce()方法中
(4)ReduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

2.3 Driver阶段

相当于YARN集群的客户端,用于提交我们整个程序到YARN集群,提交的是封装了MapReduce程序相关运行参数的job对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值