MapReduce开发运行的精简原理(mapreduce开发流程)

作者:黑马程序员
链接:https://zhuanlan.zhihu.com/p/81237437
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单介绍

相信关于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开发运行的精简原理(mapreduce开发流程)

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的架构和工作流程

MapReduce开发运行的精简原理(mapreduce开发流程)

步骤分析:

  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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月1日 下午1:12
下一篇 2024年5月1日 下午1:24

相关推荐

  • 会议管理考试

    会议管理考试:一场挑战自我的机会 随着现代组织的快速发展,会议管理已经成为一个不可或缺的技能。但是,对于许多员工来说,他们可能并不熟悉如何有效地组织和管理会议。因此,考试来测试员工…

    科研百科 2025年1月4日
    0
  • 合阳县城市管理执法局:党建引领“四敢”干部 贯彻落实“三个年”活动

    2023年是省委、省政府开展高质量项目推进年、营商环境突破年、干部作风能力提升年“三个年”活动的开局之年,为贯彻省市县决策部署,2月3日,合阳县城市管理执法局召开“三个年”活动干部…

    科研百科 2023年10月4日
    124
  • 大庆市人民政府wps

    大庆市人民政府wps 大庆市人民政府办公室 关于发布《大庆市城市规划用语》和《大庆市城市绿化用语》的通知 各相关部门、企事业单位: 根据《中华人民共和国城市规划法》和《大庆市城市规…

    科研百科 2024年11月6日
    0
  • 提高科研课题结题率的措施

    提高科研课题结题率的措施 随着时代的变迁,社会的发展,科研课题也在不断地更新和变化。然而,课题的结题率却往往成为了一个备受关注的问题。课题结题率的高低不仅能够影响科研经费的使用,还…

    科研百科 2024年11月14日
    1
  • 免费项目管理软件推荐

    免费项目管理软件推荐 近年来,随着云计算和敏捷开发的兴起,免费项目管理软件变得越来越受欢迎。本文将介绍一些目前市场上比较流行的免费项目管理软件,以帮助开发者更好地管理项目。 1. …

    科研百科 2024年7月27日
    59
  • 执组工之笔 谱党建之篇(党建+执行)

    3月20日,全省基层党建工作重点任务推进会在福州召开,既有理论的高度,又有实践的深度。作为组工干部,我们要执组工之笔,谱党建之篇,进一步坚定理想信念、提升本领能力、锤炼作风担当。 …

    科研百科 2023年10月15日
    117
  • 建筑合同管理程序(建筑工程合同管理标准)

    建筑工程合同管理标准 建筑工程合同管理是建筑工程项目管理中至关重要的一环。正确的合同管理可以确保项目按照计划顺利进行,降低风险,提高项目的效率和质量。本文将介绍建筑工程合同管理的标…

    科研百科 2024年8月29日
    25
  • 不融资,靠内容营销从0做到$2000万ARR?解析ClickUp早期的三套增长组合拳

    内容营销究竟能获利多少?免费的内容也能换来付费用户吗?一起来看内容营销操作方法论!这篇文章详细介绍了ClickUp冷启动组合拳的方法论营销模式,使用大量案例和数据进行展现,对内容运…

    科研百科 2022年12月2日
    109
  • 工程管理erp软件(工程erp工程管理系统)

    工程erp工程管理系统:让工程管理更高效 随着现代信息技术的不断发展,工程管理也在不断地变革和升级。传统的手工管理方式已经无法满足现代工程管理的需求,因此,使用erp工程管理系统成…

    科研百科 2024年6月5日
    53
  • 客户关系管理简介

    客户关系管理简介 客户关系管理(CRM)是一种有效的商业策略,旨在通过对客户信息和业务流程的数字化和管理,提高客户满意度,增加销售额和利润。CRM系统收集和分析客户数据,帮助公司了…

    科研百科 2024年10月2日
    15