首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YARN的两种运行模式

YARN的两种运行模式

作者头像
张凝可
发布2019-08-22 10:50:42
1.7K0
发布2019-08-22 10:50:42
举报
文章被收录于专栏:技术圈技术圈

YARN是一种资源管理机制,可以基于这种资源管理机制运行多种计算框架,比如mapreduce和storm,任何框架与YARN的结合,都必须遵循YARN的开发模式,下图为YARN框架的基本原理。

其中,ResourceManager和NodeManagers是整个计算框架的核心部分,ResourceManager负责资源的分配,将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是Container,Container封装了内存,磁盘和网络,每个任务都会被分配一个Container,该任务使用Container中的资源执行,而NodeManager则是一个计算节点的管理着,负责启动Application所需的Container,并且对对内部资源进行监控,将内存,磁盘,CPU等资源的使用情况汇报给ResourceManager.

YARN运行模式根据Driver在集群中的位置可以分为YARN-Client模式和YARN-Cluster模式。

YARN-Client运行模式如下图所示

值得注意的是,在SparkContext启动过程中,初始化DAGShedular调度器, 初始化YarnScheduler和YarnClientShedularBackend,和启动DriverEndpoint和Client过程,都是在客户端Client过程中进行的。

在spark-submit 脚本提交应用程序可以通过参数列表中--master yarn-client 设置为Yarn-Client模式, YARN-Client模式中,Driver在客户端本地运行,这种模式可以使得Spark Application和客户端进行交互, 因为Driver在客户端本地运行, 使得Spark Application 和 客户端进行交互, 可以通过WebUI访问Driver的状态。

YARN-Cluster运行模式如下图所示

在YARN-Cluster运行模式中,当用户向YARN中提交的一个应用程序后,YARN将分为两个阶段运行在该应用程序,第一个阶段是把Spark的Driver作为一个Application Master在YARN集群中先启动,第二个阶段是由Application Master创建应用程序,然后为它向Resource Manager申请资源,并启动Executor运行任务急,监控运行过程。

在YARN-Cluster运行模式下,客户端只负责提交应用程序,这个过程包括启动Application Master命令,提交给Application Mater的程序和需要在Executor中运行的程序等。而关于SparkContext的初始化则是由ResourceManager在收到Client的请求后,在集群中选择一个NodeManager,为该应用程序分配Container,启动Application Master,其中Application Master对SparkContext进行初始化,这是YARN两种运行模式下最直观的区别。而在YARN-Client运行模式下,ResourceManager虽然在收到请求后也会在集群中选择一个NodeManager,并分配Container,并在这个Container中启动Application Master,但是这个Application Master并不运行Spark Context,只是与其建立联系,进行资源的分配。

YARN-Client 与 YARN-Cluster对比

理解YARN-Client和YARN-Cluster的区别, 主要要了解Application Master, 在YARN中,每个Application 实例都有一个Application Master进程, 它是Application启动的第一个容器。它负责和Resource Manager打交道并请求资源,获取资源之后告诉NodeManager 为其启动Container. 所以YARN-Cluster 和 YARN-Client的区别其实就是Application Master进程的区别。

YARN-Client 模式:Application Master仅仅向YARN请求Executor, Client会和请求的Container的通信来调度它们工作,Client是不能离开的。

YARN-Cluster模式:Driver 运行在Application Master中, 它负责向YARN申请资源,并监督作业的运行情况, 当用户提交了作业之后,就可以关于关闭Client,作业会继续在YARN上运行, 因而YARN-cluster模式不适合进行交互式类型的作业。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档