一、Yarn Cluster模式
二、Yarn Client模式
对比两种模式的架构图,可以看出,两者的本质区别:AM进程的区别。
Cluster模式下,driver运行在AM中,负责向Yarn(RM)申请资源,并监督Application的运行情况,当Client(这里的Client指的是Master节点)提交作业后,就会关掉Client,作业会继续在yarn上运行,这也是Cluster模式不适合交互类型作业的原因。而Client模式,AM仅向Yarn(RM)申请executor资源,之后Client会和请求的Container通信来进行任务的调度,即Client不能被关闭。
在工作当中,常常采用的工作方式是,先在Client模式下调通项目,然后再将项目提交到Cluster下运行。所以,跑一些SparkSQL程序的时候,经常会遇到类似的问题:为什么Client可以跑通程序,而放到Cluster上,就报错呢?