YARN
1) YARN(Yet Another Resource Negotiator)是集群资源管理系统
2) YARN提供请求和使用集群资源的API,因为通用性,还可以支持其他的分布式计算模式,如Spark,Storm等
集群层次框架:
Upper Application | Pig/Hive/Crunch |
Application | MapReduce/Spark/Tez |
Compute | YARN |
Storage | HDFS and HBase |
通用YARN应用运行机制
角色:
resource manager 资源管理器:YARN的守护进程,管理集群资源使用
node manager 节点管理器:YARN的守护进程,启动和监控容器,运行在集群中所有节点上
container 容器:执行job进程,容器有资源限制(内存,CPU等),具体容器取决于YARN配置
在YARN运行应用步骤:
1) 首先客户端请求RM,运行一个application master
2) RM找到可以在容器中启动application master的NM,在NM启动容器,运行application master
3) 容器通过心跳机制向RM请求运行资源(内存和CPU)
4) application master运行起来之后需要做什么依赖于客户端传递的应用
a. 简单地运算后直接返回结果给客户端
b. 请求更多容器进行分布式计算
YARN通信手段:
YARN不提供任何手段用于应用各部分(客户端/application master/进程)通信,使用具体应用的远程通信机制(如Hadoop的RPC层)来向客户端返回状态和结果
YARN资源请求的灵活性:
1) 指定每个容器的计算机资源数量(内存和CPU)
2) 容器的本地限制要求,可以申请指定节点,机架或集群中任意位置(包含集群外)的容器
3) 可以在运行中的任意时刻请求资源,可以一开始请求所有资源(Spark);也可以动态申请,随着应用程序的运行而动态地请求(MapReduce先Map后Reduce)
应用生命期-三种模型
这里的应用指的是applicatoin master,用来处理job的YARN的应用进程
1) 一个用户作业对应一个application master(MapReduce)
2) 作业的每个工作流或者每个用户对话对应一个application master
效率高,容器可以在作业之间重用,可能缓存中间数据,Spark使用这种模型
3) 多个用户共享一个长期运行的应用
这种application master作为协调者身份运行,一个always on的application master,则无需启动新的application master,低开销,低响应延迟