Spark Jupyter 动态分配
Spark Jupyter Dynamic Allocation
我正在使用 jupyterhub 在 kubernetes 上使用独立的 spark 进行概念验证。
我想要动态分配,因为我的用户经常会带着处于 'running' 状态(但没有 tasks/jobs)的应用程序(笔记本)离开键盘,但 driver 是坐着等工作。
动态分配似乎没有启动。根据它正在等待的文档:
spark.dynamicAllocation.executorIdleTimeout=60s
但是空闲的定义是什么?对我来说,这些笔记本似乎闲置了
原因不多,
如果您的用户正在设置执行者的数量,那么这个执行者的数量将永远不会被删除。你需要为最小执行者设置的应该是:spark.dynamicAllocation.minExecutors
在我的例子中,我们设置为 2,这样即使集群已满,数据科学家也可以保留最少的执行程序。
所以首先检查选项 '--num-executors' 是否被删除并更改为 spark.dynamicAllocation.minExecutors
。
工作人员未被删除的其他原因与缓存数据有关,如果您的数据科学家有缓存数据,请针对此问题检查选项 spark.dynamicAllocation.cachedExecutorIdleTimeout
这对于我的用例我们没有更改。出于这个原因,根据 documentation 说:
default executors containing cached data are never removed
更改 spark.dynamicAllocation.cachedExecutorIdleTimeout
的选项
有关动态分配的更多详细信息,请参阅 Spark Summit Europe 2016
中的演示文稿
我正在使用 jupyterhub 在 kubernetes 上使用独立的 spark 进行概念验证。
我想要动态分配,因为我的用户经常会带着处于 'running' 状态(但没有 tasks/jobs)的应用程序(笔记本)离开键盘,但 driver 是坐着等工作。
动态分配似乎没有启动。根据它正在等待的文档:
spark.dynamicAllocation.executorIdleTimeout=60s
但是空闲的定义是什么?对我来说,这些笔记本似乎闲置了
原因不多,
如果您的用户正在设置执行者的数量,那么这个执行者的数量将永远不会被删除。你需要为最小执行者设置的应该是:spark.dynamicAllocation.minExecutors
在我的例子中,我们设置为 2,这样即使集群已满,数据科学家也可以保留最少的执行程序。
所以首先检查选项 '--num-executors' 是否被删除并更改为 spark.dynamicAllocation.minExecutors
。
工作人员未被删除的其他原因与缓存数据有关,如果您的数据科学家有缓存数据,请针对此问题检查选项 spark.dynamicAllocation.cachedExecutorIdleTimeout
这对于我的用例我们没有更改。出于这个原因,根据 documentation 说:
default executors containing cached data are never removed
更改 spark.dynamicAllocation.cachedExecutorIdleTimeout
有关动态分配的更多详细信息,请参阅 Spark Summit Europe 2016
中的演示文稿