从传统操作系统角度理解Hadoop YARN

来源:互联网 发布:淘宝网怎么注册卖家 编辑:程序博客网 时间:2024/06/13 20:23
YARN是Apache的新引入的子系统,与MapReduce和HDFS并列,是一个资源管理系统,如果你了解MapReduce,那么可对比理解YARN,它的基本设计思想是将MapReduce中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster则负责单个应用程序的管理。

当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序:第一个阶段是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行成功。如图2-7所示,YARN的工作流程分为以下几个步骤(图和文字摘自《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》一书第12章 “下一代MapReduce框架”):

步骤1 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

步骤2 ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。

步骤3 ApplicationMaster首先向ResourceManager注册,这样,用户可以直接通过ResourceManage查看应用程序的运行状态,然后,它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。

步骤4 ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。

步骤5 一旦ApplicationMaster申请到资源后,则与对应的NodeManager通信,要求其启动任务。

步骤6 NodeManager为任务设置好运行环境(包括环境变量、jar包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

步骤7 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。

步骤8 应用程序运行完成后,ApplicationMaster向ResourceManager注销,并关闭自己。

在单机程序设计中,为了快速处理一个大的数据集,通常采用多线程并行编程,大体流程如下:先由操作系统启动一个主线程,由它负责数据切分、任务分配、子线程启动和销毁等工作,而各个子线程只负责计算自己的数据,当所有子线程处理完数据后,主线程再退出。类比理解,YARN上的应用程序运行过程与之非常相近,只不过它是集群上的分布式并行编程。可将YARN看做一个云操作系统,它负责为应用程序启动ApplicationMaster(相当于主线程),然后再由ApplicationMaster负责数据切分、任务分配、启动和监控等工作,而由ApplicationMaster启动的各个Task(相当于子线程)仅负责自己的计算任务,当所有任务计算完成后,ApplicationMaster认为应用程序运行完成,然后退出。

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/understand-hadoop-yarn-from-os-view/

0 0