有人可以让我知道如何决定 - 执行内存和--num-of-executors在spark提交作业。 -number-of-cores

时间:2017-07-23 04:36:10

标签: apache-spark

如何在spark提交作业中决定--executor内存和--num-of-executors。什么是-number-of-core的概念。

群集和客户端部署模式之间的明显区别。如何选择部署模式

1 个答案:

答案 0 :(得分:0)

您提出的关于--executor-memory--num-executors--num-executor-cores的问题的第一部分通常取决于您的Spark应用程序要执行的各种任务。

  • Executor Memory指示要分配给运行执行程序的JVM的物理内存量。价值取决于您的要求。例如,如果您只是要解析一个大文本文件,那么您需要的内存比图像处理所需的内存少得多。
  • 执行程序变量的数量是要在群集上生成的Executor JVM的数量。同样,它取决于许多因素,如群集大小,群集中的计算机类型等。
  • 每个执行器分割代码并执行tasks中的指令。这些任务在执行程序核心(或处理器)中执行。这有助于您在某个执行程序中实现并行性,但请确保不将机器的所有内核分配给其执行程序,因为正常运行需要一些内核。

关于问题的第二部分,我们在Spark中有两个--deploy-mode,您已经命名为clusterclient

  • client模式是指将外部计算机连接到群集并从该外部计算机运行spark作业。就像将笔记本电脑连接到群集并从中运行spark-shell一样。在您的笔记本电脑中调用驱动程序JVM,并在断开笔记本电脑后立即终止会话。类似于spark-submit作业的情况,如果您使用--deploy-mode client运行作业,您的笔记本电脑就像主人一样,但是一旦断开工作就会被终止(不确定这个)。
  • cluster模式:当您在作业中指定--deploy-mode cluster时,即使您使用笔记本电脑或任何其他计算机运行它,作业(JAR)也由ResourceManager和ApplicationMaster处理,就像YARN中的任何其他应用程序一样。您将无法在屏幕上看到输出,但无论如何,大多数复杂的Spark作业都会写入FS,以便这样处理。