Share via


使用儀表板將 Azure Databricks 計量視覺化

注意

本文依賴裝載於 GitHub 上的 開放原始碼 連結庫:https://github.com/mspnp/spark-monitoring

原始連結庫支援 Azure Databricks Runtimes 10.x(Spark 3.2.x) 和更早版本。

Databricks 已提供更新版本,以支援分支上的 l4jv2 Azure Databricks Runtimes 11.0 (Spark 3.3.x) 和更新版本: https://github.com/mspnp/spark-monitoring/tree/l4jv2

請注意,由於 Databricks Runtimes 中使用的不同記錄系統,11.0 版本無法回溯相容。 請務必針對 Databricks Runtime 使用正確的組建。 連結庫和 GitHub 存放庫處於維護模式。 沒有進一步發行的計劃,而問題支援將僅盡最大努力。 如需連結庫或 Azure Databricks 環境監視和記錄藍圖的任何其他問題,請連絡 azure-spark-monitoring-help@databricks.com

本文說明如何設定 Grafana 儀錶板,以監視 Azure Databricks 作業是否有效能問題。

Azure Databricks 是快速、強大且共同作業 的 Apache Spark 型分析服務,可讓您輕鬆地快速開發和部署巨量數據分析和人工智慧 (AI) 解決方案。 監視是在生產環境中操作 Azure Databricks 工作負載的重要元件。 第一個步驟是將計量收集到工作區進行分析。 在 Azure 中,管理記錄數據的最佳解決方案是 Azure 監視器。 Azure Databricks 原生不支援將記錄數據傳送至 Azure 監視器,但 GitHub 提供此功能 的連結庫。

此連結庫可讓您記錄 Azure Databricks 服務計量,以及 Apache Spark 結構串流查詢事件計量。 成功將此連結庫部署至 Azure Databricks 叢集之後,您可以進一步部署一組 Grafana 儀錶板,以作為生產環境的一部分進行部署。

Screenshot of the dashboard.

必要條件

設定 Azure Databricks 叢集以使用監視連結庫,如 GitHub 自述檔中所述

部署 Azure Log Analytics 工作區

若要部署 Azure Log Analytics 工作區,請遵循下列步驟:

  1. 瀏覽至 /perftools/deployment/loganalytics 目錄。

  2. 部署 logAnalyticsDeploy.json Azure Resource Manager 範本。 如需部署 Resource Manager 範本的詳細資訊,請參閱 使用 Resource Manager 範本和 Azure CLI 部署資源。 樣本具有下列參數:

    • 位置:Log Analytics 工作區和儀錶板部署所在的區域。
    • serviceTier:工作區定價層。 如需有效值的清單,請參閱 這裡
    • dataRetention (選擇性):記錄數據保留在Log Analytics工作區中的天數。 預設值是 30 天。 如果定價層為 Free,則數據保留期必須為七天。
    • workspaceName (選擇性):工作區的名稱。 如果未指定,範本會產生名稱。
    az deployment group create --resource-group <resource-group-name> --template-file logAnalyticsDeploy.json --parameters location='East US' serviceTier='Standalone'
    

此範本會建立工作區,也會建立儀錶板所使用的一組預先定義查詢。

在虛擬機中部署 Grafana

Grafana 是一個 開放原始碼 專案,您可以使用適用於 Azure 監視器的 Grafana 外掛程式,將儲存在 Azure Log Analytics 工作區中的時間序列計量可視化。 Grafana 會在虛擬機上執行,而且需要記憶體帳戶、虛擬網路和其他資源。 若要使用 bitnami 認證的 Grafana 映像和相關聯的資源來部署虛擬機,請遵循下列步驟:

  1. 使用 Azure CLI 接受 Grafana 的 Azure Marketplace 映像條款。

    az vm image terms accept --publisher bitnami --offer grafana --plan default
    
  2. 流覽至 /spark-monitoring/perftools/deployment/grafana GitHub 存放庫本機複本中的目錄。

  3. 部署 grafanaDeploy.json Resource Manager 範本,如下所示:

    export DATA_SOURCE="https://raw.githubusercontent.com/mspnp/spark-monitoring/master/perftools/deployment/grafana/AzureDataSource.sh"
    az deployment group create \
        --resource-group <resource-group-name> \
        --template-file grafanaDeploy.json \
        --parameters adminPass='<vm password>' dataSource=$DATA_SOURCE
    

部署完成後,Grafana 的 bitnami 映像會安裝在虛擬機上。

更新 Grafana 密碼

在安裝過程中,Grafana 安裝腳本會輸出系統管理員使用者的暫時密碼。 您需要此暫時密碼才能登入。 若要取得暫時密碼,請遵循下列步驟:

  1. 登入 Azure 入口網站。
  2. 選取資源部署所在的資源群組。
  3. 選取已安裝 Grafana 的 VM。 如果您在部署範本中使用預設參數名稱,VM 名稱前面會加上 sparkmonitoring-vm-grafana
  4. 在 [ 支援 + 疑難解答] 區段中,按兩下 [開機診斷 ] 以開啟開機診斷頁面。
  5. 按兩下 開機診斷頁面上的 [序列記錄 ]。
  6. 搜尋下列字串:「將 Bitnami 應用程式密碼設定為」。
  7. 將密碼複製到安全的位置。

接下來,依照下列步驟變更 Grafana 系統管理員密碼:

  1. 在 Azure 入口網站 中,選取 VM,然後按兩下 [概觀]。
  2. 複製公用IP位址。
  3. 開啟網頁瀏覽器並流覽至下列URL: http://<IP address>:3000
  4. 在 Grafana 登入畫面上,輸入 系統管理員 的用戶名稱,並使用先前步驟中的 Grafana 密碼。
  5. 登入之後,請選取 [ 設定 ] (齒輪圖示)。
  6. 選取 [伺服器 管理員]。
  7. 在 [使用者] 索引標籤上,選取系統管理員登入。
  8. 更新密碼。

建立 Azure 監視器數據源

  1. 建立可讓 Grafana 管理 Log Analytics 工作區存取權的服務主體。 如需詳細資訊,請參閱 使用 Azure CLI 建立 Azure 服務主體

    az ad sp create-for-rbac --name http://<service principal name> \
                    --role "Log Analytics Reader" \
                    --scopes /subscriptions/mySubscriptionID
    
  2. 請注意此指令輸出中 appId、密碼和租使用者的值:

    {
        "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "displayName": "azure-cli-2019-03-27-00-33-39",
        "name": "http://<service principal name>",
        "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  3. 如先前所述登入 Grafana。 選取 [組態] (齒輪圖示),然後選取 [數據源]。

  4. 在 [ 數據源] 索引標籤中 ,按兩下 [ 新增數據源]。

  5. 選取 [Azure 監視器 ] 作為數據源類型。

  6. [設定] 區段中,於 [名稱] 文本框中輸入數據源的名稱。

  7. 在 [ Azure 監視器 API 詳細數據 ] 區段中,輸入下列資訊:

    • 訂用帳戶標識碼:您的 Azure 訂用帳戶標識碼。
    • 租用戶標識碼:先前的租用戶標識碼。
    • 用戶端識別碼:先前的 「appId」 值。
    • 客戶端密碼:先前的 「password」 值。
  8. 在 [ Azure Log Analytics API 詳細數據 ] 區段中,核取 [ 與 Azure 監視器 API 相同的詳細數據] 複選框。

  9. 按兩下 [ 儲存及測試]。 如果 Log Analytics 數據源已正確設定,則會顯示成功訊息。

建立儀錶板

依照下列步驟在 Grafana 中建立儀錶板:

  1. 流覽至 /perftools/dashboards/grafana GitHub 存放庫本機複本中的目錄。

  2. 執行下列指令碼:

    export WORKSPACE=<your Azure Log Analytics workspace ID>
    export LOGTYPE=SparkListenerEvent_CL
    
    sh DashGen.sh
    

    腳本的輸出是名為 SparkMonitoringDash.json 的檔案。

  3. 返回 Grafana 儀錶板,然後選取 [建立 ] (加號圖示)。

  4. 選取匯入

  5. 按兩下 [ 上傳 .json 檔案]。

  6. 選取步驟 2 中建立的 SparkMonitoringDash.json 檔案。

  7. 在 [選項] 區段的 [ALA] 底下,選取稍早建立的 Azure 監視器數據源。

  8. 按一下 [匯入]

儀錶板中的視覺效果

Azure Log Analytics 和 Grafana 儀錶板都包含一組時間序列視覺效果。 每個圖表都是與 Apache Spark 作業相關的計量數據時間序列圖、作業的階段,以及組成每個階段的工作。

視覺效果如下:

作業延遲

此視覺效果會顯示作業的執行延遲,這是作業整體效能的粗略檢視。 顯示從開始到完成的作業執行持續時間。 請注意,作業開始時間與作業提交時間不同。 延遲會以百分位數表示(10%、30%、50%、90%)的作業執行,並以叢集標識符和應用程式標識碼編製索引。

階段延遲

視覺效果顯示每個叢集、每個應用程式及每個個別階段的每個階段的延遲。 此視覺效果很適合用來識別執行緩慢的特定階段。

工作延遲

此視覺效果會顯示工作執行延遲。 延遲會以每個叢集、階段名稱和應用程式的工作執行百分位數表示。

每一主機的總和工作執行

此視覺效果顯示每個在叢集上執行的主機的工作執行延遲總和。 檢視每個主機的工作執行延遲,可識別整體工作延遲遠高於其他主機的主機。 這可能表示工作沒有效率或不平均地分散到主機。

工作計量

此視覺效果會顯示指定工作執行的一組執行計量。 這些計量包括數據隨機大小和持續時間、串行化和還原串行化作業的持續時間,以及其他計量。 如需完整的計量集合,請檢視面板的Log Analytics查詢。 此視覺效果有助於了解組成工作的作業,以及識別每個作業的資源耗用量。 圖表中的尖峰代表應調查的成本高昂作業。

叢集輸送量

此視覺效果是叢集和應用程式編製索引的工作專案高階檢視,可代表每個叢集和應用程式完成的工作數量。 它會顯示每個叢集、應用程式及階段的作業、工作和階段數目,遞增一分鐘。

串流輸送量/延遲

此視覺效果與與結構化串流查詢相關聯的計量相關。 此圖表顯示每秒輸入數據列的數目,以及每秒處理的數據列數目。 每個應用程式也會表示串流計量。 當處理結構化串流查詢時產生 OnQueryProgress 事件時,會傳送這些計量,而視覺效果代表串流延遲的時間量,以毫秒為單位執行查詢批次。

每個執行程序的資源耗用量

接下來是儀錶板的一組視覺效果,顯示特定類型的資源,以及每個叢集上每個執行程式的取用方式。 這些視覺效果可協助識別每個執行程序的資源耗用量極端值。 例如,如果特定執行程式的工作配置扭曲,資源耗用量將會相對於叢集上執行的其他執行程式提高。 這可以透過執行程序的資源耗用量尖峰來識別。

執行程式計算時間計量

接下來是儀錶板的一組視覺效果,其中顯示執行程式串行化時間、還原串行化時間、CPU 時間和 Java 虛擬機時間與整體執行程式計算時間的比例。 這會以可視化方式示範這四個計量中每個計量對整體執行程序處理造成多少貢獻。

隨機顯示計量

最後一組視覺效果會顯示與所有執行程式之結構化串流查詢相關聯的數據隨機顯示計量。 其中包括讀取的隨機位元組、寫入的隨機位元組、隨機記憶體,以及文件系統使用所在查詢中的磁碟使用量。

下一步