一 :Spark运行模式分类
Spark运行模式分为三种:
- local 本地部署
单机运行 , 通常用于演示或者测试 , Shell 命令行
- standlone 本地部署
独立运行在一个集群中( 利用Spark自身的资源调度方式 )
- Yarn/Mesos 模式
运行在资源管理器上 , 比如Yarn或者Mesos
Spark on Yarn 有两种模式
Yarn-client 模式
Yarn-cluster 模式
二:Spark各运行模式的应用场景
1、本地模式:
• 将一个应用程序已多线程的方式运行在本地
本地模式分类:
- Local : 只启动一个executor
- Local[K] : 启动K个executor
- Local[*] : 启动跟CPU数目相同的executor
2、Standalone模式:
即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统由master/slaves服务组成的,且起初master均存在单点故障,后来均通过zookeeper解决,各个节点上的资源被抽象成粗粒度的slot,有多少slot能同时运行多少task
3、spark on yarn
运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理, Spark 负责任务调度和计算
3.1、spark yarn-client模式
适用于交互和调试 , 客户端能看到application的输出,如下图:
3.2、spark yarn-cluster 模式
通常用于生产环境,job直接调度在yarn上执行,客户端无法感知。
一般我们在线上生产环境中,大部分采用的是YARN-cluster模式(除非你大数据框架没有使用Hadoop,那么可以考虑使用mesos)
三:yarn-client & yarn-cluster的区分
yarn-client & yarn-cluster的区分
广义区分:
- yarn-client : 适用于交互和调试 , 客户端能看到application的输出
- yarn-cluster : 通常用于生产环境
深层次区分:
1 : yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别
2 : yarn-cluster模式下, driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。
当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行。
3 : yarn-client模式下 , Application Master仅仅向YARN请求executor , client会和请求的container通信来调度他们工作