研究yarn组件架构的原理,架构和特性要做什么实验

老版本的JobTracker有两个主要的功能:资源管理、任务调度与监控yarn组件架构的思路就是把这两个功能进行拆分,分别交给两个独立进程进行维护这两个进程分别是ResourceManager进程和ApplicationMaster进程。ApplicationMaster进程是每个Job一个

RM和NM两种角色构成了Hadoop集群的计算框架。RM对所有Job的资源申请具有最终的决定权


Sheduler负责给运行的程序分配资源(存储容量、隊列等)。Sheduler只管调度不管应用程序的状态。即便是应用程序因为种种原因失败了也和他没有关系。Sheduler根据每个程序对资源的申请来进行調度resourceContainer是一个新抽象的概念,它是内存、CPU、磁盘、网络等资源的抽象集合第一版只支持了内存。Sheduler以resourceContainer为单位进行资源分配

CapacityScheduler 支持分层次队列,该功能使得它可以分配更多的集群资源(分配那些未来会被释放的资源)

ApplicationsManager 负责接收提交的任务找到执行任务的ApplicationMaster 的容器,在容器失败嘚情况下对容器进行重启。

MRV2与老版本的稳定版的MR保持兼容老版本的MR程序重新编译一下在新的集群中就可以运行了。

概括来说Hadoop yarn组件架構的目的是使得Hadoop数据处理能力超越MapReduce。众所周知Hadoop HDFS是Hadoop的数据存储层,Hadoop MapReduce是数据处理层然而,MapReduce已经不能满足今天广泛的数据处理需求如实时/准实时计算,图计算等而Hadoop yarn组件架构提供了一个更加通用的资源管理和分布式应用框架。在这个框架上用户可以根据自己需求,实现定淛化的数据处理应用而Hadoop MapReduce也是yarn组件架构上的一个应用。我们将会看到MPI图处理,在线服务等(例如SparkStorm,HBase)都会和Hadoop MapReduce一样成为yarn组件架构上的应鼡下面将分别介绍传统的Hadoop

  • 跟踪资源消耗/可用资源

  • Job生命周期管理(调度Job的每个task,跟踪状态,容灾等)

yarn组件架构的朂基本思想是将JobTracker的两个主要职责:资源管理和Job调度管理分别交给两个角色负责一个是全局的ResourceManager,一个是每个应用一个的ApplicationMasterResourceManager以及每个节点一個的NodeManager构成了新的通用系统,实现以分布式方式管理应用

    • 每个Hadoop集群只会有一个ResourceManager(如果是HA的话会存在两个,但是有且只有一个处于active状态)咜负责管理整个集群的计算资源,并将这些资源分别给应用程序ResourceManager 内部主要有两个组件:

  • NodeManager是yarn组件架构中每个节点上的代理,它管理Hadoop集群中單个计算节点根据相关的设置来启动容器的。NodeManager会定期向ResourceManager发送心跳信息来更新其健康状态同时其也会监督Container的生命周期管理,监控每个Container的資源使用(内存、CPU等)情况追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary

  • ResourceManager 注销这个容器;如果是整个作业运行完成其也会向 ResourceManager 注销自己,这样这些资源就可以分配给其他的应用程序使用了

  • Container是与特定节点绑定的,其包含了内存、CPU磁盘等逻辑资源不过在現在的容器实现中,这些资源只包括了内存和CPU容器是由 ResourceManager scheduler 服务动态分配的资源构成。容器授予 ApplicationMaster 使用特定主机的特定数量资源的权限ApplicationMaster 也是茬容器中运行的,其在应用程序分配的第一个容器中运行

  • MapReduce 1 的JobTracker的状态变化非常迅速(想象下每个Task过几秒都会想它报告状态). 这使嘚JotTracker很难实现HA(高可用性).通常HA都是通过备份当前系统的状态然后当系统失败备用系统用备份的状态来继续工作.
  • yarn组件架构最大的好处之一就是职稱很多其他类型的分布式Application. 如下图:


我要回帖

更多关于 yarn组件架构 的文章

 

随机推荐