- Local 本地方式:直接在 IDEA 中运行程序,无需打包发布到集群中,方便测试。
- Standalone 方式:Spark 原生的 Master/Worker 集群,
- Yarn 方式:Hadoop 的 Yarn 集群,recourseManager/NodeManager 集群,通过 Yarn 来进行资源的和管理调度。
本地方式是在本地 JVM 中启动一个进程来模拟运行环境,多个线程进行作业运行,主要用于开发测试。
Standalone,Yarn, 两种方式的区别在于 ClusterManager 的不同,ClusterManager 的作用在于进行各个进程的启动管理,资源的调度。
Standalone的 ClusterManager 是 Master,Yarn是 RecourseManager
两种Depoly Mode(模式):Client,Cluster.
对于不同的 Depoly Mode 模式来说, 区别仅在于启动 Driver 的机器是否在提交作业的机器,若不是,则会有集群管理器分配 Worker 启动 Driver,用于测试环境,但数据量较大的时候,会产生较高的 I/O。
脚本:
standalone:spark-submit --master spark://IP:PORT
yarn-client:spark-submit --master yarn-client
yarn-cluster:spark-submit --master yarn-cluster
standalone 方式,是要在 spark-submit 中,用 --master 指定 Master 进程的 URL。其次,使用 standalone client 模式或 cluster 模式,是要在 spark-submit 中,使用 --deploy-mode client/cluster 来设置默认,如果你不设置 --deploy-mode client/cluster,那么就是 client 模式Standalone
Standalone Client 这种提交模式,主要在于可以在本机 (提交任务的机器) 看到日志输出,用于排查错误,他会在本机上启动 Driver 进程然后请求 Master 分配资源 Executor 线程来执行任务,Master 在 Worker 上启动 Executor 之后注册到 Driver,Driver 会分发 Jar 到各个 Executor, 并将 SparkContext 创建的 Task 发送到 Executor 上执行。
Yarn
Yarn 集群的 Cluster Manager 是 RecourceManager 简称 RM,类似于 Master, 其 NodeManager 相当于 Worker 简称 NM。Yarn
Client
任务提交会在本机上启动 Driver,然后请求 RM 启动 SparkApplicationMaster(Driver),Driver 启动之后请求 RM 分配 Container, 启动 Executor,Executor 启动之后会注册到 Driver 中,Driver 中的 SparkConetxt 会发送 task 给 Executor 执行。
Yarn Cluster
YarnCluster 与 Client 不同的是在提交之后请求 RM 启动 ApplicationMaster,RM 分配 Container 在 NM 启动一个 AM,AM 启动之后注册到 RM 中并连接其他的 NM 启动 Executor。