什麼是Unity Catalog?

本文將介紹用於Lakehouse的Databricks數據治理解決方案Unity Catalog。

Unity目錄概述

在Unity Catalog中,管理員和數據管理員在Databricks帳戶的所有工作區中集中管理用戶和他們對數據的訪問。不同工作區中的用戶可以共享對相同數據的訪問,這取決於Unity Catalog中集中授予的權限。

Unity目錄圖

Unity Catalog的主要功能包括:

  • 定義一次,處處安全: Unity Catalog提供了一個單一的地方來管理適用於所有工作區和角色的數據訪問策略。

  • 符合標準的安全模型: Unity Catalog的安全模型基於標準的ANSI SQL,允許管理員使用熟悉的語法在目錄、數據庫(也稱為模式)、表和視圖級別上授予現有數據湖的權限。

  • 內置的審計: Unity Catalog自動捕獲用戶級審計日誌,記錄對數據的訪問。

Unity Catalog對象模型

在Unity Catalog中,主數據對象的層次結構從metastore流向table:

  • Metastore:元數據的頂層容器。每個亞metastore公開一個三級名稱空間(目錄模式表格)來組織你的資料。

  • 目錄:對象層次結構的第一層,用於組織數據資產。

  • 模式:也稱為數據庫,模式是對象層次結構的第二層,包含表和視圖。

  • 表格:對象層次結構中的最低級別,表可以是外部(存儲在您選擇的雲存儲中的外部位置)或管理表(存儲在專門為Databricks創建的雲存儲中的存儲容器中)。您也可以創建隻讀的觀點從表。

Unity Catalog對象模型圖

你引用Unity目錄中的所有數據使用三級名稱空間

Metastores

metastore是Unity Catalog中對象的頂級容器。它存儲數據資產(表和視圖)以及控製對它們的訪問的權限。Databricks帳戶管理員可以創建亞metastore並將其分配給Databricks工作區,以控製哪些工作負載使用每個亞metastore。對於使用Unity Catalog的工作空間,它必須附加一個Unity Catalog metastore。

每個metastore都配置了AWS帳戶中S3桶中的根存儲位置。此存儲位置用於元數據和管理表數據。

請注意

這個亞礦不同於在Unity Catalog發布之前創建的Databricks工作區中包含的亞礦。如果你的工作空間包含一個遺留的Hive metastore,那麼該metastore中的數據可以在Unity Catalog中以一個名為hive_metastore

看到創建一個Unity Catalog metastore

目錄

目錄是Unity catalog的三層命名空間的第一層。它用於組織數據資產。用戶可以看到分配給他們的所有目錄使用數據權限

看到創建和管理目錄

模式

模式(也稱為數據庫)是Unity Catalog的三級命名空間的第二層。模式組織表和視圖。要訪問(或列出)模式中的表或視圖,用戶必須具有使用模式及其父編目上的數據權限,並且它們必須具有選擇表或視圖的權限。

看到創建和管理模式(數據庫)

表位於Unity Catalog的三級命名空間的第三層。它包含數據行。要創建表,用戶必須擁有創建而且使用模式上的權限,它們必須具有使用父目錄上的權限。要查詢一個表,用戶必須擁有選擇允許在桌麵上,他們必須有使用對其父架構和編目的權限。

一個表可以是管理外部

管理表

托管表是在Unity Catalog中創建表的默認方式。這些表存儲在創建metastore時配置的根存儲位置中。他們使用δ表的格式。

刪除托管表時,其底層數據將在30天內從雲租戶中刪除。

看到管理表

外部表

外部表是其數據存儲在根存儲位置之外的表。隻有在需要使用其他工具直接訪問數據時,才使用外部表。

當你刪除一個外部表時,Unity Catalog不會刪除底層數據。您可以管理外部表上的特權,並按照與托管表相同的方式在查詢中使用它們。

外部表可以使用以下文件格式:

  • δ

  • CSV

  • JSON

  • AVRO

  • 拚花

  • 獸人

  • 文本

看到外部表

存儲憑證和外部位置

為了管理外部表對底層雲存儲的訪問,Unity Catalog引入了以下對象類型:

  • 存儲憑證封裝提供對雲存儲訪問的長期雲憑據。例如IAM角色,可以訪問S3桶。

  • 外部位置包含對存儲憑據和雲存儲路徑的引用。

看到管理外部位置和存儲憑證

的觀點

視圖是由metastore中的一個或多個表和視圖創建的隻讀對象。它位於Unity Catalog的第三層三級名稱空間.可以從多個模式和目錄中的表和其他視圖創建視圖。你可以創建動態視圖啟用行級和列級權限。

看到創建動態視圖

統一目錄的身份管理

Unity Catalog使用Databricks帳戶中的身份來解析用戶、服務主體和組,並強製執行權限。

若要在帳戶中配置身份,請遵循管理用戶、組和服務主體.在創建時引用這些用戶、服務主體和組訪問控製策略在Unity目錄。

Unity Catalog用戶、服務主體和組也必須添加到工作區中,以訪問筆記本、Databricks SQL查詢、數據資源管理器或REST API命令中的Unity Catalog數據。將用戶、服務主體和組分配到工作空間被稱為聯合身份驗證

所有附加了Unity Catalog亞礦的工作區都啟用了身份聯合。

團體特別注意事項

工作區中已經存在的任何組都被標記工作空間的地方在帳戶控製台中。在Unity Catalog中不能使用這些工作空間-本地組來定義訪問策略。您必須使用帳戶級別的組。如果在命令中引用了工作空間-本地組,則該命令將返回一個錯誤,表示沒有找到該組。如果您以前使用工作空間-本地組來管理對筆記本和其他工件的訪問,那麼這些權限仍然有效。

看到管理組

統一目錄的管理角色

管理Unity Catalog需要以下管理角色:

  • 賬戶管理員可以管理身份,雲資源和工作空間和Unity Catalog亞存儲的創建。

    帳戶管理員可以為Unity目錄啟用工作區。他們可以同時授予工作區和metastore管理權限。出於安全原因,我們建議您限製帳戶中的帳戶管理員數量。

  • Metastore管理員可以管理metastore中所有可安全對象的特權和所有權,例如誰可以創建目錄或查詢表。

    創建Unity Catalog metastore的帳戶admin將成為初始metastore管理員。metastore管理員還可以選擇將此角色委托給另一個用戶或組。我們建議將metastore admin分配給一個組,在這種情況下,組的任何成員都可以獲得metastore admin的特權。看到(推薦)轉移你的metastore的所有權到一個組

  • 工作空間管理員可以將用戶添加到Databricks工作空間,為他們分配工作空間管理員角色,並管理對工作空間中對象和功能的訪問,例如創建集群和更改作業所有權的能力。每個工作空間中應該有有限數量的工作空間管理員。

看到管理用戶、組和服務主體

Unity目錄中的數據權限

在Unity Catalog中,默認情況下數據是安全的。最初,用戶無法訪問metastore中的數據。訪問權限可以由metastore管理員(對象的所有者)或包含該對象的編目或模式的所有者授予。

可以使用數據資源管理器、SQL命令或REST api分配和撤銷權限。

看到在Unity目錄中管理權限

Unity目錄的集群訪問模式

要訪問Unity Catalog中的數據,集群必須配置正確的訪問模式.Unity目錄在默認情況下是安全的。如果集群沒有配置支持Unity-Catalog的訪問模式之一(即共享或單用戶),則集群不能訪問Unity Catalog中的數據。

看到創建可以訪問Unity Catalog的集群和SQL倉庫

Unity目錄的數據沿襲

您可以使用Unity Catalog在Databricks集群或SQL倉庫上執行的任何語言的查詢中捕獲運行時數據沿襲。沿襲被捕捉到列級別,包括與查詢相關的筆記本、工作流和儀表板。要了解更多信息,請參見捕獲和查看數據沿襲與統一目錄

如何為我的組織設置Unity目錄?

要為您的組織設置Unity Catalog,請執行以下操作:

  1. 配置一個S3桶和IAM角色,Unity Catalog可以用來存儲和訪問您的AWS帳戶中的數據。

  2. 為組織運行的每個區域創建一個轉移,並將工作空間附加到轉移。每個工作空間將擁有您在Unity Catalog中管理的數據的相同視圖。

  3. 如果您有一個新帳戶,請向Databricks帳戶添加用戶、組和服務主體。

接下來,創建並授予對目錄、模式和表的訪問權。

有關完整的安裝說明,請參見開始使用Unity目錄