是否可以在单个Spark工作者中为一个Spark应用程序启动多个执行程序?

jav*_*dba 5 apache-spark

我们正在运行的内核比SPARK_WORKER_CORES(设置为1)所预期的更多。作为深入研究的一部分,我们考虑一下文档中的几个spark组件及其描述:

  • 辅助节点 可以在集群中运行应用程序代码的任何节点

  • 执行程序为执行程序的工作程序节点上的应用程序启动的进程,用于运行任务并将数据跨任务存储在内存或磁盘存储中。每个应用程序都有自己的执行程序。

所以-对于最后一句话:给定工作节点上的单个应用程序上可以有多个执行程序吗?还是只有一个?

Dan*_*don 5

对的,这是可能的。原则上,您将Spark配置为具有一定数量的执行程序,并且每个执行程序具有一定数量的内核。节点数转换为Yarn或其他群集处理资源的方式,但是AFAIK Spark对此完全不可知。

如果节点具有足够的内存和核心,则群集很有可能将两个执行程序分配给同一节点。归根结底,这些只是要分发的资源。您将看到文档中的配置示例与节点无关:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn-cluster \
    --num-executors 3 \
    --driver-memory 4g \
    --executor-memory 2g \
    --executor-cores 1 \
    lib/spark-examples*.jar \
    10
Run Code Online (Sandbox Code Playgroud)