Apache spark 简单来说,Spark是如何安排工作的?

Apache spark 简单来说,Spark是如何安排工作的?,apache-spark,cloud,Apache Spark,Cloud,只是想知道Spark是如何安排工作的?请简单地说,我已经阅读了很多关于它是如何工作的描述,但它们太复杂了,难以理解。我认为spark作业是FIFO(先进先出)。spark的调度程序以FIFO方式运行作业 还可以配置作业之间的公平共享 要启用公平调度程序,只需在配置SparkContext时将spark.scheduler.mode属性设置为公平: > val conf = new SparkConf().setMaster(...).setAppName(...) > conf.se

只是想知道Spark是如何安排工作的?请简单地说,我已经阅读了很多关于它是如何工作的描述,但它们太复杂了,难以理解。

我认为spark作业是FIFO(先进先出)。

spark的调度程序以FIFO方式运行作业

还可以配置作业之间的公平共享

要启用公平调度程序,只需在配置SparkContext时将
spark.scheduler.mode
属性设置为公平:

> val conf = new SparkConf().setMaster(...).setAppName(...)
> conf.set("spark.scheduler.mode", "FAIR") val sc = new
> SparkContext(conf)

有关更多详细信息,请查看

取决于您所称的作业-如果您谈论的是独立提交,这实际上不是由spark处理的,而是由主机环境(mesos或Hadoop)处理的


默认情况下,单个spark上下文中的不同作业将使用FIFO,除非您将其配置为在高级别使用公平调度程序,否则当对RDD调用任何操作时,spark将创建DAG并提交给DAG调度程序

  • DAG调度程序将操作员划分为任务的各个阶段。阶段由基于输入数据分区的任务组成。DAG调度程序将运算符管道化在一起。例如,许多map操作员可以在单个阶段安排。DAG调度程序的最终结果是一组阶段

  • 阶段传递给任务调度器。任务调度器通过集群管理器启动任务。(Spark Standalone/Thread/Mesos)。任务计划程序不知道阶段的依赖关系

  • 工人在从机上执行任务


查看了解更多信息

好问题。这些术语在不同的地方以不同的方式使用,可能具有挑战性。Spark最让人困惑的是,一个应用程序的一次运行可以产生多个作业,每个作业都被分解成多个任务!例如,如果应用程序是多线程的,则每个线程都可以生成一个Spark作业。但是,在正常情况下,应用程序与作业是一对一的。应用程序的一次运行生成一个作业

现在,Spark是以一种灵活的方式制作的,因此它将调度部分解耦,并使其可插拔。可以插入许多不同的调度程序。最流行的3个是Thread,来自Hadoop、Mesos和Spark自己的内置调度器。因此,存在各种各样的调度行为

接下来令人困惑的是,作业和任务都是计划的。作业被分配了资源。这可以静态地完成,因此,假设一组服务器被分配给一个作业,然后该作业是唯一可以使用这些服务器的作业。或者,可以在作业之间共享资源。分配资源后,作业将指向任务调度器。然后,作业生成任务并将其交给任务调度器,任务调度器将任务分配给特定资源。将资源分配给作业的同一实体还提供任务调度器(即,内置的纱线、Mesos或Spark)。因此,任务调度器的工作方式也存在差异

通常,调度器会尝试跟踪数据的位置,然后将任务分配给数据已经驻留的位置或有足够可用网络容量移动数据的位置


复杂的因素是任务之间相互依赖。强制执行这些依赖关系实际上是调度过程的一部分,但Spark术语在这一点上会混淆。在Spark中,只有任务最终分配给处理器才称为“调度”

我给你举个例子

  • 假设您有一个执行以下操作的应用程序

  • 从HDFS读取数据
  • 列_1上的过滤器op
  • 列_2上的过滤器op
  • 列_3上的过滤器op
  • 将RDD写入HDFS
  • Spark的DAGScheduler分析应用程序中的操作过程,并设计实现任务的最佳方法
  • 我的意思是,它将把所有三个过滤器视为一个阶段,而不是每个过滤器操作都有单独的阶段。因此,它不会对数据集进行三次筛选,而是只扫描一次。这无疑是一种优化的方法

希望这有帮助。

调度程序上Spark summit中的Dataricks会话:


假设我在客户端模式下运行Spark客户端程序,在独立模式下运行Spark Cluster。谁创建了DAG?Spark Client创建DAG还是Spark Master创建DAG?Spark客户端程序是否指导工作人员运行哪些转换?