前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MapReduce是什么?大数据开发的学习之路必须缺它不可吗?

MapReduce是什么?大数据开发的学习之路必须缺它不可吗?

作者头像
成都加米谷大数据
修改2021-04-21 17:51:49
1.4K0
修改2021-04-21 17:51:49
举报
文章被收录于专栏:大数据开发大数据开发

今天我们开始学习新的篇章MapReduce 系列知识,所以本期带来的是大数据开发-MapReduce ,MapReduce作为一种编程模型,它是如何将自己的功能发挥到极致,以此提高工作效率的呢?下面就一起来看。

一、MapReduce简介

MapReduce 是一个高性能的分布式计算框架,用于大规模数据集(大于1TB)的并行运算。它极大的方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。MapReduce分为Map(映射)和Reduce(化简)两个阶段,是在HDFS存储数据的基础上,将一个较大的计算任务(job)分解成若干小任务(task),每个小任务都由一个Map任务(task)来计算(这个Map尽量在数据所在节点上完成计算),然后再将每个Map的计算结果由一个或多个Reduce任务(task)合并,得到最终的结果。它的火热发展也得感谢GOOGLE,当初GOOGLE将几篇关于MapReduce的文章发布出来之后,就一炮而红,Hadoop的思想源于Google的几篇论文,提出来分布式计算框架MapReduce。

二、MapReduce结构

MapReduce由Client、JobTracker、TaskTracker、Task组成

1.Client

用户编写的MapReduce程序通过Client提交到JobTracker端 用户可通过Client提供的一些接口查看作业运行状态

2.JobTracker

JobTracker负责资源监控和作业调度 JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点 JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

3.TaskTracker

TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作, TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用

4.Task

Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动

说完了结构那我们就仔细看看它是怎么进行操作过程的。

三、MapReduce 的执行流程

通过将输入数据划分为 M 个分片, map 函数的调用分布在多台机器上,这些分片可与不同的机器并行地处理。通过将中间结果的键空间划分为 R 个分片, reduce 函数的调用分布在多台机器上。

下图展示了 MapReduce 操作的整个流程。

1.客户程序中的 MapReduce 库首先将输入文件分成 M 个大小通常为 16MB 或者64MB 的分片,然后开始在集群上的机器复制客户程序。

2.其中有一个程序的备份是特殊的,它就是主节点。其它的是由主节点分配任务的从节点,主节点有 M 个 map 任务和 R 个 reduce 任务要分配给那些空闲的从节点。

3.一个被分配了 map 任务的从节点从输入分片中读取内容,然后从输入中解析出键值对被传递给用户定义的 map 函数,由它来产生中间结果的键值对并缓存在内存中。

4.在内存中的键值对被周期性地写入到本地磁盘,通过分片函数被分成 R 个分片。这些分片的位置被回传给主节点,由主节点告诉 reduce 从节点它们的位置。

5.当 reduce 从节点被主节点告知分片的位置时,它从使用 RPC(remote procedure call) 去读取那些缓存数据,当读完后,它会按键值进行排序,然后将有相同键值的键值对组合在一起,形成键/值列表。

6.reduce 从节点遍历已经排序合并好了的中间数据,将每一个键/值列表对传递给客户定义的 reduce 函数。reduce 函数返回的结果被添加到这个 reduce 从节点的结果文件中。

7.当所有 map 从节点和 reduce 从节点完成后,主节点唤醒客户程序。如果 MapReduce 程序成功完成,结果文件被存储在 R 个输出文件中。

以上就是本期的内容了,Hadoop系列知识之前说过会占很多,今天MapReduce也是属于Hadoop的知识体系,希望大家能好好理解。

希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。

有问题的欢迎在评论区留言,如有侵权请告知。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、MapReduce简介
  • 二、MapReduce结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档