当前位置: 首页 > 知识库问答 >
问题:

在Spark独立集群中,什么是工作者、执行者、核心?

权承
2023-03-14

>

  • 执行者为每个应用程序。那么工人的角色是什么呢?它是否与执行者协调并将结果反馈给驱动程序?还是司机直接找被执行人对话?如果是的话,那么工人的目的是什么呢?

    如何控制申请执行人数?

    任务可以在执行器中并行运行吗?如果是,如何配置执行器的线程数?

    示例2与示例1相同的集群配置,但我使用以下设置运行一个应用程序--executor-cores10--total-executor-cores10。

    示例3与示例1相同的集群配置,但我使用以下设置运行一个应用程序--executor-cores10--total-executor-cores50。

    示例4与示例1相同的集群配置,但我使用以下设置运行一个应用程序--executor-cores50--total-executor-cores50。

    在每个例子中,有多少执行者?每个执行程序有多少线程?几个核心?每宗申请的被执行人人数是如何决定的?是不是总是和工人的数量一样?

  • 共有1个答案

    鱼志学
    2023-03-14

    Spark采用主/从架构。正如您在图中所看到的,它有一个中央协调器(驱动程序),它与许多分布式工作者(执行器)进行通信。驱动程序和每个执行程序在各自的Java进程中运行。

    驱动程序

    驱动程序是运行主方法的进程。首先,它将用户程序转换为任务,然后在执行器上调度任务。

      null

    您的问题

    >

  • 当执行程序启动时,它们将自己注册到驱动程序中,然后直接通信。工作人员负责向集群管理器通报其资源的可用性。

    在一个YARN集群中,您可以使用--num-executors来实现这一点。在独立集群中,除非您使用spark.executor.cores,并且一个工作器有足够的核心来容纳多个执行器,否则每个工作器将得到一个执行器。(正如@jaceklaskowski指出的,--num-executors在YARN中已不再使用https://github.com/apache/spark/commit/16b6d18613e150c7038c613992d80a7828413e66)

    正如Sean Owen在这篇文章中所说:“没有一个好的理由让每台机器运行一个以上的工人”。例如,在一台机器中会有许多JVM。

    更新

    我还没能测试这种场景,但是根据文档:

  •  类似资料: