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