-
YARN
YARN(Yet Another Resource Negotiator) 是 Hadoop 生態圈中的叢集管理系統,負責資源管理並具有高度擴展性,支援 Hive、Spark、Storm、Flink、TensorFlow 等運算框架。
當使用者向 YARN 送出了 MapReduce 作業,Resource Manager 中的 App Manager 會從 Node Manager 要求特定數量的 Container,隨後將這些 Container 交由 App Master 來管理應並用於作業執行。
* Resource Manager
負責叢集的資源管理和資源分配,資源單位稱為 Container,包含了記憶體、CPU、硬碟空間等資源分配。
* Scheduler
負責利用「調度演算法」來提升資源使用率。
* App Manager
負責接收使用者作業要求分配 Container 及管理 App Master。
* App Master
負責作業的實際執行,啟動和監控 Container 運行,各種運算框架(Hive、Spark、Storm、Flink、TensorFlow )都會實作自己的 App Master。
* Node Manager
負責 Cantainer 管理及週期性的向 Resource Manager 提供所擁有的 Container 狀態。
-
Kubernetes
K8S 提供了完整的叢集管理功能 ─ 容器佈署、滾動更新(Rolling Update)、水平自動擴展(Horizontal Pod Autoscaler)、服務發現、附載平衡、效能監控、服務日誌(Server log)、認證授權。
- Master
負責叢集調度管理。
- API Server:提供 RESTful 回應用戶請求。
- etcd:鍵值(Key-value)資料庫儲存叢集資料及組態管理。
- Scheduler:利用調度演算法優化作業分配。
- Controller:負責叢集作業功能 ─ 服務發現、附載平衡、水平擴衝、故障轉移、垃圾收集。
- Worker
負責節點管理。
- Kubelet:負責與 Master 通訊以提供容器管理、容器鏡像、運行狀態。
- Proxy:提供網路代理以提供附載平衡功能。
- Container:負責容器模組支援 Docker 或 RKT 等容器運作。