分享方式:


管理計算

本文說明如何管理 Azure Databricks 計算,包括顯示、編輯、啟動、終止、刪除、控制存取,以及監視效能和記錄。 您也能使用叢集 API,以程式設計方式管理計算。

檢視計算

若要檢視計算,請按一下工作區側邊欄中的計算圖示 [計算]

左側有兩個資料行,指出是否已釘選計算,以及計算狀態。 若要取得詳細資訊,請將滑鼠停留於狀態上。

將計算組態作為 JSON 檔案檢視

有時候,將計算組態作為 JSON 檢視會很有幫助。 當您想要使用叢集 API建立類似的計算時,這項方法格外有用。 當您檢視現有的計算時,請移至 [組態] 索引標籤、按一下索引標籤右上方的 [JSON]、複製 JSON,然後貼到您的 API 呼叫中。 JSON 檢視是唯讀的。

釘選計算

計算會在終止三十天後永久刪除。 若要讓多用途計算組態在計算終止超過 30 天後仍可保留下來,系統管理員可以釘選叢集。 您最多可以釘選 100 個計算資源。

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

編輯計算

您可以透過計算詳細資料 UI 來編輯計算的組態。

注意

  • 附加至計算的筆記本和工作,仍會在編輯後處於附加狀態。
  • 在計算上安裝的程式庫,仍會在編輯後保持安裝。
  • 如果您編輯執行中計算的任何屬性 (計算大小和權限除外),您必須重新啟動計算。 這可能會中斷目前使用計算之使用者的作業。
  • 您只能編輯正在執行或已終止的計算。 不過,您可以在計算詳細資料頁面上,更新不是處於這些狀態之計算的權限

複製計算

若要複製現有的計算,請從計算的Kebab 功能表 Kebab 功能表選取 [複製]

選取 [複製] 之後,計算建立 UI 會隨即開啟,並預先填入計算組態。 複製中不會包含下列屬性:

  • 計算權限
  • 已附加筆記本

如果您不想在複製的計算中包含先前安裝的程式庫,請按一下 [建立計算] 按鈕旁的下拉式功能表,然後選取 [不使用程式庫建立]

計算權限

計算共有四個權限層級:NO PERMISSIONS、CAN ATTACH TO、CAN RESTART,以及 CAN MANAGE。 如需詳細資訊,請參閱計算 ACL

注意

系統不會從叢集的 Spark 驅動程式記錄 stdoutstderr 串流中修訂祕密。 為了保護敏感性資料,Spark 驅動程式記錄預設只能由對工作具有 [可管理] 權限、單一使用者存取模式和共用存取模式叢集的使用者檢視。 若要允許具有 [可連結至] 或 [可重新啟動] 權限的使用者檢視這些叢集上的記錄,請在叢集設定中設定下列 Spark 組態屬性:spark.databricks.acl.needAdminPermissionToViewLogs false

在「無隔離共用存取模式叢集」上,Spark 驅動程式記錄可由具有 CAN ATTACH TO 或 CAN MANAGE 權限的使用者檢視。 若要限制只有具有 [可管理] 權限的使用者才能讀取記錄,請將 spark.databricks.acl.needAdminPermissionToViewLogs 設定為 true

請參閱 Spark 組態,以了解如何將 Spark 屬性新增至叢集組態。

設定計算權限

本節說明如何使用工作區 UI 管理權限。 您也可以使用權限 APIDatabricks Terraform 供應商

您必須具有計算的 CAN MANAGE 權限,才能設定計算權限。

  1. 在側邊欄中按一下 [計算]
  2. 在計算的資料列上,按一下右側的 Kebab 功能表Kebab 功能表,然後選取 [編輯權限]
  3. 在 [權限設定] 中,按一下 [選取使用者、群組或服務主體...] 下拉式功能表,然後選取使用者、群組或服務主體。
  4. 從權限下拉式功能表中選取權限。
  5. 按一下 [新增],然後按一下 [儲存]

終止計算

若要儲存計算資源,您可以終止計算。 系統會儲存已終止的計算組態,以便在稍後重複使用 (如果是作業的話,則是自動啟動)。 您可以手動終止計算,或將計算設定為在指定的閒置期間之後自動終止。 當終止的計算數目超過 150 時,系統會刪除最舊的計算。

除非計算已釘選或重新啟動,否則系統會在終止後 30 天自動永久刪除計算。

終止的計算會出現在計算清單中,而且計算名稱左側會出現灰色圓圈。

注意

當您在新的作業計算上執行作業時 (這通常是建議的做法),計算會終止,且無法在作業完成時重新啟動。 另一方面,如果您對作業進行排程,在已終止的現有多用途計算上執行,該計算將會自動啟動

重要

如果您使用試用 Premium 工作區,則會終止所有執行中的計算資源:

  • 當您將工作區升級至完整 Premium 時。
  • 如果未升級工作區,且試用版將會到期。

手動終止

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

自動終止

您也可以為計算設定自動終止。 在計算建立期間,您可以指定您想要計算在閒置一段期間 (以分鐘計) 後終止。

如果目前時間與上一個命令在計算上執行之時間的差異,超過指定的閒置期間,Azure Databricks 會自動終止該計算。

當計算上的所有命令 (包括 Spark 作業、結構化串流和 JDBC 呼叫) 執行完成,計算會被視為閒置。

警告

  • 計算不會報告使用 DStream 所產生的活動。 這表示自動終止計算功能可能會在執行 DStreams 時終止。 請關閉執行 DStreams 之計算的自動終止功能,或考慮使用結構化串流。
  • 系統會在終止前的閒置期間,繼續累積閒置計算的 DBU 和雲端執行個體費用。

設定自動終止

您可以在新的計算 UI 中設定自動終止。 確定已核取 [自動終止] 方塊,並在 [終止前閒置分鐘數] 設定中輸入分鐘數。

您可以藉由取消選取 [自動終止] 核取方塊,或將閒置期間指定為 0,從而選擇停用自動終止功能。

注意

最新的 Spark 版本能夠為自動終止功能提供最好的支援。 較舊的 Spark 版本存在已知的限制,可能會導致計算活動報告不準確。 例如,執行 JDBC、R 或串流命令的計算,可能會報告過時的啟用時間,從而導致計算提前終止。 請升級至最新的 Spark 版本,以受益於針對自動終止功能進行的錯誤修復和改善。

意外終止

有時候,計算會意外終止,而不是因為手動終止或設定的自動終止而終止。

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

刪除計算

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

警告

您無法復原這個動作。

若要刪除釘選的計算,就必須先由系統管理員先行取消釘選。

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

重新啟動計算

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

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

注意

如果您使用的是試用工作區,而且試用已過期,您將無法啟動計算。

重新啟動計算以使用最新的映像進行更新

當您重新啟動計算時,其會取得計算資源容器和 VM 主機的最新映像。 請務必針對長時間執行的計算排程定期重新啟動,例如用於處理串流資料的計算。

您必須負責定期重新啟動所有計算資源,最新映像版本來讓映像保持在最新狀態。

重要

如果您啟用帳戶或工作區的合規性安全性設定檔,系統會在排程維護期間視需要自動重新啟動長時間執行的計算。 這可降低自動重新啟動中斷排程工作的風險。 您也可以在維護期間強制重新啟動計算。 請參閱自動叢集更新 (機器翻譯)。

筆記本範例:尋找長時間執行的計算

如果您是工作區管理員,則可執行指令碼來判斷每個計算已執行的時間長度,並選擇性地在超過指定的天數時重新啟動這些計算。 Azure Databricks 會將此指令碼作為筆記本提供。

指令碼的第一行內容會定義組態參數:

  • min_age_output:計算可以執行的天數上限。 預設 為 1。
  • perform_restart:如果為 True,指令碼會重新啟動任何存留期大於 min_age_output 所指定天數的計算。 預設為 False,可識別長時間執行的計算,但不會加以重新啟動。
  • secret_configuration:以秘密範圍和金鑰名稱取代 REPLACE_WITH_SCOPEREPLACE_WITH_KEY。 如需設定秘密的詳細資訊,請參閱筆記本。

警告

如果您將 perform_restart 設定為 True,指令碼會自動重新啟動符合資格的計算,這可能會導致作用中作業失敗並重設開啟的筆記本。 若要降低中斷工作區業務關鍵性工作的風險,請規劃排程維護期間,並務必通知工作區使用者。

識別並選擇性地重新啟動長時間執行的計算

取得筆記本

作業和 JDBC/ODBC 查詢的計算自動啟動

在指派給終止計算的作業進行排程執行,或您從 JDBC/ODBC 介面連線至終止的計算時,計算會自動重新啟動。 請參閱設定作業的計算JDBC 連線

計算自動啟動功能可讓您將計算設定為自動終止,不需要手動介入即可重新啟動排程作業的計算。 此外,您可以排程作業以在終止的計算上執行,藉此排程計算初始化。

在自動重新啟動計算之前,系統會檢查計算作業的存取控制權限。

注意

如果您的計算是在 Azure Databricks 平台 2.70 版或更早版本中建立的,則無法進行自動啟動:在已終止計算上排程執行的作業將會失敗。

在 Apache Spark UI 中檢視計算資訊

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

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

請參閱使用 Spark UI 診斷成本和效能問題 (機器翻譯),以取得使用 Spark UI 診斷成本和效能問題的逐步解說。

檢視計算記錄

Azure Databricks 提供三種計算相關活動的記錄:

  • 計算事件記錄會擷取計算生命週期事件,例如建立、終止和組態編輯。
  • 可用來進行偵錯的 Apache Spark 驅動程式和背景工作角色記錄。
  • 計算 init-script 記錄對於偵錯 init 指令碼十分有用。

本節討論計算事件記錄檔和驅動程式與背景工作角色記錄。 如需 init-script 記錄的詳細資料,請參閱 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.3 LTS 和更新的版本,Azure Databricks 會提供計算計量。

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

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

計算計量

計算計量是適用於非無伺服器多用途和作業計算的預設監視工具。 若要存取計算計量 UI,請瀏覽至計算詳細資料頁面上的 [計量] 索引標籤。

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

Ganglia 計量

注意

Ganglia 計量僅適用於 Databricks Runtime 12.2 和更低版本。

若要存取 Ganglia UI,請瀏覽至計算詳細資料頁面上的 [計量] 索引標籤,並啟用 [舊版計量] 設定。 GPU 計量適用於已啟用 GPU 的計算。

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

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

注意

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

設定 Ganglia 計量集合

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

Azure 監視器

此外,您可以對 Azure Databricks 計算進行設定,以將計量傳送至 Azure 監視器 (Azure 的監視平台) 中的 Log Analytics 工作區。 如需完整指示,請參閱監視 Azure Databricks

注意

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

筆記本範例:Datadog 計量

Datadog 計量

您可以在計算節點上安裝 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 StorageLevel 複寫設定為超過 1 時,因為複本可確保 RDD 不會遺失資料,所以 Databricks 不建議啟用 RDD 資料移轉。

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

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

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

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

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