YARN Timeline Server 概述
YARN Timeline Server 介紹
以通用方式存儲和檢索應用程序的當前和歷史信息是通過時間軸服務器在 YARN 中實現的。它有兩項責任:
1、存儲應用程序特定的信息
完全特定於應用程序或框架的信息的收集和檢索。例如,Hadoop MapReduce 框架可以包含一些信息,比如 map 任務的數量、reduce 任務、計數器等等。應用程序開發人員可以通過應用程序主容器和/或應用程序容器中的 TimelineClient 將特定信息發佈到時間軸服務器。
然後,可以通過 REST api 查詢此信息,以供特定於應用程序/框架的ui呈現。
2、保存關於已完成應用程序的通用信息
在此之前,應用程序歷史服務器只支持 MapReduce 作業。隨着時間軸服務器的引入,應用程序歷史服務器成爲時間軸服務器的一種用途。
一般信息包括應用程序級別的數據,如:
- 隊列名稱
- 用戶信息和類似的設置在 ApplicationSubmissionContext 中
- 爲應用程序運行的應用程序嘗試列表
- 關於每個應用程序嘗試的信息
- 在每次應用程序嘗試下運行的容器列表
- 關於每個容器的信息
YARN 資源管理器將通用數據發佈到時間軸存儲區,並使用其 web-UI 顯示有關已完成應用程序的信息。
現狀和未來計劃
Current status
- 時間軸服務器的核心功能已經完成。
- 它可以在安全集羣和非安全集羣中工作。
- 通用歷史服務是在時間軸存儲上構建的。
- 歷史記錄可以存儲在內存或 leveldb 數據庫存儲中;後者確保在時間軸服務器重新啓動時保留歷史記錄。
- 不支持在紗線中安裝特定於框架的 ui。
- 特定於應用程序的信息只能通過使用 JSON 類型內容的 RESTful api 獲得。
- “時間軸服務器v1” REST API 已經被聲明爲 REST API 之一,其兼容性將在未來的版本中維護。
- 時間軸服務器的單服務器實現限制了服務的可伸縮性;它還可以防止服務成爲 YARN 基礎設施的高可用性組件。
Future Plans
- 未來的版本將引入一個可擴展且可靠的下一代時間軸服務,即“時間軸服務v2”。
- 此服務的擴展特性可能不適用於使用時間軸服務器 v1 REST API 的應用程序。這包括擴展的數據結構以及客戶端在時間軸服務器實例之間進行故障轉移的能力。
Timeline 結構
時間軸域爲時間軸服務器提供了一個名稱空間,允許用戶託管多個實體,將它們與其他用戶和應用程序隔離開來。時間軸服務器安全性在此級別定義。
“域”主要存儲所有者信息、讀寫 ACL 信息、創建和修改時間戳信息。每個域由一個 ID 標識,該 ID 必須在紗線集羣中的所有用戶中是唯一的。
時間線實體包含概念實體及其相關事件的元信息。
實體可以是應用程序、應用程序嘗試、容器或任何用戶定義的對象。
它包含主過濾器,用於索引時間軸存儲中的實體。因此,用戶/應用程序應該謹慎地選擇他們想要作爲主要過濾器存儲的信息。
其餘的數據可以存儲爲非索引信息。每個實體都由 EntityId 和 EntityType 唯一標識。
時間線事件描述與應用程序的特定時間線實體相關的事件。
用戶可以自由定義事件的含義 -- 例如啓動應用程序、分配容器、操作失敗或其他與用戶和集羣操作員相關的信息。
......