MapReduce 知识点

MapReduce是一种分布式计算框架,采用分而治之的思想处理大数据。Map阶段负责数据的逻辑切分和自定义处理,Reduce阶段进行数据合并汇总。偏移量表示行首字符到文档起始位置的距离。Suffer过程包括分区、排序、局部聚合和分组。Combiner在Map端进行局部聚合,减少网络传输。设置ReduceTask数量通过job.setNumReduceTasks()。优化点包括调整环形缓冲区大小、阈值和使用压缩。集群优化主要目标是减少网络带宽和磁盘IO的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MapReduce核心思想

分而治之,先分后和,就是将一个大文件拆分成多个小文件,并行处理,最终进行合并
map负责分 reduce负责合

偏移量

行首字符到文档最前端的字符数量

Suffer包含哪些步骤

partition 分区
Sort 排序
combiner 局部聚合
Group 分组

MR从读取数据到写入hdfs经过哪些步骤

第1步:InputFormat
InputFormat 到hdfs上读取数据
将数据传给Split
第2步:Split
Split将数据进行逻辑切分,
将数据传给RR
第3步:RR
RR:将传入的数据转换成一行一行的数据,输出行首字母偏移量和偏移量对应的数据
将数据传给MAP
第4步:MAP
MAP:根据业务需求实现自定义代码
将数据传给Shuffer的partition
第5步:partition
partition:按照一定的分区规则,将key value的list进行分区。
将数据传给Shuffer的Sort
第6步:Sort
Sort:对分区内的数据进行排序
将数据传给Shuffer的combiner
第7步:combiner
combiner:对数据进行局部聚合。
将数据传给Shuffer的Group
第8步:Group
Group:将相同key的key提取出来作为唯一的key,
将相同key对应的value获取出来作为value的list
将数据传给Reduce
第9步:Reduce
Reduce:根据业务需求进行最终的合并汇总。
将数据传给outputFormat
第10步:outputFormat
outputFormat:将数据写入HDFS

如何设置ReduceTask的数量

调用job的setNumReduceTasks()方法传入参数进行设置

Combiner的作用

Map结束后,在Map端进行局部聚和。作用:较少网络传入次数,降低了网络开销。

Combiner运行在MapReduce的哪一端?

Map端

Maptask的数量是可以人为设置的吗?

不可以

Shuffer阶段的Partition分区的算法是什么?

对map输出的key 进行哈希,获取到一个哈希值,用这个哈希值与reducetask的数量取余。余几,这个数据就放在余数编号的分区(partition)中。

Split逻辑切分数据,切分大小是多大?

128M

内存角度介绍Map的输出到Reduce的输入的过程

Map的输出先写入环形缓冲区(默认大小100M-可以人为调整)(可以再输出的同时写入数据),当缓冲区内的数据
达到阈值(默认0.8-可以人为调整)时,对数据进行flash。flash 出去的数据的数量达到一定量(默认4个)时,进行数据的合并。
Reduce 主动发出拷贝进程(默认5个copy进程)到Map端获取数据。
获取到数据后,将数据写入内存,当数据达到阈值,将数据flash出去。
当flash出去文件达到一定的量时,进行数据的合并。最终将数据发送给reduce

最优的Map效率是什么?

尽量减少环形缓冲区flush的次数(减少磁盘IO 的使用次数)

最优的Reduce是什么?

尽量减少环形缓冲区flush的次数
尽量将所有的数据在内存中计算

在MR阶段,有哪些优化的点?(至少两个点)

1、加大环形缓冲区的内存
2、增大缓冲区阈值的大小 (考虑剩余的空间是不是够系统使用)
3、对输出的进行压缩(压缩-解压的过程会消耗CPU)

集群优化的核心思路是什么?

在网络带宽、磁盘IO是瓶颈的前提下
能不使用IO 网络就不使用,在必须使用的前提下,能少用就少用。
所有的,只要能够减少网络带宽的开销,只要能够减少磁盘io的使用的次数的配置项,都是集群调优的可选项。(可选项包括: 软件层面【系统软件和集群软件】,硬件层面,网络层面)

回答: mapreduce的高级知识点包括以下几个方面: 1. 分布式计算模型MapReduce的工作原理和流程:MapReduce是一种分布式计算模型,它将大规模的数据集分成若干个小的数据块,并在多台计算机上并行处理这些数据块。首先,Map阶段将输入数据分割成若干个小的数据片段,并对每个数据片段进行处理,生成中间键值对。然后,Reduce阶段将中间键值对按照键进行分组,并对每个键的值进行聚合操作,生成最终的结果。整个过程中,MapReduce框架负责任务的调度和数据的传输,开发人员只需要编写Map和Reduce函数来实现具体的业务逻辑。 2. MapReduce编程的基本步骤:MapReduce编程包括以下八个步骤:输入数据的切分、Map函数的执行、Map函数的输出、分区和排序、Combine函数的执行、Reduce函数的执行、Reduce函数的输出、最终结果的输出。开发人员需要根据具体的业务需求,编写相应的Map和Reduce函数,并在每个步骤中进行数据的处理和转换。 3. MapTask和ReduceTask的工作机制:在MapReduce框架中,MapTask负责处理输入数据的切分和Map函数的执行,将中间结果输出给ReduceTask;ReduceTask负责对MapTask输出的中间结果进行分组、排序和Reduce函数的执行,生成最终的结果。MapTask和ReduceTask的数量可以根据数据量和计算资源进行调整,以提高整个任务的并行度和性能。 4. MapReduce的核心思想:MapReduce的核心思想是“分而治之”,即将复杂的任务分解为若干个简单的任务来并行处理,然后将各个任务的结果进行合并。Map阶段负责将任务分解为多个小任务并行处理,Reduce阶段负责将各个小任务的结果进行合并。这种思想适用于大规模数据处理场景,可以提高计算效率和处理能力。 以上是mapreduce的一些高级知识点。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [分布式计算模型MapReduce 基础知识点](https://blog.youkuaiyun.com/weixin_44589991/article/details/115014112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值