共用方式為


設定叢集

注意

這些是舊版建立叢集 UI 的指示,而且只包含歷史精確度。 所有客戶都應該使用更新的 建立叢集UI

本文說明建立和編輯 Azure Databricks 叢集時可用的組態選項。 其著重於使用UI建立和編輯叢集。 如需其他方法,請參閱 Databricks CLI叢集 APIDatabricks Terraform 提供者

如需決定組態選項組合最符合您需求的說明,請參閱 叢集設定最佳做法

建立叢集

叢集原則

集原則 會限制根據一組規則設定叢集的能力。 原則規則會限制叢集建立可用的屬性或屬性值。 叢集原則具有 ACL,可限制其使用特定使用者和群組,因此會限制您在建立叢集時可以選取的原則。

若要設定叢集原則,請在 [ 原則 ] 下拉式清單中選取叢集原則。

選取叢集原則

注意

如果未在工作區中建立任何原則,則不會顯示 [原則] 下拉式清單。

如果您有:

  • 叢集建立許可權,您可以選取 [ 不受限制 的原則] 並建立完全可設定的叢集。 Unrestricted 原則不會限制任何叢集屬性或屬性值。
  • 叢集建立許可權和叢集原則的存取權,您可以選取 [不受限制 的原則] 和您可以存取的原則。
  • 僅存取叢集原則,您可以選取您有權存取的原則。

叢集模式

注意

本文說明舊版叢集 UI。 如需新叢集 UI 的相關信息(預覽版),請參閱 計算組態參考。 這包括叢集存取類型和模式的一些術語變更。 如需新叢集和舊版叢集類型的比較,請參閱 叢集 UI 變更和叢集存取模式。 預覽 UI 中:

  • 標準模式叢集 現在稱為 「無隔離共用存取模式」叢集
  • 數據表 ACL 的高並行現在稱為 共用存取模式叢集

Azure Databricks 支援三種叢集模式:標準、高並行和 單一節點。 默認叢集模式為標準。

重要

  • 如果您的工作區已指派給 Unity 目錄 中繼存放區,則無法使用高並行叢集。 相反地,您會使用 存取模式 來確保訪問控制的完整性,並強制執行強式隔離保證。 另 請參閱存取模式
  • 建立叢集之後,您無法變更叢集模式。 如果您想要不同的叢集模式,您必須建立新的叢集。

叢集組態包含預設值相依於叢集模式的自動終止設定

  • 標準與單一節點叢集預設會在 120 分鐘後自動終止。
  • 高併行叢集 預設不會 自動終止。

標準叢集

警告

標準模式叢集(有時稱為「無隔離共用叢集」可由多個用戶共用,且用戶之間沒有隔離。 如果您使用高並行叢集模式 ,而不需要其他安全性設定,例如數據表 ACL 或認證傳遞,則相同的設定會用於標準模式叢集。 帳戶管理員可以 防止在這些類型的叢集上自動為 Databricks 工作區系統管理員 產生內部認證。 如需更安全的選項,Databricks 建議使用數據表 ACL 的高並行叢集等替代方案。

建議只針對單一使用者使用標準叢集。 標準叢集可以執行以 Python、SQL、R 和 Scala 開發的工作負載。

高併行叢集

高併行叢集是受控雲端資源。 高併行叢集的主要優點是,它們提供更細緻的共用,以達到資源使用率上限和最小查詢延遲。

高併行叢集可以執行 SQL、Python 和 R 中開發的工作負載。高併行叢集的效能和安全性是由在不同的進程中執行用戶程式代碼所提供,這在 Scala 中是不可能的。

此外,只有高並行叢集支持 數據表訪問控制

若要建立高並行叢集,請將 [叢集模式] 設定[高并行]。

高併行叢集模式

單一節點叢集

單一節點叢集沒有背景工作角色,並在驅動程序節點上執行Spark作業。

相反地,除了驅動程序節點執行Spark作業之外,標準叢集還需要 至少一個 Spark背景工作節點。

若要建立單一節點叢集,請將叢集模式設定單一節點

單一節點叢集模式

若要深入瞭解使用單一節點叢集,請參閱 單一節點或多節點計算

若要減少叢集開始時間,您可以將叢集連結至驅動程式和背景工作節點的預先定義 閑置實例集 區。 叢集是使用集區中的實例來建立。 如果集區沒有足夠的閑置資源來建立要求的驅動程式或背景工作角色節點,集區會藉由從實例提供者配置新的實例來擴充。 當連結的叢集終止時,所使用的實例會傳回集區,並可由不同的叢集重複使用。

如果您為背景工作節點選取集區,但不是針對驅動程式節點選取集區,驅動程序節點會從背景工作節點組態繼承集區。

重要

如果您嘗試選取驅動程序節點的集區,但不選取背景工作節點的集區,則會發生錯誤,而且不會建立您的叢集。 此需求可防止驅動程式節點必須等候背景工作節點建立的情況,反之亦然。

若要深入瞭解如何在 Azure Databricks 中使用集區,請參閱 集區組態參考

Databricks Runtime

Databricks 運行時間是叢集執行的一組核心元件。 所有 Databricks 執行時間都包含 Apache Spark,並新增可改善可用性、效能和安全性的元件和更新。 如需詳細資訊,請參閱 Databricks Runtime 版本資訊和相容性

Azure Databricks 會在您建立或編輯叢集時,於 Databricks 執行時間版本下拉式清單中提供數種類型的運行時間和數個版本的運行時間類型

選取運行時間版本

光子加速

Photon 適用於執行 Databricks Runtime 9.1 LTS 和更新版本之叢集。

若要啟用 Photon 加速,請選取 [ 使用 Photon 加速 ] 複選框。

如有需要,您可以在 [背景工作類型] 和 [驅動程序類型] 下拉式清單中指定實例類型。

Databricks 建議下列實例類型,以獲得最佳價格和效能:

  • Standard_E4ds_v4
  • Standard_E8ds_v4
  • Standard_E16ds_v4

您可以在 Spark UI檢視 Photon 活動。 下列螢幕快照顯示查詢詳細數據 DAG。 DAG 中有兩個 Photon 指示。 首先,Photon 運算子會以 「Photon」 開頭,例如 PhotonGroupingAgg。 其次,在 DAG 中,Photon 運算子和階段是彩色桃色,而非 Photon 運算符則為藍色。

Photon DAG

Docker 映像

針對某些 Databricks Runtime 版本,您可以在建立叢集時指定 Docker 映像。 範例使用案例包括連結庫自定義、不會變更的黃金容器環境,以及 Docker CI/CD 整合。

您也可以使用 Docker 映像,在具有 GPU 裝置的叢集上建立自定義深度學習環境。

如需指示,請參閱使用 GPU 計算上的 Databricks Container Service 和 Databricks Container Services 自定義容器。

叢集節點類型

叢集是由一個驅動程序節點和零個或多個背景工作節點所組成。

您可以為驅動程式和背景工作角色節點挑選不同的雲端提供者實例類型,不過根據預設,驅動程序節點會使用與背景工作節點相同的實例類型。 不同的實例類型系列適合不同的使用案例,例如需要大量記憶體或大量計算的工作負載。

注意

如果您的安全性需求包含 計算隔離,請選取 Standard_F72s_V2 實例作為背景工作角色類型。 這些實例類型代表取用整個實體主機的隔離虛擬機,並提供支援所需的必要隔離等級,例如美國國防部影響等級 5 (IL5) 工作負載。

驅動程式節點

驅動程式節點會針對附加至叢集的所有筆記本,維護其狀態資訊。 驅動程式節點也會維護 SparkContext,並解譯您從叢集上的筆記本或程式庫執行的所有命令,以及執行與 Spark 執行程式協調的 Apache Spark 主機。

驅動程式節點類型的預設值與背景工作角色節點類型相同。 如果您打算 collect() 從 Spark 背景工作角色取得大量數據,並在筆記本中分析它們,則可以選擇具有更多記憶體的較大驅動程式節點類型。

提示

由於驅動程式節點會維護鏈接筆記本的所有狀態資訊,因此請務必從驅動程序節點中斷連結未使用的筆記本。

背景工作節點

Azure Databricks 背景工作角色節點會執行 Spark 執行程式,以及叢集正常運作所需的其他服務。 當您使用 Spark 散發工作負載時,所有分散式處理都會發生在背景工作角色節點上。 Azure Databricks 會為每個背景工作節點執行一個執行程式;因此,執行程式和背景工作角色會在 Azure Databricks 架構的內容中交替使用。

提示

若要執行 Spark 作業,您至少需要一個背景工作節點。 如果叢集沒有背景工作角色,您可以在驅動程式節點上執行非 Spark 命令,但 Spark 命令將會失敗。

GPU 實例類型

對於需要高效能的計算挑戰工作,例如與深度學習相關聯的工作,Azure Databricks 支援以圖形處理單位 (GPU) 加速的叢集。 如需詳細資訊,請參閱 已啟用 GPU 的計算

現成實例

若要節省成本,您可以選擇使用 現成實例,也稱為 Azure Spot VM ,方法是核取 [Spot 實例] 複選框。

設定現成

第一個實例一律是隨選的(驅動程序節點一律是隨選的),而後續的實例將會是現成實例。 如果現成實例因無法使用而收回,則會部署隨選實例來取代收回的實例。

叢集大小和自動調整

當您建立 Azure Databricks 叢集時,您可以為叢集提供固定數目的背景工作角色,或提供叢集的最小和最大背景工作角色數目。

當您提供固定大小叢集時,Azure Databricks 可確保您的叢集具有指定的背景工作角色數目。 當您提供背景工作角色數目的範圍時,Databricks 會選擇執行作業所需的適當背景工作數目。 這稱為 自動調整

使用自動調整,Azure Databricks 會動態重新配置背景工作角色,以考慮作業的特性。 管線的某些部分可能比其他人更需要計算需求,Databricks 會在作業的這些階段自動新增額外的背景工作角色(並在不再需要時將其移除)。

自動調整規模可讓您更輕鬆地達到高叢集使用率,因為您不需要佈建叢集以配合工作負載。 這特別適用於隨著時間變更需求的工作負載(例如在一天期間探索數據集),但它也可以套用至一次性較短的工作負載,其布建需求未知。 因此,自動調整提供兩個優點:

  • 相較於固定大小的未布建叢集,工作負載的執行速度會更快。
  • 相較於靜態大小的叢集,自動調整叢集可以降低整體成本。

根據叢集和工作負載的常數大小,自動調整可讓您同時獲得一或兩個優點。 當雲端提供者終止實例時,叢集大小可能會低於所選背景工作角色數目下限。 在此情況下,Azure Databricks 會持續重試以重新佈建實例,以維持最低背景工作角色數目。

注意

自動調整不適用於 spark-submit 作業。

自動調整的運作方式

  • 在 2 個步驟中從最小值相應增加為最大值。
  • 即使叢集未閒置,也可以藉由查看隨機檔案狀態來相應減少。
  • 根據目前節點的百分比相應減少。
  • 在作業叢集上,如果叢集在過去 40 秒內使用量過低,就會相應減少。
  • 在所有用途叢集上,如果叢集在過去 150 秒內使用量過低,就會相應減少。
  • Spark 組 spark.databricks.aggressiveWindowDownS 態屬性會以秒為單位指定叢集進行相應減少決策的頻率。 增加值會導致叢集更慢地相應減少。 最大值為 600。

啟用及設定自動調整

若要允許 Azure Databricks 自動調整叢集的大小,您可以啟用叢集的自動調整,並提供背景工作角色的最小和最大範圍。

  1. 啟用自動調整。

    • 全用途叢集 - 在 [建立叢集] 頁面上,選取 [Autopilot 選項] 方塊中的 [啟用自動調整] 複選框:

      啟用互動式叢集的自動調整

    • 作業叢集 - 在 [設定叢集] 頁面上,選取 [Autopilot 選項] 方塊中的 [啟用自動調整] 複選框:

      啟用作業叢集的自動調整

  2. 設定最小和最大背景工作角色。

    設定最小和最大背景工作角色

    當叢集執行時,叢集詳細數據頁面會顯示已配置的背景工作角色數目。 您可以比較已配置的背景工作角色數目與背景工作角色設定,並視需要進行調整。

重要

如果您使用實例集區

  • 請確定要求的叢集大小小於或等於 集區中閑置實例 數目下限。 如果更大,叢集啟動時間會相當於未使用集區的叢集。
  • 請確定叢集大小上限小於或等於 集區容量上限 。 如果更大,則叢集建立將會失敗。

自動調整範例

如果您將靜態叢集重新設定為自動調整叢集,Azure Databricks 會立即在最小和上限範圍內調整叢集的大小,然後開始自動調整。 例如,下表示范噹您將叢集重新設定為在5到10個節點之間自動調整時,具有特定初始大小的叢集會發生什麼情況。

初始大小 重新設定之後的大小
6 6
12 10
3 5

自動調整本機記憶體

通常很難估計特定作業需要多少磁碟空間。 為了讓您不必估計在建立時要連結至叢集的受控磁碟數目,Azure Databricks 會自動在所有 Azure Databricks 叢集上啟用自動調整本機記憶體。

使用自動調整本機記憶體,Azure Databricks 會監視叢集 Spark 背景工作角色上可用的可用磁碟空間量。 如果背景工作角色開始在磁碟上執行太低,Databricks 會在磁碟空間用盡之前,自動將新的受控磁碟附加至背景工作角色。 每個虛擬機的磁碟空間總計上限為 5 TB 的磁碟(包括虛擬機的初始本機記憶體)。

只有在虛擬機傳回 Azure 時,才會中斷連結至虛擬機的受控磁碟。 也就是說,只要受控磁碟是執行中叢集的一部分,就不會從虛擬機中斷連結。 若要縮小受控磁碟使用量,Azure Databricks 建議在設定叢集大小和自動調整非預期終止的叢集中使用此功能。

本機磁碟加密

重要

這項功能處於公開預覽狀態

您用來執行叢集的某些實例類型可能有本機連結的磁碟。 Azure Databricks 可能會儲存這些本機連結磁碟上的隨機數據或暫時數據。 若要確保所有記憶體類型的所有待用數據都會加密,包括暫時儲存在叢集本機磁碟上的隨機數據,您可以啟用本機磁碟加密。

重要

您的工作負載可能會因為讀取和寫入加密數據對本機磁碟區的效能影響而變慢。

啟用本機磁碟加密時,Azure Databricks 會在本機產生一個加密密鑰,此密鑰對每個叢集節點而言都是唯一的,並用來加密儲存在本機磁碟上的所有數據。 索引鍵的範圍是每個叢集節點的本機,而且會與叢集節點本身一起終結。 在其存留期間,金鑰會位於記憶體中以進行加密和解密,並儲存在磁碟上加密。

若要啟用本機磁碟加密,您必須使用 叢集 API。 在叢集建立或編輯期間,設定:

{
  "enable_local_disk_encryption": true
}

如需如何叫用這些 API 的範例,請參閱叢集 API

以下是叢集建立呼叫的範例,可啟用本機磁碟加密:

{
  "cluster_name": "my-cluster",
  "spark_version": "7.3.x-scala2.12",
  "node_type_id": "Standard_D3_v2",
  "enable_local_disk_encryption": true,
  "spark_conf": {
    "spark.speculation": true
  },
  "num_workers": 25
}

安全性模式

如果您的工作區已指派給 Unity 目錄 中繼存放區,您可以使用安全性模式,而不是 高併行叢集模式 ,以確保存取控制的完整性,並強制執行強式隔離保證。 Unity 目錄無法使用高併行叢集模式。

在 [進階選項] 下,從下列叢集安全性模式中選取:

  • :沒有隔離。 不會強制執行工作區本機數據表訪問控制或認證傳遞。 無法存取 Unity 目錄數據。
  • 單一使用者:只能由單一使用者使用(根據預設,建立叢集的使用者)。 其他使用者無法附加至叢集。 從具有 單一使用者 安全性模式的叢集存取檢視時,檢視會以使用者的許可權執行。 單一使用者叢集支援使用 Python、Scala 和 R 的工作負載。單一使用者叢集支援 Init 腳本、連結庫安裝和 DBFS 掛接。 自動化作業應該使用單一使用者叢集。
  • 用戶隔離:可由多個用戶共用。 僅支援 SQL 工作負載。 連結庫安裝、init 腳本和 DBFS 掛接已停用,以在叢集使用者之間強制執行嚴格的隔離。
  • 僅限數據表 ACL(舊版):強制執行工作區本機數據表訪問控制,但無法存取 Unity 目錄數據。
  • 僅傳遞 (舊版):強制執行工作區本機認證傳遞,但無法存取 Unity 目錄數據。

Unity 目錄工作負載唯一支援的安全性模式是 單一用戶用戶隔離

如需詳細資訊,請參閱 存取模式

Spark 設定

若要微調 Spark 作業,您可以在叢集設定中提供自定義 Spark 組態屬性

  1. 在 [叢集組態] 頁面上,按兩下 [ 進階選項] 切換。

  2. 按兩下 [Spark] 索引 標籤

    Spark 設定

    Spark設定中,輸入組態屬性作為每行一個機碼/值組。

當您使用叢集 API 設定叢集時,請在 [建立新的叢集 API] 或 [更新叢集組態 API] 字段中設定 Spark 屬性spark_conf

Databricks 不建議使用全域 init 腳本。

若要設定所有叢集的 Spark 屬性,請建立 全域 init 腳本

dbutils.fs.put("dbfs:/databricks/init/set_spark_params.sh","""
  |#!/bin/bash
  |
  |cat << 'EOF' > /databricks/driver/conf/00-custom-spark-driver-defaults.conf
  |[driver] {
  |  "spark.sql.sources.partitionOverwriteMode" = "DYNAMIC"
  |}
  |EOF
  """.stripMargin, true)

從秘密擷取 Spark 組態屬性

Databricks 建議將機密資訊,例如密碼儲存在秘密,而不是純文本。 若要參考 Spark 組態中的秘密,請使用下列語法:

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

例如,若要將名為 password 的Spark組態屬性設定為中所 secrets/acme_app/password儲存秘密的值:

spark.password {{secrets/acme-app/password}}

如需詳細資訊,請參閱 在Spark組態屬性或環境變數中參考秘密的語法。

環境變數

您可以設定可從叢集上執行的 init 腳本存取的自訂環境變數。 Databricks 也提供您可以在 init 腳本中使用的預先定義 環境變數 。 您無法覆寫這些預先定義的環境變數。

  1. 在 [叢集組態] 頁面上,按兩下 [ 進階選項] 切換。

  2. 按兩下 [Spark] 索引 標籤

  3. 在 [環境變數] 欄位中設定環境變數

    環境變數欄位

您也可以使用spark_env_vars建立新叢集 API更新叢集組態 API 中的欄位來設定環境變數。

叢集標籤

叢集標籤可讓您輕鬆地監視組織中各種群組所使用的雲端資源成本。 您可以在建立叢集時指定標記作為索引鍵/值組,而 Azure Databricks 會將這些標籤套用至 VM 和磁碟區等雲端資源,以及 DBU 使用量報告

針對從集區啟動的叢集,自定義叢集卷標只會套用至 DBU 使用量報告,且不會傳播至雲端資源。

如需集區和叢集卷標類型如何搭配運作的詳細資訊,請參閱 使用標記監視使用量。

為了方便起見,Azure Databricks 會將四個默認標籤套用至每個叢集: VendorCreatorClusterNameClusterId

此外,在作業叢集上,Azure Databricks 會套用兩個默認標籤: RunNameJobId

在 Databricks SQL 所使用的資源上,Azure Databricks 也會套用預設標籤 SqlWarehouseId

警告

請勿將具有索引鍵 Name 的自定義標籤指派給叢集。 每個叢集都有一個標記 Name ,其值是由 Azure Databricks 設定。 如果您變更與索引鍵 Name相關聯的值,Azure Databricks 就無法再追蹤叢集。 因此,叢集在閑置后可能不會終止,而且會繼續產生使用量成本。

您可以在建立叢集時新增自訂標籤。 若要設定叢集標籤:

  1. 在 [叢集組態] 頁面上,按兩下 [ 進階選項] 切換。

  2. 在頁面底部,按兩下 [ 卷標] 索引標籤

    標記索引標籤

  3. 為每個自定義標記新增索引鍵/值組。 您最多可以新增 43 個自定義標記。

叢集的 SSH 存取

基於安全性考慮,在 Azure Databricks 中,SSH 埠預設會關閉。 如果您想要啟用 Spark 叢集的 SSH 存取,請連絡 Azure Databricks 支援。

注意

只有在工作區部署在您自己的 Azure 虛擬網路中時,才能啟用 SSH。

叢集記錄傳遞

當您建立叢集時,您可以指定位置來傳遞 Spark 驅動程式節點、背景工作節點和事件的記錄。 記錄會每隔五分鐘傳遞至您選擇的目的地。 當叢集終止時,Azure Databricks 保證會傳遞產生的所有記錄,直到叢集終止為止。

記錄的目的地取決於叢集標識碼。 如果指定的目的地為 dbfs:/cluster-log-delivery,則的 0630-191345-leap375 叢集記錄會傳遞至 dbfs:/cluster-log-delivery/0630-191345-leap375

若要設定記錄傳遞位置:

  1. 在 [叢集組態] 頁面上,按兩下 [ 進階選項] 切換。

  2. 按兩下 [記錄] 索引標籤。

    叢集記錄傳遞

  3. 選取目的地類型。

  4. 輸入叢集記錄路徑。

注意

這項功能也可在 REST API 中使用。 請參閱叢集 API

Init 指令碼

叢集節點初始化或 init 腳本是在 Spark 驅動程式或背景工作 JVM 啟動時針對每個叢集節點在啟動期間執行的殼層腳本。 您可以使用 init 腳本來安裝 Databricks 執行時間中未包含的套件和連結庫、修改 JVM 系統類別路徑、設定 JVM 所使用的系統屬性和環境變數,或修改 Spark 組態參數,以及其他組態工作。

您可以展開 [進階選項 ] 區段,然後按兩下 [Init 腳本] 索引標籤,將 init 腳本 附加至叢集。

如需詳細指示,請參閱 什麼是 init 腳本?