在 Azure 虛擬網路中部署 Azure Databricks (VNet 插入)
本文說明如何在您自己的 Azure 虛擬網路中部署 Azure Databricks 工作區,也稱為 VNet 插入。
使用 VNet 插入進行網路自定義
Azure Databricks 的預設部署是 Azure 上的完全受控服務。 Azure 虛擬網路 (VNet) 會部署到鎖定的資源群組。 所有傳統計算平面資源都會與該 VNet 相關聯。 如果您需要網路自定義,您可以在自己的虛擬網路中部署 Azure Databricks 傳統計算平面資源。 這可讓您:
- 使用服務端點或 Azure 私人端點,以更安全的方式將 Azure Databricks 連線到其他 Azure 服務(例如 Azure 儲存體)。
- 使用使用者定義的路由連線到內部部署數據源。 請參閱 Azure Databricks 的使用者定義路由設定。
- 將 Azure Databricks 連線到網路虛擬設備,以檢查所有輸出流量,並根據允許和拒絕規則採取動作。 請參閱 選項:使用虛擬設備或防火牆路由 Azure Databricks 流量
- 設定 Azure Databricks 以使用自定義 DNS。 請參閱 選項:設定自定義 DNS。
- 設定網路安全組 (NSG) 規則以指定輸出流量限制。
將 Azure Databricks 傳統計算平面資源部署到您自己的 VNet 也可讓您利用彈性的 CIDR 範圍。 針對 VNet,您可以使用 CIDR 範圍大小 /16
-/24
。 針對子網,請使用小於 /26
的IP範圍。
重要
您無法取代現有工作區的 VNet。 如果您目前的工作區無法容納所需的作用中叢集節點數目,建議您在較大的 VNet 中建立另一個工作區。 請遵循下列詳細移轉步驟,將資源 (Notebook、叢集組態、作業) 從舊工作區複製到新工作區。
虛擬網路需求
您部署 Azure Databricks 工作區的 VNet 必須符合下列需求:
- 區域: VNet 必須位於與 Azure Databricks 工作區相同的區域和訂用帳戶中。
- 訂用帳戶: VNet 必須與 Azure Databricks 工作區位於相同的訂用帳戶中。
- 地址空間: VNet 之間的
/16
CIDR/24
區塊,以及最多/26
兩個子網的 CIDR 區塊:容器子網和主機子網。 如需根據 VNet 及其子網大小上限叢集節點的指引,請參閱 地址空間和叢集節點上限。 - 子網: VNet 必須包含兩個專用於 Azure Databricks 工作區的子網:容器子網(有時稱為私人子網)和主機子網(有時稱為公用子網)。 當您使用 安全的叢集連線來部署工作區時,容器子網和主機子網都會使用私人IP。 您無法跨工作區共用子網,或在 Azure Databricks 工作區所使用的子網上部署其他 Azure 資源。 如需根據 VNet 及其子網大小上限叢集節點的指引,請參閱 地址空間和叢集節點上限。
地址空間和叢集節點上限
具有較小虛擬網路的工作區可以比具有較大虛擬網路的工作區更快用盡IP位址(網路空間)。 針對 VNet 使用 和 /24
之間的 /16
CIDR 區塊,以及最多/26
兩個子網的 CIDR 區塊(容器子網和主機子網)。 您可以為子網建立最多 /28
CIDR 區塊,不過 Databricks 不建議小於 /26
的子網。
VNet 位址空間的 CIDR 範圍會影響工作區可以使用的叢集節點數目上限。
Azure Databricks 工作區需要 VNet 中的兩個子網:容器子網和主機子網。 Azure 會 在每個子網中保留五個IP。 Azure Databricks 針對每個叢集節點需要兩個IP:主機子網中主機的一個IP位址,以及容器子網中容器的一個IP位址。
- 您可能不想使用 VNet 的所有地址空間。 例如,您可能想要在一個 VNet 中建立多個工作區。 因為您無法跨工作區共用子網,所以您可能想要未使用總 VNet 位址空間的子網。
- 您必須為 VNet 位址空間內的兩個新子網配置地址空間,且不會在該 VNet 中重疊目前或未來子網的地址空間。
下表根據網路大小顯示子網大小上限。 此數據表假設沒有任何額外的子網佔用位址空間。 如果您有預先存在的子網,或想要保留其他子網的位址空間,請使用較小的子網:
VNet 位址空間 (CIDR) | 假設沒有其他子網,則 Azure Databricks 子網大小上限 (CIDR) |
---|---|
/16 |
/17 |
/17 |
/18 |
/18 |
/19 |
/20 |
/21 |
/21 |
/22 |
/22 |
/23 |
/23 |
/24 |
/24 |
/25 |
若要根據子網大小尋找最大叢集節點,請使用下表。 每個子網的IP位址資料行包含五個 Azure 保留的IP位址。 最右邊的數據行表示可在以該大小之子網布建的工作區中同時執行的叢集節點數目。
子網大小 (CIDR) | 每個子網的IP位址 | Azure Databricks 叢集節點上限 |
---|---|---|
/17 |
32768 | 32763 |
/18 |
16384 | 16379 |
/19 |
8192 | 8187 |
/20 |
4096 | 4091 |
/21 |
2048 | 2043 |
/22 |
1024 | 1019 |
/23 |
512 | 507 |
/24 |
256 | 251 |
/25 |
128 | 123 |
/26 |
64 | 59 |
使用安全叢集連線時的輸出IP位址
如果您在使用 VNet 插入的工作區上啟用 安全的叢集連線 ,Databricks 建議您的工作區具有穩定的輸出公用 IP。
穩定的輸出公用IP位址很有用,因為您可以將它們新增至外部允許清單。 例如,若要使用穩定的連出IP位址從 Azure Databricks 連線到 Salesforce。 如果您設定IP存取清單,則必須將這些公用IP位址新增至允許清單。 請參閱 設定工作區的IP存取清單。
警告
Microsoft宣佈,在 2025 年 9 月 30 日,Azure 中虛擬機的默認輸出存取連線將會淘汰。 請參閱 此公告。 這表示使用默認輸出存取的 Azure Databricks 工作區,而不是穩定的輸出公用 IP 可能無法在該日期之後繼續運作。 Databricks 建議您在該日期之前為工作區新增明確的輸出方法。
若要設定穩定的輸出公用IP,請參閱 使用 VNet 插入的輸出
共用資源和對等互連
如果需要 DNS 之類的共用網路資源,Databricks 強烈建議您遵循中樞和輪輻模型的 Azure 最佳做法。 使用 VNet 對等互連,將工作區 VNet 的私人 IP 空間延伸至中樞,同時讓輪輻彼此隔離。
如果您的 VNet 中有其他資源或使用對等互連,Databricks 強烈建議您將拒絕規則新增至連結至相同 VNet 中其他網路和子網或對等互連至該 VNet 的網路安全組 (NSG)。 針對輸入和輸出連線新增 [拒絕] 規則,以便限制 Azure Databricks 計算資源的連線。 如果您的叢集需要存取網路上的資源,請新增規則,只允許符合需求所需的最少存取量。
如需相關信息,請參閱 網路安全組規則。
使用 Azure 入口網站 建立 Azure Databricks 工作區
本節說明如何在 Azure 入口網站 中建立 Azure Databricks 工作區,並將其部署在您自己的現有 VNet 中。 Azure Databricks 會使用您指定的 CIDR 範圍,以兩個新的子網更新 VNet。 此服務也會使用新的網路安全組來更新子網、設定輸入和輸出規則,最後將工作區部署至更新的 VNet。 若要進一步控制 VNet 的設定,請使用 Azure-Databricks 提供的 Azure Resource Manager (ARM) 範本,而不是入口網站。 例如,使用現有的網路安全組或建立您自己的安全性規則。 請參閱 使用 Azure Resource Manager 範本的進階設定。
建立工作區的用戶必須將網路參與者角色指派給對應的 虛擬網絡,或指派 Microsoft.Network/virtualNetworks/subnets/join/action
和許可權的Microsoft.Network/virtualNetworks/subnets/write
自定義角色。
您必須設定將部署 Azure Databricks 工作區的 VNet。 您可以使用現有的 VNet 或建立新的 VNet,但 VNet 必須與您打算建立的 Azure Databricks 工作區位於相同的區域和相同的訂用帳戶。 VNet 的大小必須介於 /16 和 /24 之間的 CIDR 範圍。 如需詳細資訊,請參閱 虛擬網路需求。
當您設定工作區時,請使用現有的子網或指定新子網的名稱和IP範圍。
在 Azure 入口網站 中,選取 [+ 建立資源>分析 > Azure Databricks] 或搜尋 [Azure Databricks],然後按兩下 [建立] 或 [+ 新增] 以啟動 [Azure Databricks 服務] 對話框。
遵循在您自己的 VNet 快速入門中建立 Azure Databricks 工作區中所述的設定步驟。
在 [ 網络] 索引 標籤中,選取您想要在 [虛擬網络 ] 字段中使用的 VNet。
重要
如果您在選擇器中看不到網路名稱,請確認您為工作區指定的 Azure 區域符合所需 VNet 的 Azure 區域。
將子網命名為 ,並在區塊中提供最大大小的
/26
CIDR 範圍。 如需根據 VNet 及其子網大小上限叢集節點的指引,請參閱 地址空間和叢集節點上限。 部署工作區之後,就無法變更子網 CIDR 範圍。- 若要指定現有的子網,請指定現有子網的確切名稱。 使用現有的子網時,也會在工作區建立窗體中設定IP範圍,以完全符合現有子網的IP範圍。
- 若要建立新的子網,請指定該 VNet 中尚未存在的子網名稱。 子網會以指定的IP範圍建立。 您必須在 VNet 的 IP 範圍內指定 IP 範圍,且尚未配置給現有的子網。
Azure Databricks 要求子網名稱不超過 80 個字元。
子網會取得相關聯的網路安全組規則,其中包含允許叢集內部通訊的規則。 Azure Databricks 具有委派許可權,可透過
Microsoft.Databricks/workspaces
資源提供者更新這兩個子網。 這些許可權僅適用於 Azure Databricks 所需的網路安全組規則,不適用於您新增的其他網路安全組規則,或套用至所有網路安全組隨附的默認網路安全組規則。按兩下 [建立 ] 將 Azure Databricks 工作區部署至 VNet。
使用 Azure Resource Manager 樣本的進階設定
若要進一步控制 VNet 的設定,請使用下列 Azure Resource Manager (ARM) 範本,而不是 以入口網站為基礎的自動 VNet 組態和工作區部署。 例如,使用現有的子網、現有的網路安全組,或新增您自己的安全性規則。
如果您使用自定義的 Azure Resource Manager 範本或 Azure Databricks VNet 插入 的工作區範本,將工作區部署至 現有的 VNet, 您必須建立主機和容器子網、將網路安全組連結至每個子網,並將子網委派給 Microsoft.Databricks/workspaces
資源提供者 ,再 部署工作區。 針對您部署的每個工作區,您必須有個別的子網路組。
全部一對一範本
若要使用一個範本建立 VNet 和 Azure Databricks 工作區,請使用 Azure Databricks VNet 插入工作區的全能範本。
虛擬網路範本
若要使用範本建立具有適當子網的 VNet,請使用 Databricks VNet 插入的 VNet 範本。
Azure Databricks 工作區範本
若要使用範本將 Azure Databricks 工作區部署到現有的 VNet,請使用 適用於 Azure Databricks VNet 插入的工作區範本。
工作區範本可讓您指定現有的 VNet,並使用現有的子網:
- 針對您部署的每個工作區,您必須有個別的主機/容器子網。 不支援跨工作區共用子網,或在 Azure Databricks 工作區所使用的子網上部署其他 Azure 資源。
- 您的 VNet 主機和容器子網必須已連結網路安全組,且必須先委派至
Microsoft.Databricks/workspaces
服務,才能使用此 Azure Resource Manager 範本來部署工作區。 - 若要建立具有適當委派子網的 VNet,請使用 Databricks VNet 插入的 VNet 範本。
- 若要在尚未委派主機和容器子網時使用現有的 VNet,請參閱 新增或移除子網委派。
網路安全組規則
下表顯示 Azure Databricks 所使用的目前網路安全組規則。 如果 Azure Databricks 需要新增規則或變更此列表上現有規則的範圍,您會收到事先通知。 每當發生這類修改時,就會更新本文和數據表。
Azure Databricks 如何管理網路安全組規則
下列各節所列的 NSG 規則代表 Azure Databricks 透過將 VNet 的主機和容器子網委派給 Microsoft.Databricks/workspaces
服務,自動布建和管理 NSG 的規則。 您沒有更新或刪除這些NSG規則的許可權,而且子網委派會封鎖任何嘗試這樣做。 Azure Databricks 必須擁有這些規則,以確保Microsoft可在 VNet 中可靠地運作及支援 Azure Databricks 服務。
其中有些 NSG 規則已 指派 VirtualNetwork 作為來源和目的地。 這已實作,以簡化在 Azure 中缺少子網層級服務卷標的設計。 所有叢集都會在內部受到第二層網路原則的保護,因此叢集 A 無法連線到相同工作區中的叢集 B。 如果您的工作區部署至相同客戶管理的 VNet 中的不同子網組,這也適用於多個工作區。
重要
Databricks 強烈建議您將拒絕規則新增至連結至相同 VNet 中其他網路和子網或對等互連至該 VNet 的網路安全組 (NSG)。 針對輸入和輸出連線新增 [拒絕] 規則,以便限制 Azure Databricks 計算資源的連線。 如果您的叢集需要存取網路上的資源,請新增規則,只允許符合需求所需的最少存取量。
工作區的網路安全組規則
本節中的資訊僅適用於 2020 年 1 月 13 日之後建立的 Azure Databricks 工作區。 如果您的工作區是在 2020 年 1 月 13 日安全叢集連線 (SCC) 發行之前建立的,請參閱下一節。
下表列出工作區的網路安全組規則,並包含兩個輸入安全組規則,只有在 停用安全叢集連線時 才會包含這些規則。
方向 | 通訊協定 | 來源 | 來源連接埠 | Destination | 目的地連接埠 | Used |
---|---|---|---|---|---|---|
傳入 | 任意 | VirtualNetwork | 任意 | VirtualNetwork | 任意 | 預設 |
傳入 | TCP | AzureDatabricks (服務卷標) 只有在停用 SCC 時 |
任意 | VirtualNetwork | 22 | 公用 IP |
傳入 | TCP | AzureDatabricks (服務卷標) 只有在停用 SCC 時 |
任意 | VirtualNetwork | 5557 | 公用 IP |
輸出 | TCP | VirtualNetwork | 任意 | AzureDatabricks (服務卷標) | 443, 3306, 8443-8451 | 預設 |
輸出 | TCP | VirtualNetwork | 任意 | SQL | 3306 | 預設 |
輸出 | TCP | VirtualNetwork | 任意 | 儲存體 | 443 | 預設 |
輸出 | 任意 | VirtualNetwork | 任意 | VirtualNetwork | 任意 | 預設 |
輸出 | TCP | VirtualNetwork | 任意 | EventHub | 9093 | 預設 |
注意
如果您限制輸出規則,Databricks 建議您開啟埠 111 和 2049,以啟用特定連結庫安裝。
重要
Azure Databricks 是部署在全域 Azure 公用雲端基礎結構上的Microsoft Azure 第一方服務。 服務元件之間的所有通訊,包括控制平面中的公用IP與客戶計算平面之間的通訊,都會保留在 Azure 網路骨幹Microsoft中。 另 請參閱全域網路Microsoft。
疑難排解
工作區建立錯誤
子網 <subnet-id>
需要下列任何委派 [Microsoft.Databricks/workspaces] 參考服務關聯連結
可能的原因:您要在未將主機和容器子網委派給 Microsoft.Databricks/workspaces
服務的 VNet 中建立工作區。 每個子網都必須連結網路安全組,且必須正確委派。 如需詳細資訊,請參閱虛擬網路需求。
子網 <subnet-id>
已由工作區使用 <workspace-id>
可能的原因:您要在 VNet 中建立工作區,其中包含現有 Azure Databricks 工作區已使用的主機和容器子網。 您不能在單一子網路內共用多個工作區。 您部署的每個工作區都必須有一組新的主機和容器子網路。
疑難排解
無法連線到實例:無法透過 SSH 連線資源。
可能的原因:控制平面到背景工作角色的流量遭到封鎖。 如果您要部署到連線到內部部署網路的現有 VNet,請使用將 Azure Databricks 工作區連線到內部部署網路中提供的資訊來檢閱您的設定。
未預期的啟動失敗:設定叢集時發生非預期的錯誤。 如果問題持續發生,請重試並連絡 Azure Databricks。 內部錯誤訊息: Timeout while placing node
。
可能的原因:封鎖從背景工作角色到 Azure 儲存體 端點的流量。 如果您使用自定義 DNS 伺服器,也請檢查 VNet 中 DNS 伺服器的狀態。
雲端提供者啟動失敗:設定叢集時發生雲端提供者錯誤。 請參閱 Azure Databricks 指南以取得詳細資訊。 Azure 錯誤碼:AuthorizationFailed/InvalidResourceReference.
可能的原因:VNet 或子網不再存在。 請確定 VNet 和子網路存在。
叢集已終止。 原因:Spark 啟動失敗:Spark 無法及時啟動。 此問題可能是因為 Hive 中繼存放區故障、Spark 設定無效或 init 指令碼故障所造成。 請參閱 Spark 驅動程式記錄以針對此問題進行疑難排解,如果問題持續發生,請連絡 Databricks。 內部錯誤訊息: Spark failed to start: Driver failed to start in time
。
可能的原因:容器無法與裝載實例或工作區記憶體帳戶通訊。 修正方法是將自定義路由新增至工作區記憶體帳戶的子網,並將下一個躍點設為因特網。