Spark Jupyter动态分配

时间:2017-04-26 15:57:14

标签: apache-spark jupyter-notebook apache-toree

我正在使用jupyterhub在kubernetes上单独使用spark进行概念验证。

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

动态分配似乎没有起作用。从它正在等待的文档:

spark.dynamicAllocation.executorIdleTimeout=60s

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

1 个答案:

答案 0 :(得分:2)

原因很少,

如果您的用户正在设置执行程序的数量,则永远不会删除此执行程序数。您需要为最小执行者设置的内容应为:spark.dynamicAllocation.minExecutors

在我的情况下,我们将其设置为2,即使群集已满,数据科学家也可以使用最少数量的执行程序。

首先检查是否删除了选项'--num-executors'并更改为spark.dynamicAllocation.minExecutors

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

  

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

更改spark.dynamicAllocation.cachedExecutorIdleTimeout

的选项

有关动态分配的详细信息,请参阅Spark Summit Europe 2016

中的此演示文稿