管理叢集

本文說明如何管理 Azure Databricks 叢集,包括顯示、編輯、啟動、終止、刪除、控制存取,以及監視效能和記錄。

顯示叢集

若要檢視工作區中的叢集,請按一下提要欄位中的 [ compute icon 計算]。

左側有兩個數據行,指出叢集是否已釘選,以及叢集的狀態。 將滑鼠停留在狀態上以取得詳細資訊。

釘選叢集

在叢集終止 30 天后,就會永久刪除。 若要在叢集 終止 超過 30 天之後保留所有用途的叢集組態,系統管理員可以釘選叢集。 可釘選的叢集數量上限為 100 個。

管理員可以按一下釘選圖示,從叢集清單或叢集詳細資料頁面釘選叢集。

您也可以叫 用叢集 API 端點,以程式設計方式釘選叢集。

以 JSON 檔案檢視叢集組態

有時候,將叢集組態視為 JSON 會很有説明。 當您想要使用 叢集 API 建立類似的叢集時,這特別有用。 當您檢視現有的叢集時,請移至 [設定 ] 索引標籤,按一下 索引標籤右上方的 [JSON ],複製 JSON,然後將它貼到您的 API 呼叫中。 JSON 檢視是唯讀的。

編輯叢集

您可以從叢集詳細資料 UI 編輯叢集組態。 您也可以叫 用叢集 API 端點,以程式設計方式編輯叢集。

注意

  • 連結至叢集的筆記本和作業在編輯後仍會維持附加狀態。
  • 在編輯之後,在叢集上安裝的程式庫仍會保持安裝。
  • 如果您編輯執行中叢集的任何屬性(叢集大小和許可權除外),您必須重新開機它。 這可能會中斷目前使用叢集的使用者。
  • 您只能編輯執行或終止的叢集。 不過,您可以在叢集詳細資料頁面上,更新 不在那些狀態的叢集許可權

複製叢集

若要複製現有的叢集,請從叢集的 Kebab menu Kebab 功能表選取 [ 複製 ] (也稱為三點功能表)。

選取複製之後,叢集建立 UI 會開啟預先填入叢集組態。 複製中未包含下列屬性:

  • 叢集許可權
  • 已安裝的程式庫
  • 附加的筆記本

控制叢集的存取

[系統管理員設定] 頁面中 叢集存取控制可讓工作區系統管理員對其他使用者提供更細緻的叢集存取權。 叢集存取控制有兩種類型:

  • 叢集建立許可權:工作區系統管理員可以選擇允許哪些使用者建立叢集。
  • 叢集層級許可權:具有 可管理 叢集許可權的使用者,可以設定其他使用者是否可以附加、重新開機、調整大小及管理該叢集。

若要編輯叢集的許可權,請從該叢集的 Kebab menu Kebab 功能表選取 [ 編輯許可權 ]。

如需叢集存取控制和叢集層級許可權的詳細資訊,請參閱 叢集存取控制

終止叢集

若要儲存叢集資源,您可以終止叢集。 終止的叢集組態會儲存,以便稍後重複使用 它(或在作業的情況下自動 啟動 )。 您可以手動終止叢集,或設定叢集在指定的閒置期間之後自動終止。 當終止的叢集數目超過 150 時,會刪除最舊的叢集。

除非叢集已 釘選 或重新開機,否則叢集會在終止後 30 天自動永久刪除。

終止的叢集會出現在叢集清單中,叢集名稱左邊有灰色圓圈。

注意

當您在 「新增作業叢集 」上 執行 作業 時,叢集會在作業完成時終止且無法重新開機。 另一方面,如果您排程作業在已終止的現有所有用途叢集上 執行,該叢集將會 自動啟動

重要

如果您使用 試用版進階版工作區 ,則會終止所有執行中的叢集:

  • 當您將工作區升級為完整進階版時。
  • 如果未升級工作區,且試用版到期。

手動終止

您可以從叢集清單手動終止叢集(按一下叢集資料列上的方塊)或叢集詳細資料頁面(按一下 [終止 ]。

自動終止

您也可以設定叢集的自動終止。 在叢集建立期間,您可以在幾分鐘內指定閒置期間,讓叢集終止。

如果目前時間與上一個命令在叢集上執行的差別大於指定的閒置期間,Azure Databricks 會自動終止該叢集。

當叢集上的所有命令,包括 Spark 作業、結構化串流和 JDBC 呼叫完成執行時,叢集就會被視為非使用中。

警告

  • 叢集不會報告使用 DStreams 所產生的活動。 這表示自動終止叢集在執行 DStreams 時可能會終止。 關閉執行 DStreams 的叢集自動終止,或考慮使用結構化串流。
  • 自動終止功能只會監視 Spark 作業,而不是使用者定義的本機進程。 因此,如果所有 Spark 作業都已完成,即使本機進程正在執行,叢集仍可能會終止。
  • 閒置叢集會在終止前的非使用期間繼續累積 DBU 和雲端實例費用。

設定自動終止

您可以在建立叢集 UI 中設定自動終止。 確定已核取此方塊,並在 [在閒置 分鐘數後終止] 設定中 輸入分鐘數。

您可以清除 [自動終止] 核取方塊,或指定 的無活動期間 0 ,退出宣告自動終止。

注意

最新的 Spark 版本最好支援自動終止。 較舊的 Spark 版本有已知的限制,可能會導致叢集活動報告不正確。 例如,執行 JDBC、R 或串流命令的叢集可以報告導致叢集終止過早的過時啟用時間。 請升級至最新的 Spark 版本,以受益于錯誤修正和自動終止的改善。

未預期的終止

有時候叢集會意外終止,而不是因為手動終止或設定的自動終止所造成。

如需終止原因和補救步驟的清單,請參閱 知識庫

刪除叢集

刪除叢集會終止叢集並移除其組態。 若要刪除叢集,請從叢集的 Kebab menu 功能表中選取 [ 刪除 ]。

警告

您無法恢復這個動作。

若要刪除已釘選的叢集,必須先由系統管理員取消釘選。

您也可以叫 用叢集 API 端點,以程式設計方式刪除叢集。

重新開機叢集

您可以從叢集清單、叢集詳細資料頁面或筆記本重新開機先前終止的叢集。 您也可以叫 用叢集 API 端點,以程式設計方式啟動叢集。

Azure Databricks 會使用其唯 一的叢集識別碼 來識別叢集。 當您啟動終止的叢集時,Databricks 會使用相同的識別碼重新建立叢集、自動安裝所有程式庫,並重新附加筆記本。

注意

如果您使用 試用版工作區 且試用版已過期,您將無法啟動叢集。

重新開機叢集以使用最新的映射進行更新

當您重新開機叢集時,它會取得計算資源容器和 VM 主機的最新映射。 請務必為長時間執行的叢集排程定期重新開機,例如用於處理串流資料的叢集。

您必須負責定期重新開機所有計算資源,讓映射保持最新映射版本的最新狀態。

重要

如果您為帳戶或工作區啟用 合規性安全性設定檔 ,則長時間執行的叢集會在 25 天后自動重新開機。 Databricks 建議工作區管理員在排程維護期間手動重新開機叢集。 這樣可降低自動重新開機中斷排程工作的風險。

筆記本範例:尋找長時間執行的叢集

如果您是工作區管理員,您可以執行腳本來判斷每個叢集執行的時間長度,並選擇性地在超過指定的天數時重新開機它們。 Azure Databricks 會提供此腳本作為筆記本。

腳本的第一行會定義組態參數:

  • min_age_output:叢集可以執行的天數上限。 預設為 1。
  • perform_restart:如果 True 為 ,腳本會重新開機年齡大於 所 min_age_output 指定天數的叢集。 預設值為 False ,它會識別長時間執行的叢集,但不會重新開機叢集。
  • secret_configuration:將 和 REPLACE_WITH_KEY 取代 REPLACE_WITH_SCOPE 秘密範圍和金鑰名稱 。 如需設定秘密的詳細資訊,請參閱筆記本。

警告

如果您設定 perform_restartTrue ,腳本會自動重新開機合格的叢集,這可能會導致作用中作業失敗並重設開啟的筆記本。 若要降低中斷工作區業務關鍵性工作的風險,請規劃排程的維護期間,並務必通知工作區使用者。

識別並選擇性地重新開機長時間執行的叢集筆記本

取得筆記本

作業和 JDBC/ODBC 查詢的叢集自動啟動

當指派給終止叢集的作業排程執行,或從 JDBC/ODBC 介面連線到終止的叢集時,叢集會自動重新開機。 請參閱 建立作業 JDBC 連線

叢集自動啟動可讓您將叢集設定為自動終止,而不需要手動介入即可重新開機排程工作的叢集。 此外,您可以排程作業在終止的叢集上執行,藉此排程叢集初始化。

自動重新開機叢集之前, 會檢查叢集 作業 存取控制許可權。

注意

如果您的叢集是在 Azure Databricks 平臺 2.70 版或更早版本中建立的,則沒有自動啟動:排定在終止叢集上執行的作業將會失敗。

在 Apache Spark UI 中檢視叢集資訊

您可以選取 叢集詳細資料頁面上的 [Spark UI ] 索引標籤,以檢視 Spark 作業的詳細資訊。

如果您重新啟動已終止的叢集,Spark UI 會顯示所重新啟動叢集的資訊,而不是已終止叢集的歷史資訊。

檢視叢集記錄

Azure Databricks 提供叢集相關活動的三種記錄:

  • 叢集事件記錄檔,其會擷取叢集生命週期事件,例如建立、終止和組態編輯。
  • Apache Spark 驅動程式和背景工作記錄檔,可供您用來偵錯。
  • 叢集 init-script 記錄,這對偵錯 init 腳本十分有用。

本節討論叢集事件記錄檔和驅動程式和背景工作記錄。 如需 init 腳本記錄的詳細資訊,請參閱 Init 腳本記錄

叢集事件記錄

叢集事件記錄檔會顯示由使用者動作或 Azure Databricks 自動手動觸發的重要叢集生命週期事件。 這類事件會影響整個叢集的作業,以及叢集中執行的作業。

如需支援的事件種類,請參閱 叢集 API 資料結構。

事件會儲存 60 天,這與 Azure Databricks 中的其他資料保留時間相當。

檢視叢集事件記錄

若要檢視叢集的事件記錄檔,請選取 叢集詳細資料頁面上的 [事件記錄 ] 索引標籤。

如需事件的詳細資訊,請按一下記錄中的資料列,然後按一下 JSON 索引 標籤以取得詳細資料。

叢集驅動程式和背景工作角色記錄

來自筆記本、作業和程式庫的直接列印和記錄陳述式會移至 Spark 驅動程式記錄。 您可以從叢集詳細資料頁面上的 [驅動程式記錄 ] 索引標籤存取這些記錄檔。 按一下記錄檔的名稱以下載它。

這些記錄有三個輸出:

  • 標準輸出
  • 標準錯誤
  • Log4j 記錄

若要檢視 Spark 背景工作記錄,請使用 [Spark UI ] 索引標籤。您也可以 設定叢集的記錄傳遞位置 。 背景工作和叢集記錄都會傳遞到您指定的位置。

監視效能

為了協助您監視 Azure Databricks 叢集的效能,Azure Databricks 可讓您從叢集詳細資料頁面存取計量。 針對 Databricks Runtime 12.2 和以下版本,Azure Databricks 可讓您存取 Ganglia 計量。 針對 Databricks Runtime 13.0 和更新版本,叢集計量是由 Azure Databricks 提供。

此外,您可以設定 Azure Databricks 叢集,以將計量傳送至 Azure 監視器 (Azure 的監視平台) 中的 Log Analytics 工作區。

您也可以在叢集節點上安裝 Datadog 代理程式,以將 Datadog 計量傳送至 Datadog 帳戶。

叢集計量

叢集計量是 Databricks Runtime 13.0 和更新版本的預設監視工具。 若要存取叢集計量 UI,請流覽至 叢集詳細資料頁面上的 [計量 ] 索引標籤。

您可以使用日期選擇器篩選來選取時間範圍,以檢視歷程記錄計量。 計量會每分鐘收集一次。 您也可以按一下 [ 重新 整理] 按鈕來取得最新的計量。 如需詳細資訊,請參閱檢視即時和歷程叢集計量

Ganglia 計量

注意

Ganglia 計量僅適用于 Databricks Runtime 12.2 和以下版本。

若要存取 Ganglia UI,請流覽至 叢集詳細資料頁面上的 [計量 ] 索引標籤。 所有 Databricks 執行時間都可在 Ganglia UI 中使用 CPU 計量。 GPU 計量適用于已啟用 GPU 的叢集。

若要檢視即時計量,請按一下 [Ganglia UI ] 連結。

若要檢視歷程記錄計量,請按一下快照集檔案。 快照集內含所選時間前一小時的彙總計量。

注意

Docker 容器不支援 Ganglia。 如果您使用 Docker 容器 搭配叢集,則無法使用 Ganglia 計量。

設定 Ganglia 計量集合

根據預設,Azure Databricks 每 15 分鐘會收集一次 Ganglia 計量。 若要設定收集期間,請使用 init 腳本 或在 spark_env_vars 建立新叢集 API 欄位中設定 DATABRICKS_GANGLIA_SNAPSHOT_PERIOD_MINUTES 環境變數。

Azure 監視器

您可以設定 Azure Databricks 叢集,將計量傳送至 Azure 監視器中的 Log Analytics 工作區,這是 Azure 的監視平臺。 如需完整指示,請參閱監視 Azure Databricks

注意

如果您已在自己的虛擬網路中部署 Azure Databricks 工作區,而且您已設定網路安全性群組 (NSG) 來拒絕 Azure Databricks 不需要的所有輸出流量,則必須為 「AzureMonitor」 服務標籤設定額外的輸出規則。

筆記本範例:Datadog 計量

Datadog metrics

您可以在叢集節點上安裝 Datadog 代理程式,以將 Datadog 計量傳送至 Datadog 帳戶。 下列筆記本示範如何使用叢集範圍的 init 腳本 ,在叢集 上安裝 Datadog 代理程式。

若要在所有叢集上安裝 Datadog 代理程式,請使用叢集原則管理叢集範圍的 init 腳本。

安裝 Datadog 代理程式 init 腳本筆記本

取得筆記本

解除委任現成實例

由於 現成實例 可以降低成本,因此使用現成實例而非隨選實例建立叢集是執行作業的常見方式。 不過,雲端提供者排程機制可以先占現成實例。 先占現成實例可能會導致執行中作業的問題,包括:

  • 隨機擷取失敗
  • 亂數據遺失
  • RDD 資料遺失
  • 作業失敗

您可以啟用解除委任以協助解決這些問題。 解除委任會利用雲端提供者通常會在現成實例解除委任之前傳送的通知。 當包含執行程式的現成實例收到先占通知時,解除委任程式會嘗試將隨機和 RDD 資料移轉至狀況良好的執行程式。 根據雲端提供者而定,最後先占前的持續時間通常是 30 秒到 2 分鐘。

Databricks 建議啟用解除委任時啟用資料移轉。 一般而言,當移轉更多資料時,錯誤的可能性會降低,包括隨機擷取失敗、亂數據遺失,以及 RDD 資料遺失。 資料移轉也會導致重新計算減少並節省成本。

注意

解除委任是最佳工作,並不保證所有資料都可以在最終先占之前進行移轉。 當執行中工作從執行程式擷取亂數據時,解除委任無法保證發生隨機擷取失敗。

啟用解除委任後,不會將現成實例先占所造成的工作失敗新增至失敗嘗試的總數。 先占所造成的工作失敗不會算作失敗的嘗試,因為失敗的原因是工作外部,而且不會造成作業失敗。

啟用解除委任

若要在叢集上啟用解除委任,請在叢集組態 UI 的 [進階選項 ] 下方 的 [Spark ] 索引標籤中輸入下列屬性。 如需這些屬性的相關資訊,請參閱 Spark 組態

  • 若要啟用應用程式的解除委任,請在 [Spark 組態 ] 欄位中輸入此屬性

    spark.decommission.enabled true
    
  • 若要在解除委任期間啟用隨機資料移轉,請在 [Spark 設定 ] 欄位中輸入此屬性:

    spark.storage.decommission.enabled true
    spark.storage.decommission.shuffleBlocks.enabled true
    
  • 若要在解除委任期間啟用 RDD 快取資料移轉,請在 [Spark 設定 ] 欄位中輸入此屬性:

    spark.storage.decommission.enabled true
    spark.storage.decommission.rddBlocks.enabled true
    

    注意

    當 RDD 儲存體Level 複寫設為 1 以上時,Databricks 不建議啟用 RDD 資料移轉,因為複本可確保 RDD 不會遺失資料。

  • 若要為背景工作角色啟用解除委任,請在 [環境變數 ] 欄位中輸入此屬性

    SPARK_WORKER_OPTS="-Dspark.decommission.enabled=true"
    

在 UI 中檢視解除委任狀態和遺失原因

若要從 UI 存取背景工作角色的解除委任狀態,請流覽至 [Spark 叢集 UI - 主要 ] 索引標籤。

當解除委任完成時,您可以在叢集詳細資料頁面的 [Spark UI > 執行程式] 索引標籤中 檢視執行程式的 遺失原因。