我的理解正确吗?
申请: 一个火花屈服
阶段: 它与洗牌和转换类型有关。 我很难理解舞台的边界
任务: 它是单元操作。每个任务一个转换。每个任务一个转换。
帮助想要提高这种理解。
主要功能是应用程序。
当你在 RDD 上调用一个动作时,一个“作业”就被创建了。作业是提交给 Spark 的作业。
根据洗牌边界,工作被划分为“阶段”。 这个可以帮助你理解。
每个阶段根据 RDD 中分区的数量进一步划分为多个任务。所以任务是 Spark 的最小工作单元。
从“开发人员学习阿帕奇的七个步骤”的火花
对 Spark 应用程序的剖析通常包括 Spark 操作,这些操作可以是对 使用 Spark 的 RDD、 DataFrames 或 DatasetsAPI 的数据集 例如,在 Spark 应用程序中,如果调用一个操作,比如 Collection () 或者在数据框架或数据集上使用() ,则该操作将创建一个作业。 然后一个作业将被分解成单个或多个阶段; 阶段 进一步分为单独的任务; 和任务的单位 Spark 驱动程序的调度程序运送到 Spark 执行程序的执行 要在集群中执行的 Spark worker 节点上 任务将在同一执行器上并行运行,每个执行器处理其 内存中分区数据集的单位。
这是我在 Cloudera 文档中发现的一个非常好的定义。
在 MapReduce 中,最高级别的计算单元是作业。作业加载数据、应用映射函数、对其进行洗牌、应用 reduce 函数并将数据写回持久存储。 但是在 Spark 中,最高级别的计算单元是应用程序。Spark 应用程序可用于单个批处理作业、具有多个作业的交互式会话或持续满足请求的长期服务器。Spark 作业可以由多个映射和 reduce 组成。
Application -使用其 API 构建在 Spark 上的用户程序。它由一个驱动程序和集群上的执行程序组成。
Job -由多个任务组成的并行计算,这些任务响应 Spark 操作而产生(例如,save ()、 Collection ())。 在使用 Spark shell 的交互会话期间,驱动程序将 Spark 应用程序转换为一个或多个 Spark 作业。然后,它将每个作业转换为 DAG。本质上,这就是 Spark 的执行计划,其中 DAG 中的每个节点可以是单个或多个 Spark 阶段。
Stage -每个作业被划分为更小的任务集,称为相互依赖的阶段。 作为 DAG 节点的一部分,根据可以串行或并行执行的操作创建阶段。并非所有 Spark 操作都可以发生在单个阶段,因此它们可以分为多个阶段。通常在运算符的计算边界上划定阶段,它们指示 Spark 执行器之间的数据传输。
Task -将发送给 Spark 执行器的单个工作或执行单元。 每个阶段由 Spark 任务(一个执行单元)组成,然后在每个 Spark 执行器之间进行联合; 每个任务映射到单个核心,并在单个数据分区上工作。因此,一个有16个核心的执行器可以有16个或更多的任务并行地处理16个或更多的分区,这使得 Spark 的任务的执行非常并行!
免责声明: 内容复制自: Learning Spark
在 Spark 中,当火花提交被称为用户代码时,它被划分为称为作业、阶段和任务的小部分。
工作 Job 是由. count ()、 foreachRdd ()、 Collection ()、 read ()或 write ()等操作触发的一系列阶段。
舞台 “舞台”是一系列任务,它们可以一起并行运行,而不需要进行洗牌。 例如:。从磁盘读取文件,然后运行。地图和。过滤器都可以做,没有洗牌,所以它可以适合在一个单一的阶段。
任务 Task 是一个单独的操作(。地图或。过滤器)应用于单个分区。每个 Task 作为一个执行器中的单个线程执行。如果数据集有2个分区,则诸如 filter ()之类的操作将触发2个任务,每个分区一个任务。例如,任务是在执行器上执行的,任务的数量取决于分区的数量。1个分区需要1个任务。