Spark 作业提交流程
1、编写好一个 SparkAPP,编译成 JAR.
2、上传到 Spark 机器,使用 Spark-Submit 提交作业。
3、根据提交作业的模式启动 Driver,并请求 Cluster Manager 分配资源启动 Executor 线程。
4、Executor 启动成功后反响注册到 Driver 中,Driver 会分发 JAR 包到各个 Executor 上。
5、Driver 上的 SparkContext 会创建 task 发送给 Executor 执行。
6、任务完成,进程 Kill。
Spark 三种作业提交方式
- Local 本地方式:直接子啊 IDEA 中运行程序,无需打包发布到集群中,十分的方便测试。
- Standalone 方式:Spark 原生的 Master/Worker 集群,
- Yarn 方式:Hadoop 的 Yarn 集群,RecourseManager/NodeManager 集群,通过 Yarn 来进行资源的和管理调度。
本地方式是在本地 JVM 中启动一个进程来模拟运行环境,多个线程进行作业运行,主要用于开发测试。这里主要看 Standalone,Yarn,这两种方式的区别在于 ClusterManager 的不同,前者的 ClusterManager 是 Master,后者是 RecourseManager,ClusterManager 的作用在于进行各个进程的启动管理,资源的调度。每方式又可分为两种Depoly Mode(模式):Client,Cluster
.
对于不同的 Depoly Mode 模式来说,区别仅在于启动 Driver 的机器是否在提交作业的机器,若不是,则会有集群管理器分配 Worker 启动 Driver,用于测试环境,但数据量较大的时候,会产生较高的 I/O。对于 Standalone,Yarn 两种方式来说区别在于集群管理器 ClusterManager 的不同。
脚本:
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 是 RecourxeManager 简称 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。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于