计算配置参考
本文介绍“创建计算”UI 中可用的配置设置。 大多数用户使用分配的策略创建计算资源,这会限制可配置的设置。 如果你在 UI 中未看到特定的设置,那是因为你选择的策略不允许配置该设置。
本文中所述的配置和管理工具适用于通用计算和作业计算。 有关配置作业计算的更多注意事项,请参阅配置作业的计算。
创建新的通用计算资源
若要创建新的通用计算资源:
- 单击工作区侧栏中的“计算”。
- 单击“创建计算”按钮。
- 配置计算资源。
- 单击“创建计算”。
新的计算资源将自动启动,并准备很快使用。
策略
策略是用于限制用户在创建计算资源时可用的配置选项的一组规则。 如果用户没有“不受限制的群集创建”权利,则他们只能使用已授予的策略创建计算资源。
若要根据策略创建计算资源,请从“策略”下拉菜单中选择一个策略。
默认情况下,所有用户都有权访问个人计算策略,通过该策略可以创建单个计算机的计算资源。 如果需要访问个人计算或任何其他策略,请联系你的工作区管理员。
单节点或多节点计算
根据策略,可以选择创建单节点计算资源或多节点计算资源。
单节点计算适用于使用少量数据或非分布式工作负载(例如单节点机器学习库)的作业。 多节点计算应用于具有分布式工作负载的大型作业。
单节点属性
单节点计算资源具有以下属性:
- 在本地运行 Spark。
- 在没有工作器节点的情况下,驱动程序既充当主节点又充当工作器节点。
- 为计算资源中的每个逻辑核心生成一个执行程序线程,并为驱动程序减去 1 个核心。
- 将所有
stderr
、stdout
和log4j
日志输出保存在驱动程序日志中。 - 不能转换为多节点计算资源。
选择单节点或多节点
在决定是要选择单节点还是多节点计算时,请考虑你的用例:
大规模数据处理将耗尽单节点计算资源上的资源。 对于这些工作负载,Databricks 建议使用多节点计算。
单节点计算并非旨在用于共享。 为了避免资源冲突,Databricks 建议在必须共享计算时使用多节点计算资源。
多节点计算资源无法缩放为 0 个工作器。 请改用单节点计算。
单节点计算与进程隔离不兼容。
单节点计算上不会启用 GPU 计划。
在单节点计算中,Spark 无法读取具有 UDT 列的 Parquet 文件。 将出现以下错误消息结果:
The Spark driver has stopped unexpectedly and is restarting. Your notebook will be automatically reattached.
若要解决此问题,请禁用本机 Parquet 读取器:
spark.conf.set("spark.databricks.io.parquet.nativeReader.enabled", False)
访问模式
访问模式是一项安全功能,用于确定谁可以使用计算资源以及他们可以使用计算资源访问的数据。 Azure Databricks 中的每个计算资源都具有访问模式。
Databricks 建议对所有工作负载使用共享访问模式。 仅当共享访问模式不支持所需功能时,才使用单用户访问模式。
访问模式 | 对用户可见 | UC 支持 | 支持的语言 | 说明 |
---|---|---|---|---|
单个用户 | 始终 | 是 | Python、SQL、Scala、R | 可以分配给单个用户并由其使用。 在某些工作区中称为“分配的”访问模式。 |
共享 | 始终(需要高级计划) | 是 | Python(在 Databricks Runtime 11.3 LTS 及更高版本上)、SQL、Scala(在使用 Databricks Runtime 13.3 LTS 及更高版本且已启用 Unity Catalog 的计算上) | 可由多个用户使用,在用户之间进行数据隔离。 |
无隔离共享 | 管理员可以通过在管理设置页面中强制实施用户隔离来隐藏此访问模式。 | 否 | Python、SQL、Scala、R | 存在无隔离共享计算的相关帐户级设置。 |
自定义 | 隐藏(对于所有新计算) | 否 | Python、SQL、Scala、R | 仅当现有计算资源没有指定访问模式时,才会显示此选项。 |
可以升级现有计算资源以满足 Unity Catalog 的要求,方法是将其计算访问模式设置为“单用户”或“共享”。 有关启用了 Unity Catalog 的工作区中每种访问模式支持的功能的详细信息,请参阅 Unity Catalog 的计算访问模式限制。
注意
在 Databricks Runtime 13.3 LTS 及更高版本中,所有访问模式都支持初始化脚本和库。 要求和支持级别各不相同。 请参阅可以在哪里安装 init 脚本?和群集范围的库。
Databricks Runtime 版本
Databricks Runtime 是在计算上运行的核心组件集。 使用“Databricks Runtime 版本”下拉菜单选择运行时。 有关具体 Databricks Runtime 版本的详细信息,请参阅 Databricks Runtime 发行说明版本和兼容性。 所有版本都包含 Apache Spark。 Databricks 建议如下:
- 对于通用计算,请使用最新版本来确保代码和预加载包之间的最新优化和兼容性。
- 对于运行操作工作负载的作业计算,请考虑使用长期支持 (LTS) Databricks Runtime 版本。 使用 LTS 版本可确保不会遇到兼容性问题,并且可以在升级之前全面测试工作负载。
- 对于数据科学和机器学习用例,可考虑使用 Databricks Runtime ML 版本。
使用 Photon 加速
默认情况下,在运行 Databricks Runtime 9.1 LTS 及更高版本的计算上启用 Photon。
要启用或禁用 Photon 加速,请选择“使用 Photon 加速”复选框。 若要详细了解 Photon,请参阅什么是 Photon?。
工作器和驱动程序节点类型
计算资源由一个驱动程序节点和零个或多个工作器节点组成。 你可以为驱动程序节点和工作器节点分别选取不同的云提供程序实例类型,虽然默认情况下驱动程序节点使用与工作器节点相同的实例类型。 不同的实例类型系列适用于不同的用例,例如内存密集型工作负荷或计算密集型工作负荷。
还可以选择一个池用作工作器或驱动程序节点。 仅将具有现成实例的池用作工作器类型。 请选择单独的按需驱动程序类型,以防止驱动程序被回收。 请参阅连接到池。
辅助角色类型
在多节点计算中,工作器节点运行 Spark 执行程序和正常运行计算资源所需的其他服务。 通过 Spark 分配工作负载时,所有分布式处理都在工作器节点上进行。 Azure Databricks 每个工作器节点运行一个执行程序。 因此,“执行程序”和“工作器”这两个术语可在 Databricks 体系结构的上下文中互换使用。
提示
若要运行 Spark 作业,至少需要一个工作器节点。 如果计算资源没有工作器,你可以在驱动程序节点上运行非 Spark 命令,但 Spark 命令会失败。
工作器节点 IP 地址
Azure Databricks 启动工作器节点,每个节点都有两个专用 IP 地址。 节点的主要专用 IP 地址托管 Azure Databricks 内部流量。 Spark 容器使用辅助专用 IP 地址进行群集内通信。 此模型使 Azure Databricks 能够在同一工作区中的多个计算资源之间提供隔离。
驱动程序类型
驱动程序节点保留附加到计算资源的所有笔记本的状态信息。 驱动程序节点还维护 SparkContext,解释从笔记本或计算资源上的库中运行的所有命令,并运行与 Spark 执行程序协同工作的 Apache Spark 主节点。
驱动程序节点类型的默认值与工作器节点类型相同。 如果计划使用 collect()
从 Spark 工作器处收集大量数据,并在笔记本中分析这些数据,则可以选择具有更多内存的更大驱动程序节点类型。
提示
由于驱动程序节点保留附加的笔记本的所有状态信息,因此,请务必将未使用的笔记本与驱动程序节点分离。
GPU 实例类型
对于在计算方面富有挑战性并且对性能要求很高的任务(例如与深度学习相关的任务),Azure Databricks 支持通过图形处理单元 (GPU) 进行加速的计算资源。 有关详细信息,请参阅支持 GPU 的计算。
Azure 机密计算 VM
Azure 机密计算 VM 类型可防止在使用数据时未经授权访问数据,包括来自云操作员的访问。 此 VM 类型适用于高度管控的行业和区域,以及云中具有敏感数据的企业。 有关 Azure 机密计算的详细信息,请参阅 Azure 机密计算。
要使用 Azure 机密计算 VM 运行工作负载,请在辅助角色和驱动程序节点下拉列表中从 DC 或 EC 系列 VM 类型中进行选择。 请参阅 Azure 机密 VM 选项。
现成虚拟机实例
为了节省成本,可以通过选中“现成实例”复选框来选择使用现成实例(也称为 Azure 现成 VM)。
第一个实例将始终为按需实例(驱动程序节点始终为按需),后续实例将为现成实例。
如果实例由于不可用而被逐出,Azure Databricks 将尝试获取新的现成实例来替换被逐出的实例。 如果无法获取现成实例,则将部署按需实例来替换被逐出的实例。 仅对已完全获取并正在运行的现成实例,才支持此按需故障回复。 安装过程中失败的现成实例不会自动替换。
此外,将新节点添加到现有计算资源时,Azure Databricks 将尝试获取这些节点的 Spot 实例。
启用自动缩放
选中“启用自动缩放”后,可以为计算资源指定工作器的最小数目和最大数目。 然后,Databricks 会选择运行作业所需的适当工作器数量。
要设置计算资源的工作器数量范围,以使其在这个范围内自动缩放,请使用“工作器类型”下拉列表旁边的“工作器最小数目”和“工作器最大数目”字段。
如果未启用自动缩放,则必须在“工作器类型”下拉列表旁边的“工作器”字段中输入固定数量的工作器。
注意
当计算资源正在运行时,计算详细信息页将显示分配的工作器数量。 可以将分配的工作器数与工作器配置进行比较,并根据需要进行调整。
自动缩放的优点
使用自动缩放,Azure Databricks 可以根据作业特征动态地重新分配工作器。 在计算方面,管道的某些部分可能比其他部分的要求更高,Databricks 会自动在作业的这些阶段添加额外的工作器(并在不再需要它们时将其删除)。
通过自动缩放,可以更轻松地实现高利用率,因为无需通过预配计算来匹配工作负载。 这特别适用于其需求随时间变化的工作负荷(例如在一天的过程中浏览数据集),但也可能适用于预配要求未知的、时间较短的一次性工作负荷。 因此,自动缩放有两个优点:
- 与大小恒定且未充分预配的计算资源相比,工作负载的运行速度更快。
- 与静态大小的计算资源相比,自动缩放可以降低总体成本。
自动缩放可以提供这两个优点之一,也可以同时提供这两个优点,具体取决于计算资源和工作负载的恒定大小。 当云服务提供商终止实例时,计算大小可能会小于所选工作器的最小数目。 在这种情况下,Azure Databricks 会通过连续重试来重新预配实例,以便保持最小数量的工作器。
注意
自动缩放不适用于 spark-submit
作业。
注意
计算自动缩放在缩减结构化流式处理工作负载的群集大小方面存在限制。 Databricks 建议将增量实时表与增强式自动调整用于流式处理工作负载。 请参阅 使用增强的自动缩放优化增量实时表管道的群集利用率。
自动缩放的表现方式
基于高级计划的工作区使用优化的自动缩放。 标准定价计划上的工作区使用标准自动缩放。
优化的自动缩放具有以下特征:
- 通过 2 个步骤从最小值纵向扩展到最大值。
- 即使计算资源未处于空闲状态,也可以通过查看 shuffle 文件状态进行纵向缩减。
- 按当前节点数的某个百分比进行纵向缩减。
- 在作业计算上,如果在过去的 40 秒内计算资源未得到充分利用,则进行纵向缩减。
- 在通用计算上,如果在过去的 150 秒内计算资源未得到充分利用,则进行纵向缩减。
spark.databricks.aggressiveWindowDownS
Spark 配置属性以秒为单位指定计算做出纵向缩减决策的频率。 增大此值会导致计算更缓慢地纵向缩减。 最大值为 600。
标准自动缩放用于标准计划工作区。 标准自动缩放具有以下特征:
- 从添加 8 个节点开始。 然后以指数级方式纵向扩展,执行达到最大值所需的任意步骤。
- 当 90% 的节点处于未忙状态 10 分钟且计算已空闲至少 30 秒时,纵向缩减。
- 从 1 个节点开始,以指数方式进行纵向缩减。
使用池自动缩放
如果你要将计算资源附加到池,请考虑以下事项:
自动缩放示例
如果将静态计算资源重新配置为自动缩放,Azure Databricks 会立即在最小值和最大值边界内重设计算资源的大小,然后开始自动缩放。 例如,下表展示了在将计算资源重新配置为在 5 到 10 个节点之间进行自动缩放时,具有特定初始大小的计算资源会发生什么情况。
初始大小 | 重新配置后的大小 |
---|---|
6 | 6 |
12 | 10 |
3 | 5 |
启用自动缩放本地存储
通常,估算特定作业会占用的磁盘空间量十分困难。 为了让你不必估算在创建时要附加到计算的托管磁盘的 GB 数,Azure Databricks 会自动在所有 Azure Databricks 计算上启用自动缩放本地存储。
自动缩放本地存储时,Azure Databricks 会监视计算的 Spark 工作器上提供的可用磁盘空间量。 如果工作器开始出现磁盘空间严重不足的情况,则 Databricks 会在该工作器的磁盘空间耗尽之前自动将新的托管磁盘附加到该工作器。 附加磁盘时,每个虚拟机的总磁盘空间(包括虚拟机的初始本地存储)存在 5 TB 的限制。
仅当虚拟机返回到 Azure 时,才会拆离附加到虚拟机的托管磁盘。 也就是说,只要托管磁盘是某个正在运行的计算的一部分,就永远不会从虚拟机中拆离。 若要纵向缩减托管磁盘使用量,Azure Databricks 建议在配置了自动缩放计算或自动终止的计算中使用此功能。
本地磁盘加密
重要
此功能目前以公共预览版提供。
用于运行计算的某些实例类型可能有本地附加的磁盘。 Azure Databricks 可以在这些本地附加的磁盘上存储 shuffle 数据或临时数据。 为了确保针对所有存储类型加密所有静态数据(包括在计算资源的本地磁盘上暂时存储的 shuffle 数据),可以启用本地磁盘加密。
重要
工作负荷的运行速度可能会更慢,因为在本地卷中读取和写入加密的数据会影响性能。
启用本地磁盘加密时,Azure Databricks 会在本地生成一个加密密钥,该密钥特定于每个计算节点,可以用来加密存储在本地磁盘上的所有数据。 此密钥的作用域是每个计算节点的本地,会与计算节点本身一起销毁。 在其生存期内,密钥驻留在内存中进行加密和解密,并以加密形式存储在磁盘上。
若要启用本地磁盘加密,必须使用群集 API。 在计算创建或编辑期间,将 enable_local_disk_encryption
设为 true
。
自动终止
可以为计算设置自动终止。 在计算创建过程中,请指定希望计算资源在处于不活动状态几分钟后终止。
如果当前时间与计算资源上运行的最后一个命令之间的差值大于处于不活动状态指定时间,则 Azure Databricks 会自动终止该计算资源。 有关计算终止的详细信息,请参阅终止计算。
标记
可使用标记轻松监视组织中各种组所使用的云资源的成本。 在创建计算时将标记指定为键值对,Azure Databricks 会将这些标记应用于 VM 和磁盘卷等云资源以及 DBU 使用情况报告。
对于从池启动的计算,自定义标记仅适用于 DBU 使用情况报告,不会传播到云资源。
若要详细了解池和计算标记类型如何协同工作,请参阅“使用标记监视使用情况”
若要将标记添加到计算资源中,请执行以下操作:
- 在“标记”部分中,为每个自定义标记添加一个键值对。
- 单击“添加”。
Spark 配置
若要微调 Spark 作业,可以提供自定义 Spark 配置属性。
在计算配置页面上,单击“高级选项”切换开关。
单击“Spark”选项卡。
在“Spark 配置”中,以每行一对键值对的形式输入配置属性。
使用群集 API 配置计算时,请在新建群集 API 或更新群集 API 的 spark_conf
字段中设置 Spark 属性。
若要在计算上强制实施 Spark 配置,工作区管理员可以使用计算策略。
从机密中检索 Spark 配置属性
Databricks 建议在机密而不是纯文本中存储敏感信息(例如密码)。 若要在 Spark 配置中引用机密,请使用以下语法:
spark.<property-name> {{secrets/<scope-name>/<secret-name>}}
例如,将一个名为 password
的 Spark 配置属性设置为 secrets/acme_app/password
中存储的机密值:
spark.password {{secrets/acme-app/password}}
有关详细信息,请参阅用于引用 Spark 配置属性或环境变量中的机密的语法。
通过 SSH 访问计算
出于安全原因,Azure Databricks 中的 SSH 端口默认处于关闭状态。 如果要启用通过 SSH 访问 Spark 群集,请参阅通过 SSH 连接到驱动程序节点。
注意
仅当你的工作区部署在你自己的 Azure 虚拟网络中时,才能启用 SSH。
环境变量
配置可从计算资源上运行的 Init 脚本访问的自定义环境变量。 Databricks 还提供你可在 init 脚本中使用的预定义环境变量。 不能替代这些预定义的环境变量。
在计算配置页面上,单击“高级选项”切换开关。
单击“Spark”选项卡。
在“环境变量”字段中设置环境变量。
此外,还可以使用创建群集 API 或更新群集 API 中的 spark_env_vars
字段设置环境变量。
计算日志传送
创建计算时,可以指定一个位置来为 Spark 驱动程序节点、工作器节点和事件传送日志。 日志每五分钟传递一次,并在所选目标中每小时存档一次。 当计算资源被终止时,Azure Databricks 会确保传送在计算资源终止之前生成的所有日志。
日志的目的地取决于计算资源的 cluster_id
。 如果指定的目标为 dbfs:/cluster-log-delivery
,则系统会将 0630-191345-leap375
的计算日志传送到 dbfs:/cluster-log-delivery/0630-191345-leap375
。
若要配置日志传送位置,请执行以下步骤:
- 在计算页上,单击“高级选项”开关。
- 单击“日志记录”选项卡。
- 选择目标类型。
- 输入计算日志路径。
注意
此功能在 REST API 中也可用。 请参阅群集 API。