MapReduce知识总结

1.MapReduce概述

  1. Map Reduce是一个分布式运算桯序的编程框架,是用户开发"基于 Hadoop的数据分析应用"的核心框架.
  2. MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成完整的分布式运算程序,并发运行在一个 Hadoop集群上。
  3. •MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce
  4. MapReduce采用"分而治之"策略,一个存储在分布式文件系统中的大规模数据集,会被切分成许多独立的分片( split),这些分片可以被多个Map任务并行处理
  5. MapReduce设计的一个理念就是==“计算向数据靠拢”==,而不是"数据向计算靠拢",因为,移动数据需要大量的网络传输开销MapReduce框架采用了 Master/Slave架构,包括一个 Master和若干个Save。Maste上运行 Job tracker,Save上运行 TaskTracker
  6. Hadoop框架是用Java实现的,但是, MapReduce应用程序则不一定要用Java来写

2.Map和Reduce函数

在这里插入图片描述

3.MapReduce的核心思想

在这里插入图片描述1)分布式的运算程序往往需要分成至少2个阶段
2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。
3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。
4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

3.1MapTask

在这里插入图片描述
(1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。
(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。
(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。
(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。

3.2ReduceTask

在这里插入图片描述(1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。
(3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。
(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。

4. MapReduce优缺点

4.1优点

  1. MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机噩上运行.也就是说你写一个分布式程序,跟写一个简单的串行程序是一植一样的.就是因为这个特点使得 Map reduce编程变得非常流行.
  2. 良好的扩展性:当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力
  3. 高容错性:Map reduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性.比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由 Hadoop内部完成的
    4.适合PB级以上海量数据的离线处理:可以实现上干台服务器集群并发工作,提供数据处理能力

4.2缺点

  1. 不擅长实时计算:MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。
  2. 不擅长流式计算:流式计算的输入数据是动态的,而 Mapreduce的输入数据集是静态的,不能动态变化.这是因为 MapReduce自身的设计特点定了数据源必须是静态的.
  3. 不擅长DAG(有向图)计算:多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出.在这种情兄下, Map reduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下

5.MapReduce工作流程

流程图:
在这里插入图片描述

  • 不同的Map任务之间不会进行通信不同的
  • Reduce任务之间也不会发生任何信息交换
  • 用户不能显式地从一台机器向另一台机器发送消息
  • 所有的数据交换都是通过 MapReduce框架自身去实现的
    小结
    MapReduce执行的全过程包括以下几个主要阶段:
    从分布式文件系统读入数据、执行Map任务输出中间结果、通过 Shuffle阶段把中间结果分区排序整理后发送给 Reduce任务、执行 Reduce任务得到最终结果并写入分布式文件系统.在这几个阶段中, Shuffle阶段非常关键,必须深刻理解这个阶段的详细执行过程

6. Shuffle详解

6.1Shuffle过程简介

在这里插入图片描述

6.2. Map端的Shuffle过程

在这里插入图片描述

6.3. Reduce端的Shuffle过程

在这里插入图片描述

7.MapReduce编程

用户编写的程序分成三个部分:Mapper、Reducer和Driver

7.1Mapper阶段

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

7.2Reduce阶段

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

7.3Driver阶段

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 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.csdn.net/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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sparky*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值