1

我正在使用 jupyterhub 在 kubernetes 上独立运行 spark 的概念证明。

我想要动态分配,因为我的用户会经常离开键盘,他们的应用程序(笔记本)处于“运行”状态(但没有任务/作业),但司机正在等待工作。

动态分配似乎没有启动。从它正在等待的文档中:

spark.dynamicAllocation.executorIdleTimeout=60s

但是空闲的定义是什么?对我来说,这些笔记本似乎是闲置的

4

1 回答 1

2

有几个原因,

如果您的用户正在设置执行者的数量,那么这个数量的执行者将永远不会被删除。您需要为最小执行者设置的应该是:spark.dynamicAllocation.minExecutors

在我的例子中,我们设置为 2,即使集群已满,数据科学家也可以与最少的执行者一起完成这项工作。

因此,首先检查选项“--num-executors”是否已删除并更改为spark.dynamicAllocation.minExecutors.

未删除工作人员的其他原因是关于缓存数据,如果您的数据科学家有缓存数据,对于这个问题,请检查spark.dynamicAllocation.cachedExecutorIdleTimeout我的用例的选项,我们没有更改。出于这个原因,根据文件说:

包含缓存数据的默认执行程序永远不会被删除

更改选项spark.dynamicAllocation.cachedExecutorIdleTimeout

有关动态分配的更多详细信息,请参阅Spark Summit Europe 2016中的此演示文稿

于 2017-04-26T16:24:56.633 回答