azure - 在火花阶段动态添加机器
问题描述
我正在使用在 Azure VM 上运行的spark 独立集群版本2.3.0 。火花作业有 5 个阶段处理。我想在第 0 阶段之后添加更多机器进行计算处理。
目前,我正在检查 spark api 的阶段完成情况。
Spark 2.3.0中是否有可以启用的功能或属性?
解决方案
在 Yarn 上的 spark 中,您可以通过以下设置启用动态分配
spark.dynamicAllocation.enabled
spark.dynamicAllocation.minExecutors
spark.dynamicAllocation.maxExecutors
spark.dynamicAllocation.initialExecutors
如果您参考 spark 配置页面:动态资源分配 Spark 提供了一种机制,可以根据工作负载动态调整应用程序占用的资源。这意味着如果不再使用资源,您的应用程序可能会将资源返还给集群,并在以后有需求时再次请求它们。如果多个应用程序共享 Spark 集群中的资源,此功能特别有用。此功能默认禁用,在所有粗粒度集群管理器上可用,即独立模式、YARN 模式和 Mesos 粗粒度模式。
文档链接:https ://spark.apache.org/docs/2.2.0/job-scheduling.html#configuration-and-setup
使用此功能有两个要求。首先,您的应用程序必须将 spark.dynamicAllocation.enabled 设置为 true。其次,您必须在同一集群中的每个工作节点上设置外部 shuffle 服务,并在您的应用程序中将 spark.shuffle.service.enabled 设置为 true。
我不确定在 Azure 上处理这件事有多容易,这里有一个关于 EMR 上的动态资源的问题,与 EMR 没有直接关系,但可以帮助您进行搜索。 使用 Amazon 的“maximizeResourceAllocation”设置的 Spark + EMR 不使用所有核心/vcore
推荐阅读
- android - WebView 在 android 5.0 上抛出 InflateException
- java - 如何使用 JAVA 在 file.txt 中编写函数的输出
- android - Onesignal 在 gradle 中粘住而不是移除
- android - 在内部存储中将目录与我的应用关联
- c# - 获取绝对值的函数不适用于小数
- python - Selenium Chrome (Python):浏览器冻结 - 在这种情况下超时并退出浏览器
- c# - 统一。尝试将带有事件的按钮动态添加到网格 => 事件索引卡在索引 2
- javascript - 反转对象数组?
- events - Cytoscape 事件目标未定义
- python - 从 3.6 更新到 Python 3.7,但每当我尝试导入以前安装的 Python3 包(例如 networkx)时都会出现导入错误