2

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

4

2 回答 2

1

只要您有资源,您就可以在单个 NodeManager 上运行任意数量的执行程序。如果您有一台具有 20gb RAM 和 10 个内核的服务器,则可以在该节点管理器上运行 10 个 2gb 1core 执行程序。不建议在同一个节点管理器上运行多个执行器,因为在执行器之间混洗数据存在开销成本,即使它们的进程在同一台机器上运行。

于 2016-08-21T06:05:57.653 回答
0

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

取决于你的 YARN 集群有多大,你的数据如何分布在工作节点之间以获得更好的数据局部性,你为你的应用程序请求了多少执行器,你为每个执行器请求了多少资源(每个执行器的核心,每个执行器的内存)以及您是否启用了动态资源分配,Spark 会决定总共需要多少个执行器,以及每个工作节点启动多少个执行器。

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

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

  • --num-executors - 你需要的执行者总数
  • --executor-cores - 每个执行程序的核心数。建议最多 5 个。
  • --executor-memory - 每个执行程序的内存量。
  • --spark.dynamicAllocation.enabled
  • -- spark.dynamicAllocation.maxExecutors
于 2018-05-21T16:09:41.053 回答