Google Dataproc 节点空闲

Google Dataproc node idle

我的 Dataproc 集群中的一个节点在 运行 spark 作业时始终处于空闲状态。我试过删除并重新创建集群等。但它总是有一个空闲节点。

每隔几秒出现的日志中的这三行似乎表明了原因:

Trying to fulfill reservation for application application_1476080745886_0001 on node: cluster-4-w-0.c.xxxx.internal:39080
Reserved container  application=application_1476080745886_0001 resource=<memory:4608, vCores:1> queue=default: capacity=1.0, absoluteCapacity=1.0, usedResources=<memory:25600, vCores:6>, usedCapacity=0.90909094, absoluteUsedCapacity=0.90909094, numApps=1, numContainers=6 usedCapacity=0.90909094 absoluteUsedCapacity=0.90909094 used=<memory:25600, vCores:6> cluster=<memory:28160, vCores:40>
Skipping scheduling since node cluster-4-w-0.c.xxxx.internal:39080 is reserved by application appattempt_1476080745886_0001_000001

节点 cluster-4-w-0.c.xxxx.internal 是空闲节点。为什么一个节点被 appattempt_1476080745886_0001_000001 保留并且不能用作执行器?

由于应用尝试与您的 Spark 应用程序的应用程序 ID 匹配,我相信应用尝试是 Spark 的 YARN AppMaster。默认情况下,Spark AppMasters 具有与 Executors(半个节点)相同的足迹(有点过分)。所以默认情况下应该消耗一半的工人。

如果您没有更改某些内存配置,我不确定为什么该节点上不会至少有一个执行程序。在任何情况下,您都可以通过减少 spark.yarn.am.cores and spark.yarn.am.memory.

来缩小 AppMaster

您可以通过 SSH 连接到集群并 运行 yarn application -list 或导航到 ResourceManager's WebUI.

来更好地调试容器打包