apache-spark - 资源匮乏下 Kubernetes 上的 Spark 作业无限期等待 SPARK_MIN_EXECUTORS
问题描述
我正在使用 Spark 3.0.1 并在 Kubernetes 上进行项目 spark 部署,其中 Kubernetes 代理集群管理器用于 spark 作业和 spark 使用客户端模式提交作业。如果 Cluster 没有足够的资源(CPU/内存)来满足最少数量的 executor,则 executor 会无限期地进入 Pending 状态,直到资源释放。
假设,集群配置是:
total Memory=204Gi
used Memory=200Gi
free memory= 4Gi
SPARK.EXECUTOR.MEMORY=10G
SPARK.DYNAMICALLOCTION.MINEXECUTORS=4
SPARK.DYNAMICALLOCATION.MAXEXECUTORS=8
此处不应提交作业,因为分配的执行者少于 MIN_EXECUTORS。
在这种情况下,司机如何中止工作?
解决方案
首先要提一下,kubernetes 尚不支持 spark 动态分配(从 3.0.1 版开始),它正在为将来的版本准备中Link
而对于您发布的要求,您可以通过在作业初始化之前运行资源监视器代码片段来解决,并以错误终止初始化 pod 本身。
如果你想从 CLI 运行它,你可以使用kubectl describe nodes
/kube-capacity 实用程序来监控资源
推荐阅读
- python - 将具有相似模式的 url 列表拆分为 dicts
- sharepoint - 通过 SaveBinaryDirect 方法上传到 SharePoint 是否需要 HTTP PUT 访问权限?
- php - .htpasswd 和网站身份验证之间的冲突
- javascript - 尝试在 NetSuite 中保存记录时何时使用“enableSourcing”选项?
- angular - 当模态对话框被解除时,在离子中调用哪种生命周期方法
- reactjs - 如何使用 Cypress 访问 React 组件的本地状态?
- php - 无法在PHP中显示同一会话用户的所有数据
- php - 意外值异常
- node.js - Jenkins Blue Ocean NodeJS 设置
- c# - 如何对输出进行排序以在 dataTable 中显示升序?