客户端提交的每个应用程序都可以在每个节点管理器中启动多少个YARN容器?

时间:2016-08-21 03:51:33

标签: apache-spark containers yarn workmanagertaskexecutor

容器是YARN中的抽象概念。在YARN上运行Spark时,每个Spark执行程序都作为YARN容器运行。每个客户端提交的应用程序可以在每个节点管理器中启动多少个YARN容器?

2 个答案:

答案 0 :(得分:0)

只要拥有资源,就可以根据需要在单个NodeManager上运行尽可能多的执行程序。如果您的服务器具有20GB RAM和10个内核,则可以在该nodemanager上运行10个2gb 1core执行程序。在同一个nodemanager上运行多个执行程序是不明智的,因为执行程序之间的数据混乱会产生开销,即使它们的进程在同一台机器上运行也是如此。

答案 1 :(得分:0)

每个执行程序都在YARN容器中运行。

根据YARN群集的大小,您的数据如何在工作节点之间展开,以获得更好的数据位置,为应用程序请求的执行程序数,每个执行程序的核心数(每个执行程序的内核数)每个执行程序请求以及您是否已启用动态资源分配,Spark决定总共需要多少执行程序,以及每个工作节点启动多少执行程序。

如果您请求YARN群集无法容纳的资源,您的请求将被拒绝。

以下是制作spark-submit请求时要注意的属性。

  • - num-executors - 您需要的总执行人数
  • - executor-cores - 每个执行程序的核心数。建议使用最大5。
  • - executor-memory - 每个执行程序的内存量。
  • - spark.dynamicAllocation.enabled
  • - spark.dynamicAllocation.maxExecutors