赞
踩
YARN是一个资源调度平台,是为了克服MR1局限性演化而来。
Hadoop1.0中主要由分布式存储系统HDFS和分布式计算框架MapReduce组成。
在这个版本中MapReduce由一个JobTracker和多个 TaskTracker 组成。从设计角度上看, Hadoop 1.0未能够将资源管理相关的功能与应用程序相关的功能分开 ,导致资源管理和应用程序管理混在一起,使得它在扩展性、 容错性和多框架支持等方面存在明显缺陷。
在MR1中,JobTracker 负责资源管理和所有作业的控制, 而 TaskTracker 负责接收来自JobTracker 的命令并执行它。
名词解释:
资源管理:与应用程序无关,只是分配资源:内存 cpu 磁盘等等(资源以container形式存在)
作业控制:直接与应用程序相关的模块, 且每个作业控制进程只负责管理一个作业
在Hadoop1.0中,NameNode存在单点故障问题,不能完成高可用。
在YARN集群中,拆分资源管理和任务调度,将原来的JobTracker分成两个独立的服务:
YARN 专管资源管理和调度, 而 ApplicationMaster 则负责与具体应用程序相关的任务切分、任务调度和容错
YARN 总体上仍然是 Master/Slave 结构, 在整个资源管理框架中,ResourceManager 为Master, NodeManager 为 Slave, ResourceManager 负责对各个 NodeManager 上的资源进行统一管理和调度。 当用户提交一个应用程序时, 需要提供一个用以跟踪和管理这个程序的ApplicationMaster, 它负责向ResourceManager 申请资源, 并要求 NodeManger 启动可以占用一定资源的任务。 由于不同的 ApplicationMaster 被分布到不同的节点上, 因此它们之间不会相互影响
RM 是一个全局的资源管理器, 负责整个系统的资源管理和分配。
两个组件构成:
调度器根据容量、 队列等限制条件,将系统中的资源分配给各个正在运行的应用程序,不再从事任何与具体应用程序相关的工作。
应用程序管理器负责管理整个系统中所有应用程序, 包括应用程序提交、 与调度器协商资源以启动 ApplicationMaster、 监控 ApplicationMaster 运行状态并在失败时重新启动它
NodeManager 是 YARN 集群当中真正资源的提供者,是真正执行应用程序的容器的提供者。
Container 是 YARN 中的资源抽象, 它封装了某个节点上的多维度资源, 如内存、CPU、 磁盘、 网络等,YARN会为每个Task分配一个Container,容器大小是可以随程序要求动态调整的。
一般用于本地测试,Driver进程运行在本地,所以会和RM和AM产生大量网络通信,不过这种模式可以通过webUI访问Driver的状态,方便调试
流程:
Spark的Driver作为一个ApplicationMaster在YARN集群中先启动,然后ApplicationMaster创建应用程序,然后为它向ResourceManager申请资源,并启动Executor来运行Task,同时监控它的整个运行过程,直到运行完成
流程:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。