gpt4 book ai didi

apache-spark - Spark 如何将切片并行化到任务/执行器/工作器?

转载 作者:行者123 更新时间:2023-12-04 01:04:03 24 4
gpt4 key购买 nike

我有一个 2 节点 Spark 集群,每个节点有 4 个核心。

        MASTER
(Worker-on-master) (Worker-on-node1)

Spark 配置:
  • 从站:主站,节点 1
  • SPARK_WORKER_INSTANCES=1

  • 我想了解 Spark 的 paralellize行为。 sparkPi 示例具有以下代码:
    val slices = 8  // my test value for slices
    val n = 100000 * slices
    val count = spark.parallelize(1 to n, slices).map { i =>
    val x = random * 2 - 1
    val y = random * 2 - 1
    if (x*x + y*y < 1) 1 else 0
    }.reduce(_ + _)

    根据文档:

    Spark will run one task for each slice of the cluster. Typically you want 2-4 slices for each CPU in your cluster.



    我将切片设置为 8,这意味着工作集将在集群上的 8 个任务中分配,每个工作节点依次获得 4 个任务(每个核心 1:1)

    问题:
  • 我在哪里可以看到任务级别的详细信息?在执行器内部,我看不到任务分解,因此我可以看到切片对 UI 的影响。
  • 如何以编程方式找到上述 map 函数的工作集大小?我假设它是 n/slices (100000 以上)
  • 执行器运行的多个任务是在多个线程中顺序运行还是并行运行?
  • 每个 CPU 2-4 个切片背后的推理。
  • 我认为理想情况下我们应该调整 SPARK_WORKER_INSTANCES对应于每个节点(在同构集群中)的核心数量,以便每个核心获得自己的执行器和任务(1:1:1)
  • 最佳答案

    我会尽量回答你的问题:

    1.- 我在哪里可以看到任务级别的详细信息?

    提交作业时,Spark 会在除主节点之外的每个工作节点上存储有关任务分解的信息。我相信这些数据存储在 spark 目录下的工作文件夹中(我只使用 Spark for EC2 进行了测试)。

    2.- 如何以编程方式找到 map 功能的工作集大小?

    虽然我不确定它是否将切片的大小存储在内存中,但第一个答案中提到的日志提供了有关每个 RDD 分区包含的行数的信息。

    3.- 执行器运行的多个任务是在多个线程中顺序运行还是并行运行?

    我相信节点内的不同任务按顺序运行。这显示在上面指示的日志中,指示每个任务的开始和结束时间。

    4.- 每个 CPU 2-4 个切片背后的推理

    一些节点比其他节点更快地完成他们的任务。拥有比可用内核更多的切片以平衡的方式分配任务,避免由于节点较慢而导致处理时间过长。

    关于apache-spark - Spark 如何将切片并行化到任务/执行器/工作器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677407/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com