前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MapReduce开发运行的精简原理

MapReduce开发运行的精简原理

作者头像
用户7353950
发布2022-05-11 11:05:30
3520
发布2022-05-11 11:05:30
举报
文章被收录于专栏:IT技术订阅

简单介绍

相信关于Hadoop中MapReduce的相关文章会很多,这里只简单介绍一下MapReduce的相关知识。

Hadoop的MapReduce来源于Google公司的三篇论文中的MapReduce,其核心思想是“分而治之”

Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。

Reduce负责“合”,即对map阶段的结果进行全局汇总。

现阶段MapReduce一般运行在Hadoop2.x版本的yarn资源平台上,具体运行过程后面会有详细说明。

MAPREDUCE编程规范

MapReduce 的开发一共有八个步骤, 其中 Map 阶段分为 2 个步骤,Shuffle 阶段 4 个步骤,Reduce 阶段分为 2 个步骤

Map 阶段 2 个步骤

1)设置 InputFormat 类, 将数据切分为 Key-Value(K1和V1) 对, 输入到第二步

2)自定义 Map 逻辑, 将第一步的结果转换成另外的 Key-Value(K2和V2) 对, 输出结果

Shuffle 阶段 4 个步骤

3)对输出的 Key-Value 对进行分区

4)对不同分区的数据按照相同的 Key 排序

5)(可选) 对分组过的数据初步规约, 降低数据的网络拷贝

6)对数据进行分组, 相同 Key 的 Value 放入一个集合中

Reduce 阶段 2 个步骤

7)对多个 Map 任务的结果进行排序以及合并, 编写 Reduce 函数实现自己的逻辑, 对输入的 Key-Value 进行处理, 转为新的 Key-Value(K3和V3)输出

8)设置 OutputFormat 处理并保存 Reduce 输出的 Key-Value 数据

MapReduce的步骤图

YARN资源调度

yarn是hadoop集群当中的资源管理系统模块,从hadoop2.0开始引入yarn模块,yarn可为各类计算框架提供资源的管理和调度,主要用于管理集群当中的资源(主要是服务器的各种硬件资源,包括CPU,内存,磁盘,网络IO等)以及调度运行在yarn上面的各种任务。

相比于hadoop1.x版本,yarn核心出发点是为了分离资源管理与作业监控,实现分离的做法是拥有一个全局的资源管理ResourceManager(RM),以及每个应用程序对应一个的应用管理器ApplicationMaster(AM)。

总结一句话就是说:yarn主要就是为了调度资源,管理任务。

YARN总体上是Master/Slave结构,主要由ResourceManager、NodeManager、 ApplicationMaster和Container等几个组件构成。

ResourceManager(RM) 负责处理客户端请求,对各NM上的资源进行统一管理和调度。给ApplicationMaster分配空闲的Container 运行并监控其运行状态。主要由两个组件构成:调度器和应用程序管理器:

调度器(Scheduler):调度器根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位是Container。Shceduler不负责监控或者跟踪应用程序的状态。总之,调度器根据应用程序的资源要求,以及集群机器的资源情况,为应用程序分配封装在Container中的资源。

应用程序管理器(Applications Manager):应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster 、监控ApplicationMaster运行状态并在失败时重新启动等,跟踪分给的Container的进度、状态也是其职责。

NodeManager (NM) NodeManager 是每个节点上的资源和任务管理器。它会定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;同时会接收并处理来自ApplicationMaster 的Container 启动/停止等请求。

ApplicationMaster (AM):用户提交的应用程序均包含一个ApplicationMaster ,负责应用的监控,跟踪应用执行状态,重启失败任务等。ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。

Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster 返回的资源便是用Container 表示的。

YARN的架构和工作流程

步骤分析:

1.客户端通过命令(hadoop jar xxx.jar)提交上传任务到主节点ResourceManager(RM)中的ApplicationManager进程

2.主节点RM判断集群状态,选择一台NodeManager(NM),开启一块资源Container,用来开启AppMaster进程

3.AppMaster进程获取RM接收的任务请求,进行任务分配

4.AppMaster根据任务情况向RM中的ResourceScheduler索要资源分配方案

5.AppMaster根据资源分配方案找到到各个NodeManager从节点

6.在从节点上开启资源Container,并运行任务Task

7.AppMaster获取各个Task上传的任务执行进度和结果

8.AppMaster将任务执行的结果返回给ApplicationManager

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术订阅 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档