apache-spark - Spark Shuffle- worker 如何知道从何处提取数据

标签 apache-spark

我正在尝试了解Spark如何在后台洗牌依赖关系。因此,我有两个问题:

  • 在Spark中,执行者如何知道还必须从其他哪些执行者中提取数据?
  • 在完成其 map task 后,每个执行者是否将其状态和位置更新到某个中央实体(可能是驱动程序),并减少侧面执行者首先与驱动程序联系以获取每个执行者的位置?
    直接从那些执行者那里拉出来,然后再从它们那里拉出来?
  • 在具有随机更改依赖关系的作业中,驱动程序是否仅在所有 map 侧任务完成后才调度联接(或其他与随机更改依赖关系相关的任务)?
  • 是否意味着每个任务都会将其状态通知驱动程序,并且驱动程序将及时编排其他相关任务。
  • 最佳答案

    我会以点数回答您的问题

    1.执行者如何知道还必须从哪些其他执行者那里提取数据?
    只是执行者不知道其他执行者会做什么,但是Driver知道您可以认为此过程是当皇后和 worker 皇后将任务推给执行者,并且每个人都将结果返回给任务。

    2.在执行其 map task 后,每个执行者是否将其状态和位置更新到某个中央实体(可能是驱动程序)

    是的,实际上驱动程序监视进程,但是当您创建SparkContext时,每个工作程序都会启动一个执行程序。这是一个单独的进程(JVM),它也会加载您的jar。执行程序重新连接到您的驱动程序。现在,驱动程序可以向他们发送命令,例如您的示例中的flatMap,map和reduceByKey。当驾驶员退出时,执行器将关闭。您也可以检查一下这个答案What is a task in Spark? How does the Spark worker execute the jar file?

    3.减少侧面执行者首先与驱动程序联系,以获取要从中撤回然后直接从这些执行者撤回的每个执行者的位置?
    Reduce任务具有与运行数据的同一台计算机上运行的优先级,因此,除非数据不可用并且没有资源,否则不会有任何改组。

    4.在具有随机更改依赖关系的作业中,是否仅在所有 map 侧任务完成后,驱动程序调度联接(或其他与随机更改依赖关系相关的任务)?

    它是可配置的,您可以更改它。您可以查看此链接以获取更多信息https://0x0fff.com/spark-architecture-shuffle/

    5.这是否意味着每个任务都会将其状态通知驱动程序,并且驱动程序将及时编排其他相关任务?

    每个任务都会通知驾驶员并向他们发送心跳信号,并激发实现推测性执行技术。因此,如果任何任务失败/缓慢 Spark 将运行另一任务。此处有更多详细信息http://asyncified.io/2016/08/13/leveraging-spark-speculation-to-identify-and-re-schedule-slow-running-tasks/

    关于apache-spark - Spark Shuffle- worker 如何知道从何处提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105985/

    相关文章:

    apache-spark - sparklyr ml_kmeans 字段 "features"不存在

    java - 在 Spark Java 中定义要广播的对象的位置

    hadoop - 从 Kafka 读取并写入 parquet 中的 hdfs

    apache-spark - 如何获取 Spark Sql 查询执行计划的 DAG?

    apache-spark - 逻辑回归的 PySpark mllib p 值

    apache-spark - 如何处理Apache Spark中集群节点之间要独立处理的不同图形文件?

    java - 使用Spark的REST API提交时,driver在哪里运行以及如何访问SparkSession?

    python - Pyspark sparkSql 问题

    bash - spark 提交中的多个 driver-java-options

    apache-spark - pyspark - 从 Hive 分区列逻辑获取最新分区