本文属于【Azure 架构师学习笔记】系列。
本文属于【Azure Databricks】系列。
接上文 【Azure 架构师学习笔记】- Azure Databricks (12) – Medallion Architecture简介
前言
上文已经介绍了关于Medallion的知识,本文开始用ADB 来实现, 但是基于内容较多,所以分为两篇。
前面 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建中已经创建了一个空白的ADB 并启用了UC。
从下图可以大概看出ADB 在Azure上的架构,这里有个大概了解即可:
接下来稍微介绍一下ADB 集群的一些重要选项,并创建一个集群。
- Access Mode:有下面3中模式,但是从解释可以看出只有前两种支持UC ,这里选择默认的single即可。
, - Databricks Runtime:决定了Spark的版本,一般使用最新版即可。
- Worker Type:决定了节点所使用的VM 类型。
- Number Worker Nodes:节点随压力增减的幅度。
完成这部分配置之后,我们快速搭建一个ADLS Gen2 来作为medallion的存储。这次使用Terraform来搭建,详见【Azure 架构师学习笔记】- Terraform创建Azure 资源
为了满足medallion 架构,在ADLS 上创建3个container分别为bronze, silever和gold,另外再加一个landing,用于提高可扩展性,最终的样子为这样:
至此,我们的ADB 一共有两个ADLS,一个是用于metadata,另外一个则是上面的用于存储业务数据的。
配置UC 与外部ADLS
为了让ADB 能够访问这个新建的ADLS, 还需要把ADB 的connector授权到这个ADLS 上(外部)。同时还需要在UC中创建“External Locations”(内部)。
打通 ADB UC 与 ADLS
把前面创建的“Access Connector for Azure Databricks”授予“Storage Blob Data Contributor”到新建的ADLS 中。如果ADLS 根据业务需求限制网络访问,那么还可能需要把ADB 的private subnet和public subnet 在ADLS 中进行白名单。
配置External location
External location实际上就是databricks内部的对象在外部ADLS上的映射。
但是由于“external location”是需要一个storage credential,所以我们先点下面一个“create a credential”创建凭证:
其中Access Connetctor ID 可以从资源Access connector 处复制:
有了这个credential之后,ADB UC 就可以正式与ADLS 连接上了。
创建external location, 注意下面的格式
错误出现了,很明显要授权:
检查当前权限,确实没有:
勾选报错中提到的权限,在后续会出现很多权限不足的问题,你可以逐个添加,但是要记录下来以便后续正式环境时减少错误。
按照这个方式,把前面所有的container都建好external location:
到此, 我们的基础环境已经搭建好,接下来将开始UC 内部具体的配置。