Spark 的作业提交方式(Standalone,Yarn)

本贴最后更新于 2683 天前,其中的信息可能已经天翻地覆

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。

  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 552 关注
  • Standalone
    1 引用
  • Yarn
    11 引用 • 5 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
rzx
此生最怕深情被辜负,最怕兄弟成陌路。对世界充满善意,同时又充满深深的恨意,我渴望天降甘霖福泽众生,又渴望灭世洪水重创世纪。 广州