来自不同Spark应用程序的两个执行程序/驱动程序可以在群集模式下的同一节点上运行吗?

问题描述

我在Medium中阅读了一篇文章,该文章声称执行程序的数量+ 1(对于驱动程序)应为3的倍数,以有效利用机器上的内核(在这种情况下为16个内核,即每个内核5个内核)。 executor和1个将保留给OS和节点管理器)

由于实际原因,我无法通过在集群上进行实验来验证此声明。有人尝试过吗?还是参考了代码/文档说明Yarn节点将/不会在另一个Spark应用程序之间共享群集资源?

解决方法

这是一个大问题,但总之-根据标题和文本中的YARN:

  • 您将通过Spark(提交)获得由YARN分配的资源。

  • 一个节点有很多执行程序。

  • 您不能同时共享一个执行者,但是在阶段完成之后,如果YARN动态资源分配有效,则可以放弃该执行者。

  • 由于一个节点有许多执行程序,因此,如果授予许多资源,那么许多Spark Apps可以在同一节点(即Worker)上同时运行其任务。