管理傳統計算

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

檢視運算

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

左側有兩個欄,顯示計算資源是否已釘選以及計算資源的狀態。 將滑鼠停留在狀態上以取得詳細資訊。

將運算設定作為 JSON 檔案檢視

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

釘選計算

計算會在終止三十天後永久刪除。 系統管理員可以釘選運算,以便在運算終止超過 30 天後仍保留多用途運算組態。 您最多可以固定 100 個計算資源。

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

編輯計算

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

注意

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

複製計算機

若要複製現有的計算,請從計算的中選取Kebab menu icon.複製。

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

  • 運算權限
  • 已附上的筆記本

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

計算權限

計算共有四個權限層級:無權限(NO PERMISSIONS)、可附加(CAN ATTACH TO)、可重啟(CAN RESTART),以及可管理(CAN MANAGE)。 如需詳細資訊,請參閱計算 ACL

注意

機密不會在傳統計算資源的 Spark 驅動程式 stdoutstderr 串流中被遮蔽。 為保護敏感資料,預設情況下,Spark 驅動程式日誌僅供對工作運算,以及採用專用或標準存取模式的通用運算具有 CAN MANAGE 權限的使用者檢視。 同樣的預設也適用於從池中建立的運算資源。 要讓擁有 CAN ATTACH TO 或 CAN RESTART 權限的使用者查看日誌,請在計算的 Spark 設定欄位中設定以下屬性: spark.databricks.acl.needAdminPermissionToViewLogs false

在傳統運算中,採用無隔離共享存取模式,使用者可透過「可連接」、「可重啟」或「可管理」權限查看 Spark 驅動程式日誌。 若要限制只有具有 CAN MANAGE 權限的使用者可以讀取記錄,請將 spark.databricks.acl.needAdminPermissionToViewLogs 設定為 true

因為 spark.databricks.acl.needAdminPermissionToViewLogs 是計算層級的 Spark 屬性,你必須在每個需要它的運算上設定它。 對於透過 jobs/runs/submit 提交的暫時性作業執行(例如由外部協調器觸發的作業),請在提交時於 new_cluster.spark_conf 中設定該屬性,並一併加入任何 access_control_list 項目。

設定計算權限

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

您必須具有 CAN MANAGE 權限來管理計算資源,才能設定計算權限。

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

終止計算

若要儲存計算資源,您可以終止計算。 終止的計算組態會被儲存,以便稍後再次使用(或在作業的情況下自動啟動)。 您可以手動終止計算,或將計算設定為在指定的閒置期間之後自動終止。

除非計算資源已釘選或重新啟動,否則系統會在終止後 30 天內自動並永久刪除該計算資源。 由於此刪除是由系統執行,而非使用者或 API 操作,因此不會出現在稽核日誌中。

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

注意

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

重要

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

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

手動終止

您可以從運算實例清單手動終止運算實例(點擊運算實例列上的正方形)或運算實例詳細資料頁面(點擊終止)。

自動終止

您也可以設定計算的自動終止。 在建立運算資源期間,您可以指定在閒置達指定分鐘數後希望運算資源終止。

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

當計算上的所有命令,包括 Spark 作業、結構化串流、JDBC 呼叫和 Azure Databricks Web 終端機活動完成執行時,計算會被視為非使用中。

警告

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

設定自動終止

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

不活動時間必須介於10至10,000分鐘(約7天)。 在建立叢集 API 中的欄位也適用autotermination_minutes相同的限制。

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

注意

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

意外終止

有時候,計算作業會意外終止,並非因為手動終止或設定的自動終止。

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

刪除計算

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

警告

您無法復原這個動作。

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

您也可以叫用叢集 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 版或更早版本中建立的,則無法進行自動啟動:在已終止計算上排程執行的作業將會失敗。

在 Spark UI 中檢視計算資訊

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

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

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

檢視計算記錄

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

  • 計算事件記錄會擷取計算生命週期事件,例如建立、終止和組態編輯。
  • 可用於偵錯的 Apache Spark 主程式和工作節點日誌。
  • 計算 init-script 記錄對於偵錯 init 指令碼十分有用。

本節討論計算事件記錄檔、驅動程式記錄和工作者記錄。 如需初始化腳本記錄的詳細資料,請參閱 初始化腳本記錄

計算事件日誌

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

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

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

檢視計算的事件記錄檔

若要檢視計算的事件記錄檔,請選取計算詳細數據頁面上的 [ 事件記錄 ] 索引卷標。

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

下載活動日誌

要匯出事件,請在活動日誌表右上角點選下載,然後選擇下載 CSV下載 Excel。 匯出時包含與目前篩選條件相符的事件,排序順序最多可達 10,000 列。 當任何事件與當前篩選器相符時,該按鈕會被停用。

運算驅動程式和工作節點記錄

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

這些記錄有三個輸出:

  • 標準輸出
  • 標準錯誤
  • Log4j 日誌

若要檢視 Spark 工作執行緒記錄,請使用 [Spark UI] 索引標籤。您也可以為計算資源設定記錄檔傳送位置。 工作日誌和計算記錄都會傳送到您指定的位置。

計算指標

計算指標可用於經典的多用途運算與工作運算。 要進入計算指標介面,請點擊計算清單中個別運算資源的名稱,然後點選 指標 標籤。

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

Azure 監視器

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

注意

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

筆記本範例:Datadog 指標

Datadog 指標

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

若要在所有運算資源上安裝 Datadog 代理程式,請使用運算策略來管理計算範疇的 init 指令碼。

安裝 Datadog 代理程式初始化指令碼環境筆記本

取得筆記本

停止使用搶先執行個體

因為現成執行個體可以降低成本,所以使用現成執行個體而非隨選執行個體建立計算,是執行作業的常見方式。 不過,雲端提供者排程機制可以先佔有現成執行個體。 搶佔現成執行個體可能會導致正在執行的作業出現問題,包括:

  • 隨機擷取失敗
  • 洗牌資料遺失
  • RDD 資料遺失
  • 作業失敗

您可以啟用停用功能,以協助解決這些問題。 解除委任會利用通知功能,雲端提供者通常在現成執行個體解除委任之前傳送通知。 當包含執行緒的臨時性執行個體收到先佔通知時,停用流程會嘗試將 Shuffle 和 RDD 資料遷移至狀況良好的執行緒。 根據雲端提供者的不同而定,最終先佔前的持續時間通常是 30 秒到 2 分鐘不等。

Databricks 建議您在啟用停用功能時,啟用資料移轉。 一般而言,在移轉更多資料時,錯誤的可能性會降低,這包括隨機擷取失敗、隨機資料遺失,以及 RDD 資料遺失。 資料移轉也會導致重新計算的情形減少,並節省成本。

注意

停用遵循盡最大努力,但不保證所有資料可以在最終的預先處理前成功移轉。 在正在執行的工作從執行程式取用 shuffle 資料時,停用無法保證不會發生 shuffle 擷取失敗。

啟用解除委任後,系統不會將現成執行個體先佔所造成的工作失敗新增至失敗嘗試的總數。 因為先佔所造成的工作失敗是由工作外部因素造成,而且不會造成作業失敗,所以不會算作失敗嘗試。

啟用停用功能

若要在計算資源上啟用停用功能,請在計算設定介面 [進階選項] 下的 [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 以上時,Databricks 不建議啟用 RDD 數據遷移,因為複本可確保 RDD 不會遺失數據。

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

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

在 UI 中查看停用狀態和失敗原因

若要從 UI 存取工作的解除狀態,請導航至 [Spark compute UI - Master ] 索引標籤。

當停用完成時,您可以在計算詳細資料頁面的 > 索引標籤中查看執行程式的中止原因。