MapReduce2.0架构_产品架构
MapReduce是一个用于数据处理的编程模型,专为并行处理大数据而设计,其核心思想是将任务分为两个阶段:Map阶段和Reduce阶段,每个阶段的输入输出都是键值对的形式,Map阶段对切分好的数据进行并行处理,处理结果传输给Reduce阶段,由Reduce函数完成最后的汇总,在MapReduce 2.0中,这一架构得到了进一步优化和扩展。
MapReduce 2.0架构概述
MapReduce 2.0可以理解为一个jar包或一个程序,这个程序要运行在YARN(Yet Another Resource Negotiator)上面,YARN是Hadoop 2.x中的资源管理和作业调度框架,它提供了更高效、更可靠的资源管理方式,在YARN上,MapReduce 2.0主要由以下几个组件构成:
1、ResourceManager(RM):负责整个集群的资源管理和作业调度,RM包含两个重要模块:Application Manager(应用程序管理器)和Scheduler(调度器)。
Application Manager:主要负责接收作业提交,协商获取第一个容器来执行应用程序的ApplicationMaster(AM),并提供在故障时重新启动AM的服务。
Scheduler:根据容量、队列等限制条件将系统中的资源分配给各个正在运行的应用,Scheduler是一个“纯调度器”,它不负责监控或者跟踪应用的执行状态,也不保证会重启由于应用执行失败或者硬件故障产生的失败任务。
2、NodeManager(NM):每个节点上的框架代理,主要负责启动应用所需的容器,监视它们的资源使用情况(CPU、内存、磁盘、网络等),并将其报告给ResourceManager的Scheduler。
3、ApplicationMaster(AM):每个应用程序的AM是一个框架库,负责与Scheduler协商合适的资源容器以及与NodeManager一起跟踪它们的状态并监视进度,对于MapReduce作业来说,AM实际上是一个具体的框架库,它的任务是与RM协商获取应用所需资源,并与NM合作完成执行和监控task的任务。
4、Container:是YARN中的资源抽象,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
MapReduce 2.0工作流程
MapReduce 2.0的工作流程可以概括为以下几个步骤:
1、作业提交:用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2、资源分配:ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的AM。
3、AM注册:AM首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,它将为各个任务申请资源,并监控它们的运行状态,直到运行结束。
4、任务申请与启动:AM采用轮询的方式通过RPC协议向ResourceManager申请和领取资源,一旦AM申请到资源后,便与对应的NodeManager通信,要求它启动任务。
5、任务执行:NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
6、状态汇报:各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务,在应用程序运行过程中,用户可随时通过RPC向AM查询应用程序的当前运行状态。
7、作业完成:应用程序运行完成后,AM向ResourceManager注销并关闭自己。
相关问答FAQs
问:MapReduce 2.0相比1.0有哪些改进?
答:MapReduce 2.0相比1.0的主要改进在于资源管理和作业调度的分离,在MapReduce 1.x中,JobTracker既负责资源管理又负责作业调度,存在单点故障问题,且资源消耗过大,而在MapReduce 2.0中,这两个功能被拆分为独立的进程:全局的ResourceManager和每个应用特有的ApplicationMaster,这种设计提高了系统的可靠性和扩展性,使得ResourceManager不再成为性能瓶颈。
问:MapReduce 2.0如何确保高可用性和容错性?
答:MapReduce 2.0通过多个机制确保高可用性和容错性,ResourceManager可以部署在高可用模式下,以避免单点故障,如果ApplicationMaster失败,ResourceManager会检测到失败并重新启动AM,每个任务都有心跳机制来汇报其运行状态,如果任务失败,AM可以重新调度该任务到其他节点执行,这些机制共同保证了MapReduce 2.0的高可用性和容错性。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1237924.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复