跳到主要内容
工程的博客

允许使用集群策略进行完全管理控制的简单集群创建

分享这篇文章

什么是Databricks集群策略?

Databricks集群策略是一个模板,它限制用户与集群配置交互的方式。现在,任何拥有集群创建权限的用户都可以启动Apache Spark使用任何配置进行集群。这就导致了一些问题:

  • 管理人员被迫在控制和灵活性之间做出选择。我们经常看到集群被集中管理,所有非管理员都被剥夺了创建集群的特权;这提供了对环境的可接受的控制,但为用户的工作效率带来了瓶颈。另一种选择——允许所有用户自由支配——可能会导致成本失控和整个企业集群类型激增等问题。
  • 用户被迫选择自己的配置,即使他们可能不需要或不想这样做。对于许多用户来说,创建新集群时的选项太多了——许多用户只是想创建一个小型的基本集群用于原型,或者重新创建其他人已经配置好的集群。在这种情况下,更多的选择并不是更好。
  • 配置的标准化(为了标记、退款、用户登录和跨环境的可复制性等目的)通常是手动的。这些大多可以通过API的变通方法来实现,但它们并没有很好地集成。

为了帮助解决这些问题,我们引入了集群策略,以允许创建可重用的、管理员定义的集群模板。这些将控制用户在创建集群时可以看到和选择的内容,并且可以通过组或用户特权进行集中管理和控制。我们看到了两大方面的好处:提高管理员的能力平衡控制和灵活性,简化用户体验加上。

集群策略如何帮助管理员平衡管理控制和用户灵活性?

虽然管理员在设计Databricks内的使用模式时必须在控制和灵活性之间做出选择,但集群策略将允许两者共存。通过定义一组可以分配给特定用户或组的模板,管理员可以在不妨碍特定集群模型敏捷性的情况下,满足组织在使用和治理方面的指导方针。为此,策略将允许一些最常见的模式被自动复制和强制执行:

  • 可以强制每个集群每小时消耗的最大DBU,以防止用户旋转过大或昂贵的集群
  • 集群的标记可以强制启用基于AWS资源标记的回退/显示
  • 实例类型和实例数量可以通过白名单、范围规范甚至正则表达式进行控制,从而对创建的集群的类型和大小进行细粒度控制
  • 可以限制集群类型,以确保用户仅在作业集群上运行作业,而不是在通用集群上运行作业

更复杂的模板——比如强制传递、启用外部metastore等,也可以提供一个可重用的框架;无需在每次创建集群时都进行复杂的配置,只需完成一次,然后重复应用于新的集群。所有这些结合起来,为Databricks管理员和云操作团队提供了更好的可见性、控制和治理,而不会失去使Databricks对我们的许多客户有价值的灵活性和敏捷性。

集群策略如何帮助简化非管理员用户的体验?

作为Databricks的用户,在创建集群时,我需要做出几个选择,比如为驱动程序和工作节点使用什么实例类型和大小,要包含多少实例,Databricks Runtime的版本,自动伸缩参数,等等。虽然一些用户可能会发现这些选项是有用的和必要的,但大多数用户在创建集群时只需要做出基本的选择,比如选择小、中或大。高级选项可能会对不熟悉的用户造成不必要的压力。集群策略将允许此类用户选择一个基本策略(例如“small”),提供一个集群名称,并直接访问他们的笔记本。例如,与所有用户今天看到的完整创建集群屏幕不同,一个最小策略可能是这样的:

新的Databricks集群策略模板简化了集群的创建,将配置选项减少到几个基本选项。

这对于刚接触云计算世界或不熟悉Apache Spark的用户特别有用TM;他们现在可以依靠提供给他们的模板,而不是猜测。更高级的用户可能需要额外的选项,可以为这些选项创建策略并将其分配给特定的用户或组。策略足够灵活,允许多个级别的粒度,因此数据科学或数据工程团队可以看到他们需要的确切细节级别,而不会增加导致混乱和降低生产力的复杂性。

集群策略的一些例子是什么?

尽管随着我们添加更多端点和接口,集群策略将继续发展,但我们已经从该领域中获得了一些最佳实践,并将它们作为构建的起点。这些模板的一些例子包括:

  • 小型/中型/大型“t恤大小”集群:最小的集群,用户几乎不需要配置;我们使用标准的i3.2xlarge节点类型,并强制执行自动伸缩和自动终止。用户只需提供一个集群名称。
  • 最大DBU数量:允许修改集群的所有参数,但提供限制(即每小时50个DBUs),以防止用户创建过大或昂贵的集群
  • 单节点机器学习(ML)集群:将运行时限制为Databricks ML Runtimes,强制1个驱动程序和0个worker,并为ML工作负载提供可接受的GPU或CPU机器选项
  • 仅限作业集群:用户只能使用该策略创建作业集群和运行Databricks作业,不能创建共享的通用集群

这些只是集群策略可能使用的许多不同类型模板中的一个小示例。

集群总体策略

描述:这是一个通用的集群策略,用于指导用户并限制某些功能,同时要求标记、限制最大实例数和强制超时。

“spark_conf.spark.databricks.cluster.profile”: {“类型”“固定”“价值”“serverless”“隐藏”真正的},“instance_pool_id”: {“类型”“禁止”“隐藏”真正的},“spark_version”: {“类型”“正则表达式”“模式”“6。[0 - 9].x-scala。*”},“node_type_id”: {“类型”“白名单”“价值观”:【“i3.xlarge”“i3.2xlarge”“i3.4xlarge”),“defaultValue”“i3.2xlarge”},“driver_node_type_id”: {“类型”“固定”“价值”“i3.2xlarge”“隐藏”真正的},“autoscale.min_workers”: {“类型”“固定”“价值”1“隐藏”真正的},“autoscale.max_workers”: {“类型”“范围”“执行”25“defaultValue”5},“autotermination_minutes”: {“类型”“固定”“价值”30.“隐藏”真正的},“custom_tags.team”: {“类型”“固定”“价值”“产品”

注意:对于Azure用户,“node_type_id”和“driver_node_type_id”需要改为Azure支持的虚拟机。

简单中型策略

描述:该策略允许用户在最小配置的情况下创建一个中型Databricks集群。创建时唯一需要的字段是集群名称;其余的都是固定和隐藏的。

“instance_pool_id”: {“类型”“禁止”“隐藏”“真正的”},“spark_conf.spark.databricks.cluster.profile”: {“类型”“禁止”“隐藏”“真正的”},“autoscale.min_workers”: {“类型”“固定”“价值”1“隐藏”“真正的”},“autoscale.max_workers”: {“类型”“固定”“价值”10“隐藏”“真正的”},“autotermination_minutes”: {“类型”“固定”“价值”60“隐藏”“真正的”},“node_type_id”: {“类型”“固定”“价值”“i3.xlarge”“隐藏”“真正的”},“driver_node_type_id”: {“类型”“固定”“价值”“i3.xlarge”“隐藏”“真正的”},“spark_version”: {“类型”“固定”“价值”“7. x-snapshot-scala2.11”“隐藏”“真正的”},“custom_tags.team”: {“类型”“固定”“价值”“产品”

注意:对于Azure用户,“node_type_id”和“driver_node_type_id”需要改为Azure支持的虚拟机。

工作政策

说明:该策略只允许用户创建Databricks作业(自动化)集群,并使用该集群运行作业。用户不能使用此策略创建通用(交互式)集群。

“cluster_type”: {“类型”“固定”“价值”“工作”},“.dbus_per_hour”: {“类型”“范围”“执行”One hundred.},“instance_pool_id”: {“类型”“禁止”“隐藏”“真正的”},“num_workers”: {“类型”“范围”“minValue”1},“node_type_id”: {“类型”“正则表达式”“模式”“[rmci] [3 - 5] [rnad] *。(主){0,1}xlarge”},“driver_node_type_id”: {“类型”“正则表达式”“模式”“[rmci] [3 - 5] [rnad] *。(主){0,1}xlarge”},“spark_version”: {“类型”“正则表达式”“模式”“6。[0 - 9].x-scala。*”},“custom_tags.team”: {“类型”“固定”“价值”“产品”

注意:对于Azure用户,“node_type_id”和“driver_node_type_id”需要改为Azure支持的虚拟机。

High Concurrency直通策略

描述:该策略允许用户在高并发模式下创建默认启用直通的集群。这简化了管理的设置,因为用户需要手动设置适当的Spark参数。

“spark_conf.spark.databricks.passthrough.enabled”: {“类型”“固定”“价值”“真正的”},“spark_conf.spark.databricks.repl.allowedLanguages”: {“类型”“固定”“价值”“python, sql”},“spark_conf.spark.databricks.cluster.profile”: {“类型”“固定”“价值”“serverless”},“spark_conf.spark.databricks.pyspark.enableProcessIsolation”: {“类型”“固定”“价值”“真正的”},“custom_tags。ResourceClass”: {“类型”“固定”“价值”“Serverless”

外部转移策略

描述:该策略允许用户创建一个Databricks集群,并且已经附加了一个管理员定义的metastore。这对于允许用户创建自己的集群而不需要额外配置非常有用。

“spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL”: {“类型”“固定”“价值”" jdbc::状态"置疑" / / < jdbc url >”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName”: {“类型”“固定”“价值”“com.microsoft.sqlserver.jdbc.SQLServerDriver”},“spark_conf.spark.databricks.delta.preview.enabled”: {“类型”“固定”“价值”“真正的”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName”: {“类型”“固定”“价值””{{秘密/ metastore / databricks-poc-metastore-user}}”},“spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword”: {“类型”“固定”“价值””{{秘密/ metastore / databricks-poc-metastore-password}}”< / jdbc url >

我该如何开始呢?

您需要使用Databricks高级层(Azure Databricks或AWS)和plus(请参阅价格细节)来使用集群策略。

作为一个Databricks管理员,你可以去“集群”页面,“集群策略”选项卡在策略JSON编辑器中创建你的策略。或者,您也可以通过API创建策略。请参阅Databricks文档-集群策略(AWSAzure).

免费试用Databricks
看到所有工程的博客的帖子