Spark on Yarn 未使用所有节点

Sal*_*Sal 5 hadoop hadoop-yarn apache-spark pyspark

我有一个 9 节点 Hadoop 集群,运行具有以下 Yarn 角色的 MapR:

  • 1 个节点是 Yarn ResourceManager
  • 其中 8 个节点是 Yarn NodeManager(其中两个也是备份 ResourceManager)

每当我通过 pyspark 提交 Spark 作业时,我都会看到类似以下内容的内容:

yarn node -list
17/04/26 23:40:26 INFO client.MapRZKBasedRMFailoverProxyProvider: Updated RM address to hadoop-n1/XXX.XXX.XX.XX:8032
Total Nodes:8
         Node-Id             Node-State Node-Http-Address       Number-of-Running-Containers
 hadoop-d8:52118                RUNNING    hadoop-d8:8042                                  4
 hadoop-d5:39108                RUNNING    hadoop-d5:8042                                  0
 hadoop-d2:42471                RUNNING    hadoop-d2:8042                                  0
 hadoop-d4:36191                RUNNING    hadoop-d4:8042                                  0
 hadoop-d3:53476                RUNNING    hadoop-d3:8042                                  0
 hadoop-d6:52497                RUNNING    hadoop-d6:8042                                  4
 hadoop-d1:59887                RUNNING    hadoop-d1:8042                                  0
 hadoop-d7:51878                RUNNING    hadoop-d7:8042                                  4
Run Code Online (Sandbox Code Playgroud)

因此d6d7d8总是被使用(并且总是与 4 个容器一起使用),而其他节点从不被使用。我已经设置了spark.dynamicAllocation.enabledTrue没有什么区别。我尝试重新启动所有 Yarn 进程,但还是没有成功。如何让我的作业在所有节点上运行?

我在 Ubuntu 14.04 上运行 Hadoop 版本 2.7.0、Spark 版本 2.0.1 和 MapR 版本 5.2。Yarn 资源计算器设置为DiskBasedResourceCalculator使用内存、CPU 和磁盘。

编辑:根据评论中建议的答案,我将其更改为DominantResourceCalculator设置spark.executor.instances为 0。仍然没有任何更改。如果我查看未使用的节点之一,我会看到:

% yarn node -status hadoop-d7:35731
17/04/27 16:01:19 INFO client.MapRZKBasedRMFailoverProxyProvider: Updated RM address to hadoop-n1/    Node Report : 
    Node-Id : hadoop-d7:35731
    Rack : /default-rack
    Node-State : RUNNING
    Node-Http-Address : hadoop-d7:8042
    Last-Health-Update : Thu 27/Apr/17 03:59:29:475EDT
    Health-Report : 
    Containers : 4
    Memory-Used : 32768MB
    Memory-Capacity : 97988MB
    CPU-Used : 20 vcores
    CPU-Capacity : 20 vcores
    Node-Labels : 
Run Code Online (Sandbox Code Playgroud)

而好的节点显示

% yarn node -status hadoop-d2:37314
17/04/27 16:01:05 INFO client.MapRZKBasedRMFailoverProxyProvider: Updated RM address to hadoop-n1/
Node Report : 
    Node-Id : hadoop-d2:37314
    Rack : /default-rack
    Node-State : RUNNING
    Node-Http-Address : hadoop-d2:8042
    Last-Health-Update : Thu 27/Apr/17 03:59:32:255EDT
    Health-Report : 
    Containers : 0
    Memory-Used : 0MB
    Memory-Capacity : 70189MB
    CPU-Used : 0 vcores
    CPU-Capacity : 4 vcores
    Node-Labels : 
Run Code Online (Sandbox Code Playgroud)