什么是Spark Standalone集群中的工作者,执行者,核心?
我阅读了《集群模式概述》,但仍然无法理解Spark Standalone集群中的不同进程和并行性。 工作者是不是JVM进程?我运行bin\start-slave.sh,发现它产生了工作程序,该工作程序实际上是一个JVM。 按照上面的链接,执行程序是为运行任务的工作程序节点上的应用程序启动的进程。执行者也是JVM。 这些是我的问题: 执行器是每个应用程序。那么,工人的角色是什么?它是否与执行程序协调并将结果传达给驱动程序?还是驾驶员直接与执行者对话?如果是这样,那么工人的目的是什么? 如何控制应用程序的执行者数量? 可以使任务在执行程序内部并行运行吗?如果是这样,如何配置执行程序的线程数? 工作者,执行者和执行者核心(--total-executor-cores)之间是什么关系? 每个节点上有更多工人意味着什么? 更新 让我们以例子来更好地理解。 示例1: 具有5个工作节点(每个节点具有8个核心)的独立群集当我使用默认设置启动应用程序时。 示例2 与示例1相同的群集配置,但是我运行具有以下设置的应用程序--executor-cores 10 --total-executor-cores 10。 示例3 与示例1相同的群集配置,但是我运行具有以下设置的应用程序--executor-cores 10 --total-executor-cores 50。 示例4 与示例1相同的群集配置,但是我运行具有以下设置的应用程序--executor-cores 50 --total-executor-cores 50。 示例5 与示例1相同的群集配置,但是我运行具有以下设置的应用程序--executor-cores 50 --total-executor-cores 10。 在每个示例中,有多少执行者?每个执行程序有多少个线程?多少个核心?如何确定每个申请的执行人数量?它总是与工人人数相同吗?