管理群集

本文介绍如何管理 Azure Databricks 群集,包括显示、编辑、启动、终止、删除、控制访问权限以及监视性能和日志。

显示群集

若要显示工作区中的群集,请在边栏中单击 compute icon“计算”。

“计算”页在两个选项卡中显示群集:“通用群集”和“作业群集” 。

all-purpose clusters

job clusters

对于每个群集,此页将显示:

  • 群集名称
  • State
  • 节点数
  • Databricks Runtime 版本
  • 驱动程序和工作器节点的类型
  • 群集创建者或作业运行所有者

除了常见的群集信息,“通用群集”选项卡还显示附加到该群集的笔记本 Attached Notebooks 的数量。 列表上方是固定群集的数量。

通用群集名称左侧的图标指示该群集是否固定、该群集是否为高并发群集以及是否已启用表访问控制

  • 已固定 Pinned
  • 正在启动 Starting,正在终止 Terminating
  • 标准群集
    • 正在运行 Running
    • 已终止 Terminated
  • 高并发性群集
    • 正在运行 Serverless
    • 已终止 Serverless Terminated
  • 拒绝访问
    • 正在运行 Locked
    • 已终止 Locked Terminated
  • 表 ACL 已启用
    • 正在运行 Table ACLs
    • 已终止 Table ACLs Terminated

单击通用群集最右侧的按钮可以访问终止重启克隆权限删除操作。

Interactive cluster actions

单击作业群集最右侧的按钮可以访问终止重启克隆操作。

Job cluster actions

筛选群集列表

可以使用右上角的按钮和“筛选器”字段筛选群集列表:

Filter clusters

  • 若要仅显示你创建的群集,请单击“我创建的群集”。
  • 若要仅显示你可以访问的群集(如果已启用群集访问控制),请单击“我可以访问的群集”。
  • 若要按任何字段中显示的字符串进行筛选,请在“筛选器”文本框中键入字符串。

固定群集

群集在被终止 30 天后会被永久删除。 若要在群集已终止超过 30 天后仍保留通用群集配置,管理员可固定群集。 最多可以固定 100 个群集。

可以通过群集列表或群集详细信息页固定群集:

在群集列表中固定群集

若要固定或取消固定群集,请单击群集名称左侧的固定图标。

Pin cluster in cluster list

在群集详细信息页中固定群集

若要固定或取消固定群集,请单击群集名称右侧的固定图标。

Pin cluster in cluster detail

还可以调用固定 API 终结点,以编程方式固定群集。

以 JSON 文件的形式查看群集配置

有时,将群集配置视为 JSON 会很有帮助。 尤其是当你想要使用群集 API 2.0 创建相似的群集时,此方法特别有用。 查看现有群集时,只需转到“配置”选项卡,单击此选项卡右上角的“JSON”,复制该 JSON 并将其粘贴到 API 调用中 。 JSON 视图为只读。

Cluster configuration JSON

编辑群集

可以从群集详细信息页中编辑群集配置。 若要显示群集详细信息页,请在“计算”页上单击相应的群集名称。

Cluster detail

还可以调用编辑 API 终结点,以编程方式编辑群集。

注意

  • 附加到群集的笔记本和作业在编辑后将保持附加状态。
  • 在群集上安装的库在编辑后将保持安装状态。
  • 如果要编辑正在运行的群集的任何属性(群集大小和权限除外),则必须重启它。 这可能会影响当前正在使用该群集的用户。
  • 只能编辑正在运行或已终止的群集。 但可以在“群集详细信息”页上更新未处于这些状态的群集的权限。

有关可编辑的群集配置属性的详细信息,请参阅配置群集

克隆群集

可以通过克隆现有群集来创建新群集。

  • 群集列表

    Clone cluster in cluster list

  • “群集详细信息”页

    Clone cluster in cluster detail

群集创建窗体将打开,其中预填充了群集配置。 以下来自现有群集的属性不包括在克隆中:

  • 群集权限
  • 已安装的库
  • 附加的笔记本

控制对群集的访问

管理员控制台中的群集访问控制允许管理员和委派的用户向其他用户提供细化的群集访问权限。 有两种类型的群集访问控制:

  • 群集创建权限:管理员可以选择允许哪些用户创建群集。

    Cluster create permission

  • 群集级别权限:具有某群集的“可管理”权限的用户可配置其他用户是否能够通过单击群集操作中的 Permissions Icon 图标来附加到该群集、重启该群集、管理该群集以及重设其大小。

    Cluster permissions

若要了解如何配置群集访问控制和群集级别权限,请参阅群集访问控制

启动群集

除了创建新群集,还可以启动先前已终止的群集。 这使你可以使用先前已终止的群集的原始配置对其进行重新创建。

可以在群集列表、群集详细信息页或笔记本中启动群集。

  • 群集列表

    Start cluster from cluster list

  • “群集详细信息”页

    Start cluster from cluster detail

  • 笔记本 Notebook Attach“群集附加”下拉菜单

    Start cluster from notebook attach drop-down

还可以调用启动 API 终结点,以编程方式启动群集。

Azure Databricks 标识具有唯一群集 ID 的群集。 启动已终止的群集后,Databricks 将重新创建具有相同 ID 的群集,自动安装所有库,然后重新附加笔记本。

注意

如果使用的是试用版工作区并且该试用版已过期,则将无法启动群集。

针对作业的群集自动启动

当计划运行分配给现有已终止的群集的作业时,或者从 JDBC/ODBC 接口连接到已终止的群集时,该群集将自动重启。 请参阅创建作业JDBC 连接

通过群集自动启动,你可以将群集配置为自动终止,而无需手动干预来为计划的作业重启群集。 此外,还可以通过计划作业在已终止的群集上运行来计划群集初始化。

自动重启群集之前,会检查群集作业访问控制权限。

注意

如果群集是在 Azure Databricks 平台版本 2.70 或更早版本中创建的,则不会自动启动:计划在已终止的群集上运行的作业将会失败。

终止群集

若要保存群集资源,可以终止群集。 已终止的群集不能运行笔记本或作业,但其配置会进行存储,因此可以在稍后的某个时间点重用(或者在某些类型的作业中自动启动)。 可以手动终止群集,也可以将群集配置为在处于不活动状态指定时间后自动终止。 每次终止群集时 Azure Databricks 都会记录信息。 如果已终止的群集数超过 150,则会删除最旧的群集。

除非群集已固定,否则在终止该群集 30 天后,系统会自动将其永久删除。

Termination reason

注意

在新的作业群集上运行作业时(建议做法),群集将终止,并且在作业完成后无法重启。 另一方面,如果计划在已终止的现有通用群集上运行作业,则该群集将自动启动

重要

如果使用的是试用版高级工作区,所有运行中的群集将在以下情况下终止:

  • 将工作区升级到完整的高级版时。
  • 工作区未升级且试用版过期时。

手动终止

可以在群集列表或群集详细信息页中手动终止群集。

  • 群集列表

    Terminate cluster in cluster list

  • “群集详细信息”页

    Terminate cluster in cluster detail

自动终止

还可以为群集设置自动终止。 在群集创建过程中,可以指定希望群集在处于不活动状态几分钟后终止。 如果当前时间与群集上运行的最后一个命令之间的差值大于处于不活动状态指定时间,则 Azure Databricks 会自动终止该群集。

当群集上的所有命令(包括 Spark 作业、结构化流式处理和 JDBC 调用)执行完毕时,该群集被视为处于不活动状态。

警告

  • 群集不会报告使用 DStreams 时产生的活动。 这意味着自动终止的群集在运行 DStreams 时可能会被终止。 请关闭针对运行 DStreams 的群集的自动终止功能,或考虑使用结构化流式处理。
  • 自动终止功能仅监视 Spark 作业,不监视用户定义的本地进程。 因此,如果所有 Spark 作业都已完成,则即使本地进程正在运行,也可能终止群集。
  • 空闲群集在终止之前的不活动期间会继续累积 DBU 和云实例费用。

配置自动终止

可在群集创建页的“Autopilot 选项”框中的“自动终止”字段中配置自动终止 :

Auto termination

重要

自动终止设置的默认值取决于你选择创建标准群集还是高并发群集:

  • 标准群集配置为在 120 分钟后自动终止。
  • 高并发群集配置为不会自动终止。

可通过清除“自动终止”复选框或通过将处于不活动状态的时间指定为 0 来选择退出自动终止。

注意

自动终止在最新的 Spark 版本中最受支持。 较早的 Spark 版本具有已知的限制,这可能会导致群集活动的报告不准确。 例如,运行 JDBC、R 或流式处理命令的群集可能会报告过时的活动时间,导致群集提前终止。 请升级到最新的 Spark 版本,以从 bug 修补程序和改进的自动终止功能中受益。

意外终止

有时,群集会意外终止,而不是手动终止或配置的自动终止。

有关终止原因和修正步骤的列表,请参阅知识库

删除群集

删除群集会终止群集并删除其配置。

警告

不能撤消此操作。

无法删除固定群集。 若要删除固定群集,必须先由管理员取消固定该群集。

若要删除群集,请在“作业群集”或“通用群集”选项卡上,单击群集操作中的 Delete Icon 图标。

Delete cluster

还可以调用永久删除 API 终结点,以编程方式删除群集。

在 Apache Spark UI 中查看群集信息

有关 Spark 作业的详细信息显示在 Spark UI 中,可从以下位置进行访问:

  • 群集列表:单击群集行上的 Spark UI 链接。
  • “群集详细信息”页:单击“Spark UI”选项卡。

Spark UI

可以获取有关活动群集和已终止群集的详细信息。

如果重启已终止的群集,Spark UI 将显示已重启的群集的信息,而不会显示已终止的群集的历史信息。

查看群集日志

Azure Databricks 提供以下三种与群集相关的活动日志记录:

本部分讨论群集事件日志、驱动程序和工作器日志。 有关 init 脚本日志的详细信息,请参阅 Init 脚本日志

群集事件日志

群集事件日志显示由用户操作手动触发或 Azure Databricks 自动触发的重要群集生命周期事件。 此类事件影响群集的整个操作以及群集中运行的作业。

有关受支持的事件类型,请参阅 REST API ClusterEventType 数据结构。

事件的存储时间为 60 天,相当于 Azure Databricks 中的其他数据保留时间。

查看群集事件日志

  1. 单击边栏中的 compute icon“计算”。

  2. 单击群集名称。

  3. 单击“事件日志”选项卡。

    Event log

若要筛选事件,请单击“按事件类型筛选...”字段中的 Menu Dropdown,然后选中一个或多个事件类型复选框。

使用“全选”可通过排除特定事件类型来简化筛选。

Filter event log

查看事件详细信息

有关事件的详细信息,请在日志中单击其所在行,然后单击“JSON”选项卡以查看详细信息。

Event details

群集驱动程序和工作器日志

笔记本、作业和库中的直接打印和日志语句会转到 Spark 驱动程序日志。 这些日志包含三个输出:

  • 标准输出
  • 标准错误
  • Log4j 日志

若要从 UI 访问这些驱动程序日志文件,请转到群集详细信息页上的“驱动程序日志”选项卡。

Driver logs

日志文件会定期更新。 较早的日志文件显示在页面顶部,其中还列出了时间戳信息。 可以下载任何日志以便进行故障排除。

若要查看 Spark 工作器日志,可以使用 Spark UI。 还可以为群集配置日志传递位置。 工作器和群集日志均传递到指定位置。

监视性能

为了帮助你监视 Azure Databricks 群集的性能,Azure Databricks 提供了从群集详细信息页访问 Ganglia 指标的权限。

此外,你还可以配置 Azure Databricks 群集,以将指标发送到 Azure Monitor(Azure 的监视平台)中的 Log Analytics 工作区。

可以在群集节点上安装 Datadog 代理,以将 Datadog 指标发送到 Datadog 帐户。

Ganglia 指标

若要访问 Ganglia UI,请导航到群集详细信息页上的“指标”选项卡。 Ganglia UI 中提供 CPU 指标,可用于所有 Databricks 运行时。 GPU 指标适用于已启用 GPU 的群集。

Ganglia metrics

若要查看实时指标,请单击“Ganglia UI”链接。

若要查看历史指标,请单击快照文件。 快照包含所选时间前一小时的聚合指标。

配置指标集合

默认情况下,Azure Databricks 每 15 分钟收集一次 Ganglia 指标。 若要配置集合时间,请使用 init 脚本或在群集创建 API 的 spark_env_vars 字段中设置 DATABRICKS_GANGLIA_SNAPSHOT_PERIOD_MINUTES 环境变量。

Azure Monitor

可以配置 Azure Databricks 群集,以将指标发送到 Azure Monitor(Azure 的监视平台)中的 Log Analytics 工作区。 有关完整说明,请参阅监视 Azure Databricks

注意

如果你已在自己的虚拟网络中部署了 Azure Databricks 工作区,并且已将网络安全组 (NSG) 配置为拒绝 Azure Databricks 不需要的所有出站流量,则必须为 AzureMonitor 服务标记配置其他出站规则。

Datadog 指标

Datadog metrics

可以在群集节点上安装 Datadog 代理,以将 Datadog 指标发送到 Datadog 帐户。 以下笔记本演示了如何使用群集范围 init 脚本在群集上安装 Datadog 代理。

若要在所有群集上安装 Datadog 代理,请在测试群集范围 init 脚本后,使用全局 init 脚本

安装 Datadog 代理 init 脚本笔记本

获取笔记本

停用竞价实例

注意

此功能在 Databricks Runtime 8.0 及更高版本上可用。

由于竞价实例可降低成本,因此,使用竞价实例(而不是按需实例)创建群集是运行作业的常用方法。 但是,云提供商可通过计划机制来抢占竞价实例。 抢占竞价实例会对正在运行的作业带来以下问题:

  • 随机提取失败
  • 随机数据丢失
  • RDD 数据丢失
  • 作业失败

可以通过停用来解决这些问题。 停用是利用云提供商在停用竞价实例之前通常会发送的通知。 当包含执行程序的竞价实例收到抢占通知时,停用进程将尝试将随机数据和 RDD 数据迁移到运行正常的执行程序。 最终抢占前的持续时间通常为 30 秒到 2 分钟,具体取决于云提供商。

Databricks 建议启用数据迁移,同时也启用停用。 通常情况下,迁移的数据越多出错的可能性就越小,包括随机提取失败、随机数据丢失以及 RDD 数据丢失。 数据迁移还可以减少重新计算并节省成本。

停用是已尽的最大努力,但并不能保证所有数据都可以在最终抢占之前迁移。 如果正在运行的任务是从执行程序提取随机数据,停用无法保证不会出现随机提取失败。

启用停用后,由竞价实例抢占导致的任务失败不会计入失败尝试总数。 抢占导致的任务失败不计入失败尝试,是因为失败原因属于任务外部,并不会导致作业失败。

若要启用停用,请在创建群集时设置 Spark 配置设置和环境变量:

  • 若要为应用程序启用停用,请执行以下命令:

    spark.decommission.enabled true
    
  • 若要在停用期间启用随机数据迁移,请执行以下命令:

    spark.storage.decommission.enabled true
    spark.storage.decommission.shuffleBlocks.enabled true
    
  • 若要在停用期间启用 RDD 缓存数据迁移,请执行以下命令:

    注意

    如果将 RDD StorageLevel 复制设置为大于 1,则 Databricks 不建议启用 RDD 数据迁移,因为副本可确保 RDD 不会丢失数据。

    spark.storage.decommission.enabled true
    spark.storage.decommission.rddBlocks.enabled true
    
  • 若要为辅助角色启用停用,请执行以下命令:

    SPARK_WORKER_OPTS="-Dspark.decommission.enabled=true"
    

若要设置这些自定义 Spark 配置属性,请执行以下操作:

  1. 在“新建群集”页面上,单击“高级选项”切换开关 。

  2. 单击“Spark”选项卡。

    Decommission Config

若要从 UI 访问辅助角色的停用状态,请导航到“Spark 群集 UI - 主”选项卡:

Decommission Worker In UI

停用完成后,停用的执行程序会在群集的详细信息页上的“Spark UI”>“执行程序”选项卡中显示丢失原因:

Decommission Executor In UI

Decommission Executor In Timeline