Share via


管理 HDInsight 叢集的記錄

HDInsight 叢集會產生各種記錄檔。 例如,Apache Hadoop 和相關服務,例如 Apache Spark,會產生詳細的作業執行記錄。 記錄檔管理是維護狀況良好 HDInsight 叢集的一部分。 記錄封存也可能有法規需求。 由於記錄檔的數目和大小,優化記錄記憶體和封存有助於服務成本管理。

管理 HDInsight 叢集記錄包含保留叢集環境所有層面的相關信息。 這項資訊包含所有相關聯的 Azure 服務記錄、叢集設定、作業執行資訊、任何錯誤狀態,以及視需要的其他數據。

HDInsight 記錄管理中的一般步驟包括:

  • 步驟 1:判斷記錄保留原則
  • 步驟 2:管理叢集服務版本組態記錄
  • 步驟 3:管理叢集作業執行記錄檔
  • 步驟 4:預測記錄磁碟區記憶體大小和成本
  • 步驟 5:判斷記錄封存原則和程式

步驟 1:判斷記錄保留原則

建立 HDInsight 叢集記錄管理策略的第一個步驟是收集商務案例和作業執行歷程記錄記憶體需求的相關信息。

叢集詳細資料

下列叢集詳細數據有助於收集記錄管理原則中的資訊。 從您在特定 Azure 帳戶中建立的所有 HDInsight 叢集收集此資訊。

  • 叢集名稱
  • 叢集區域和 Azure 可用性區域
  • 叢集狀態,包括上次狀態變更的詳細數據
  • 針對主要、核心和工作節點指定的 HDInsight 實例類型和數目

您可以使用 Azure 入口網站 來取得大部分的最上層資訊。 或者,您可以使用 Azure CLI 來取得 HDInsight 叢集的相關信息(s):

az hdinsight list --resource-group <ResourceGroup>
az hdinsight show --resource-group <ResourceGroup> --name <ClusterName>

您也可以使用 PowerShell 來檢視此資訊。 如需詳細資訊,請參閱 使用 Azure PowerShell 在 HDInsight 中管理 Hadoop 叢集。

瞭解叢集上執行的工作負載

請務必瞭解在 HDInsight 叢集上執行的工作負載類型,為每個類型設計適當的記錄策略。

  • 工作負載是否實驗性(例如開發或測試)或生產品質?
  • 生產品質工作負載通常執行的頻率為何?
  • 是否有任何工作負載需要大量資源和/或長時間執行?
  • 任何工作負載是否都使用一組複雜的 Hadoop 服務,其中會產生多種記錄類型?
  • 任何工作負載是否有相關聯的法規執行歷程需求?

記錄保留模式和做法範例

  • 請考慮藉由將標識元新增至每個記錄專案,或透過其他技術來維護數據歷程追蹤。 這可讓您追蹤數據的原始來源和作業,並追蹤每個階段的數據,以瞭解其一致性和有效性。

  • 請考慮如何從叢集或多個叢集收集記錄,並針對稽核、監視、規劃和警示等目的進行定序。 您可以使用自定義解決方案定期存取和下載記錄檔,並加以合併和分析以提供儀錶板顯示。 您也可以新增其他功能來警示安全性或失敗偵測。 您可以使用 PowerShell、HDInsight SDK 或存取 Azure 傳統部署模型的程式碼來建置這些公用程式。

  • 請考慮監視解決方案或服務是否適合使用。 Microsoft System Center 提供 HDInsight 管理元件。 您也可以使用 Apache Chukwa 和 Ganglia 等第三方工具來收集及集中記錄。 許多公司提供服務來監視Hadoop型巨量數據解決方案,例如: Centerity、Compuware APM、Sematext SPM 和 Zettaset Orchestrator。

步驟 2:管理叢集服務版本並檢視記錄

典型的 HDInsight 叢集會使用數個服務和開放原始碼軟體套件(例如 Apache HBase、Apache Spark 等等)。 對於某些工作負載,例如生物資訊學,除了作業執行記錄之外,您可能還需要保留服務設定記錄檔記錄。

使用 Ambari UI 來檢視叢集組態設定

Apache Ambari 藉由提供 Web UI 和 REST API,簡化 HDInsight 叢集的管理、設定和監視。 以 Linux 為基礎的 HDInsight 叢集會隨附 Ambari。 選取 [Azure 入口網站 HDInsight] 頁面上的 [叢集儀錶板] 窗格,以開啟 [叢集儀錶板] 鏈接頁面。 接下來,選取 [HDInsight 叢集儀錶板 ] 窗格以開啟Ambari UI。 系統會提示您輸入叢集登入認證。

若要開啟服務檢視清單,請選取 HDInsight Azure 入口網站 頁面上的 [Ambari 檢視] 窗格。 此清單會根據您已安裝的連結庫而有所不同。 例如,您可能會看到 [YARN 佇列管理員]、[Hive 檢視] 及 [Tez 檢視]。 選取任何服務連結以查看設定和服務資訊。 [Ambari UI 堆疊和版本] 頁面提供叢集服務組態和服務版本歷程記錄的相關信息。 若要流覽至 Ambari UI 的這個區段,請選取 [管理員] 功能表,然後選取 [堆棧和版本]。 選取 [版本] 索引標籤以查看服務版本資訊。

Apache Ambari admin Stack and Versions.

使用Ambari UI,您可以下載叢集中特定主機(或節點)上執行之任何(或所有)服務的組態。 選取 [ 主機] 功能表,然後選取感興趣的主機連結。 在該主機的頁面上,選取 [ 主機動作] 按鈕,然後 下載客戶端設定

Apache Ambari download host client configs.

檢視腳本動作記錄

HDInsight 腳本動作 會在叢集上手動或指定時執行腳本。 例如,腳本動作可用來在叢集上安裝其他軟體,或從預設值改變組態設定。 腳本動作記錄可以提供叢集安裝期間發生的錯誤見解,以及組態設定可能會影響叢集效能和可用性的變更。 若要查看文稿動作的狀態,請選取 Ambari UI 上的 [操作] 按鈕,或存取預設記憶體帳戶中的狀態記錄。 儲存體記錄位於 /STORAGE_ACCOUNT_NAME/DEFAULT_CONTAINER_NAME/custom-scriptaction-logs/CLUSTER_NAME/DATE

檢視Ambari警示狀態記錄

Apache Ambari 會將警示狀態變更 ambari-alerts.log寫入 。 完整路徑為 /var/log/ambari-server/ambari-alerts.log。 若要啟用記錄檔的偵錯,請在 [變更] 中 /etc/ambari-server/conf/log4j.properties. 變更屬性,然後從下列專案底下 # Log alert state changes 變更屬性:

log4j.logger.alerts=INFO,alerts

to

log4j.logger.alerts=DEBUG,alerts

步驟 3:管理叢集作業執行記錄檔

下一個步驟是檢閱各種服務的作業執行記錄檔。 服務可能包括 Apache HBase、Apache Spark 和其他許多服務。 Hadoop 叢集會產生大量的詳細信息記錄,因此判斷哪些記錄很實用(以及哪些記錄不是)可能很耗時。 瞭解記錄系統對於記錄檔的目標管理很重要。 下圖是範例記錄檔。

HDInsight example log file sample output.

存取Hadoop記錄檔

HDInsight 會將其記錄檔儲存在叢集文件系統和 Azure 儲存體 中。 您可以開啟 叢集的 SSH 連線並瀏覽檔案系統,或使用遠端前端節點伺服器上的 Hadoop YARN 狀態入口網站,來檢查叢集中的記錄檔。 您可以使用任何可從 Azure 儲存體 存取和下載數據的工具,檢查 Azure 儲存體 中的記錄檔。 範例包括 AzCopyCloudXplorer 和 Visual Studio Server Explorer。 您也可以使用 PowerShell 和 Azure 儲存體 用戶端連結庫或 Azure .NET SDK 來存取 Azure Blob 記憶體中的數據。

Hadoop 會在叢集中的各種節點上嘗試工作時,執行作業的工作。 HDInsight 可以起始推測性工作嘗試,並終止任何其他未先完成的工作嘗試。 這會產生記錄到控制器、stderr 和 syslog 記錄檔的顯著活動。 此外,多個工作嘗試會同時執行,但記錄檔只能以線性方式顯示結果。

寫入 Azure Blob 記憶體的 HDInsight 記錄

HDInsight 叢集已設定為將工作記錄寫入 Azure Blob 儲存器帳戶,以取得使用 Azure PowerShell Cmdlet 或 .NET 作業提交 API 提交的任何作業。 如果您透過 SSH 將作業提交至叢集,則執行記錄資訊會儲存在 Azure 數據表中,如上一節所述。

除了 HDInsight 所產生的核心記錄檔之外,YARN 等已安裝的服務也會產生作業執行記錄檔。 記錄檔的數目和類型取決於已安裝的服務。 一般服務是 Apache HBase、Apache Spark 等等。 調查每個服務的作業記錄執行檔案,以瞭解叢集上可用的整體記錄檔。 每個服務都有自己的記錄方法,以及用來儲存記錄檔的位置。 例如,下一節將討論存取最常見服務記錄檔的詳細數據(來自 YARN)。

YARN 所產生的 HDInsight 記錄

YARN 會匯總背景工作節點上所有容器的記錄,並將這些記錄儲存為每個背景工作節點的一個匯總記錄檔。 該應用程式完成之後,該記錄會儲存在預設檔案系統上。 您的應用程式可能會使用數百或數千個容器,但單一背景工作節點上執行的所有容器記錄一律會匯總至單一檔案。 您的應用程式只會使用每個背景工作節點一個記錄。 在 HDInsight 叢集 3.0 版和更新版本上,預設會啟用記錄彙總。 彙總記錄位於叢集的預設儲存體。

/app-logs/<user>/logs/<applicationId>

匯總的記錄無法直接讀取,因為它們是以容器索引的二進位格式撰寫 TFile 。 使用 YARN ResourceManager 記錄或 CLI 工具,將這些記錄檢視為感興趣的應用程式或容器的純文字。

YARN CLI 工具

若要使用 YARN CLI 工具,您必須先使用 SSH 連線到 HDInsight 叢集。 執行這些命令時,<applicationId>請指定、 <user-who-started-the-application><containerId><worker-node-address> 資訊。 您可以使用下列其中一個命令,將記錄檢視為純文字:

yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>

YARN Resource Manager UI

YARN Resource Manager UI 會在叢集前端節點上執行,並透過Ambari Web UI存取。 使用下列步驟來檢視 YARN 記錄:

  1. 在網頁瀏覽器中,巡覽至 https://CLUSTERNAME.azurehdinsight.net。 以 HDInsight 叢集的名稱取代 CLUSTERNAME。
  2. 從左側的服務清單中,選取 [YARN]。
  3. 從 [快速連結] 下拉式清單中,選取其中一個叢集前端節點,然後選取 [Resource Manager 記錄]。 您會看到 YARN 記錄的連結清單。

步驟 4:預測記錄磁碟區記憶體大小和成本

完成上述步驟之後,您可以瞭解 HDInsight 叢集正在產生之記錄檔的類型和磁碟區。

接下來,分析一段時間內金鑰記錄記憶體位置中的記錄數據量。 例如,您可以分析超過 30-60-90 天期間的數量和成長。 在電子表格中記錄這項資訊,或使用其他工具,例如Visual Studio、Azure 儲存體Explorer或Power Query for Excel。 ```

您現在有足夠的資訊可建立金鑰記錄的記錄管理原則。 使用您的電子表格(或您選擇的工具)來預測記錄大小成長和記錄記憶體 Azure 服務成本。 也請考慮您正在檢查之記錄集的任何記錄保留需求。 現在您可以重新命名未來的記錄記憶體成本,在判斷哪些記錄檔可以刪除之後(如果有的話),以及哪些記錄應該保留並封存到成本較低的 Azure 儲存體。

步驟 5:判斷記錄封存原則和程式

判斷可以刪除哪些記錄檔之後,您可以調整許多 Hadoop 服務的記錄參數,以在指定的時段後自動刪除記錄檔。

對於特定記錄檔,您可以使用價格較低的記錄檔封存方法。 針對 Azure Resource Manager 活動記錄,您可以使用 Azure 入口網站 來探索此方法。 選取 HDInsight 實例 Azure 入口網站 中的 [活動記錄] 連結,以設定 Resource Manager 記錄的封存。 在 [活動記錄搜尋] 頁面頂端,選取 [匯出] 功能表項以開啟 [匯出活動記錄] 窗格。 填寫訂用帳戶、區域、是否要匯出至記憶體帳戶,以及保留記錄的天數。 在這個相同的窗格中,您也可以指出是否要匯出至事件中樞。

Azure portal export activity log preview.

或者,您可以使用 PowerShell 編寫記錄封存腳本。

存取 Azure 儲存體 計量

Azure 儲存體 可以設定為記錄記憶體作業和存取。 您可以使用這些詳細的記錄來進行容量監視和規劃,以及稽核對記憶體的要求。 記錄的資訊包括延遲詳細數據,可讓您監視和微調解決方案的效能。 您可以使用 .NET SDK for Hadoop 來檢查針對保留 HDInsight 叢集數據之 Azure 儲存體 所產生的記錄檔。

控制舊記錄檔的備份索引大小和數目

若要控制保留的記錄檔大小和數目,請設定的下列屬性 RollingFileAppender

  • maxFileSize 是檔案的關鍵大小,檔案會復原。 預設值為 10 MB。
  • maxBackupIndex 指定要建立的備份文件數目,預設為1。

其他記錄管理技術

若要避免磁碟空間不足,您可以使用一些OS工具,例如 logrotate 來管理記錄檔。 您可以設定 logrotate 每天執行,壓縮記錄檔並移除舊的記錄檔。 您的方法取決於您的需求,例如在本機節點上保留記錄檔的時間長度。

您也可以檢查是否為一或多個服務啟用 DEBUG 記錄,這可大幅增加輸出記錄大小。

若要將所有節點的記錄收集到一個中央位置,您可以建立數據流,例如將所有記錄專案擷取到 Solr。

下一步