本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Databricks】系列。
前言
由于ADB 的更新速度很快,在几个月之后重新搭建ADB 时发现UC 已经更新了很多,为了后续做ADB 的功能测试时能有一个更准确的环境,这里从新搭建一次基于目前最新版本的UC。
启用UC
当有了一个ADB 之后,使用下面的步骤即可得到一个UC 环境。

Step 1:创建Storage Account(SA)
这里的SA是Databricks内部使用的,存储UC metadata和meanaged Tables。如果是Azure的storage account,注意一定要为ADLS Gen2,即启用了"Hierarchical namespace"。
下图是为了这次所创建的ADLS。

Step 2:创建Access Connector for Databricks
UC访问外部资源需要借助某些"工具",访问ADLS 则需要Access Connector。在创建过程中需要保存资源ID,在后面需要使用。


可以选择system assigned MI 或者user assigned MI。如果所在企业没有明文规定,并且不考虑被多个ADB 共用,那么建议使用System MI, 比较省事。使用User MI 更多可以考虑多个ADB 共用权限。

记下这个ID:
Step 3:配置Connector在Storage Account和container上的权限
这里的权限主要是RBAC, 最少需要"Storage Blob Data Contributor" 角色。而授权的对象则是Step 2中的connector(Managed Identity)
Step 4:创建metastore
进去ADB 之后, 从下图中跳到管理界面,这个地方需要你有account admin 权限。

你也可以添加其他账号协助管理:
从catalog中进去管理UC, 如果首次创建则需要先创建MetaStore。
创建MetaStore
按照提示和前面创建的资源配置, 注意ADLS Gen2 path中的格式:

如果创建过程中报下面的错误,则意味着权限还不够:
Could not access location
This path doesn't exist or we couldn't access it with the credential provided. Metastores require a directory path.

这个时候到ADLS 的path中,添加如下的ACL。

再次回到MetaStore即可创建:

Step 5:把Workspace与MetaStore 关联
在创建好MetaStore之后,下一步就是assign catalog到workspace中。选中并点击assign即可。

配置完成:
检查UC
回到ADB workspace,然后点击catalog,可以从下图中看到这个workspace已经与MetaStore关联成功也就是由UC 控制。

检查集群状态,可以看到下面也有了UC 的标记。证明集群也已经收到了UC 的控制。

如果对比集群类型,可以看到已经启用了UC 和未启用UC的不同,下面这个图是启用了UC 之后可以选择的policy类型。

下面这个图是未启用UC的集群policy
小结
其实搭建UC 并不是主要目的, 最近因为需要使用"Medallion Architecture", 所以搭建一个环境来做后续的尝试。