local 单机,所有jobs都在这台机器上运行。
standalone 就是说多台机器组成一个集群,然后jobs可以分在多台机器上运行
yarn 就是说spark程序运行在yarn上
client 就是Jobs在不同机器运行,然后结果返回到这台机器上。
cluster 就是说jobs在不同机器上运行,结果返回到集群中的某一台机器上。
单机:
local[n] 单机伪分布式模式,n个线程分别充当driver和Executors。由于driver和Executors处于同一个jvm,算子可以访问外部的变量。很多新手的坏习惯就是从这里养成的
集群:
standalone spark worker组成集群,Spark内置的集群搭建模式。适合于不太依赖Hadoop的运算环境,或者存储集群和计算集群分离的场景。
yarn 运行与Hadoop Yarn集群之上。作业调度、资源调度由Yarn分配。Yarn在这方面做得比Spark standalone集群好。适用于存储计算合一,或者需要依赖MR、Hive等作业的场景
部署模式:
client driver运行于执行spark-submit脚本的机器上。这机器不一定是集群的节点,你可以在Windows上运行driver,Linux集群运行Executors。
cluster 作业提交后,driver运行于集群上的某一个节点上,集群视其为一个Executor。相当于后台程序。
standalone 和 yarn(还有mesos,这个不了解)都支持client/cluster两种模式。前者由--master参数控制,后者由deploy-mode参数控制
https://blog.51cto.com/xpleaf/2294303