我正在使用 jupyterhub 在 kubernetes 上独立运行 spark 的概念证明。
我想要动态分配,因为我的用户会经常离开键盘,他们的应用程序(笔记本)处于“运行”状态(但没有任务/作业),但司机正在等待工作。
动态分配似乎没有启动。从它正在等待的文档中:
spark.dynamicAllocation.executorIdleTimeout=60s
但是空闲的定义是什么?对我来说,这些笔记本似乎是闲置的
我正在使用 jupyterhub 在 kubernetes 上独立运行 spark 的概念证明。
我想要动态分配,因为我的用户会经常离开键盘,他们的应用程序(笔记本)处于“运行”状态(但没有任务/作业),但司机正在等待工作。
动态分配似乎没有启动。从它正在等待的文档中:
spark.dynamicAllocation.executorIdleTimeout=60s
但是空闲的定义是什么?对我来说,这些笔记本似乎是闲置的
有几个原因,
如果您的用户正在设置执行者的数量,那么这个数量的执行者将永远不会被删除。您需要为最小执行者设置的应该是:spark.dynamicAllocation.minExecutors
在我的例子中,我们设置为 2,即使集群已满,数据科学家也可以与最少的执行者一起完成这项工作。
因此,首先检查选项“--num-executors”是否已删除并更改为spark.dynamicAllocation.minExecutors
.
未删除工作人员的其他原因是关于缓存数据,如果您的数据科学家有缓存数据,对于这个问题,请检查spark.dynamicAllocation.cachedExecutorIdleTimeout
我的用例的选项,我们没有更改。出于这个原因,根据文件说:
包含缓存数据的默认执行程序永远不会被删除
更改选项spark.dynamicAllocation.cachedExecutorIdleTimeout
有关动态分配的更多详细信息,请参阅Spark Summit Europe 2016中的此演示文稿