2017-04-26 72 views
1

我正在用jupyterhub在kubernetes上启动一个带有spark独立的概念验证。Spark Jupyter动态分配

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

动态分配似乎并没有在踢从文档它正在等待:

spark.dynamicAllocation.executorIdleTimeout=60s 

,但什么是闲置的定义是什么?对我来说,似乎这些笔记本电脑处于闲置状态

回答

1

有针对几个原因,

如果您的用户设置执行者的号码,这个号码执行人将永远不会被删除。你需要为最小执行者设置:spark.dynamicAllocation.minExecutors

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

因此,首先检查'--num-executors'选项是否被移除并更改为spark.dynamicAllocation.minExecutors

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

默认执行人没有拆除

更改为spark.dynamicAllocation.cachedExecutorIdleTimeout

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

此演示文稿