Hadoop YARN
帶有 MapReduce 的 Apache Hadoop 是分布式數據處理的骨干力量。借助其獨特的橫向擴展物理集群架構和由 Google 最初開發的精細處理框架,Hadoop 在大數據處理的全新領域迎來了爆炸式增長。Hadoop 還開發了一個豐富多樣的應用程序生態系統,包括 Apache Pig(一種強大的腳本語言)和 Apache Hive(一個具有類似 SQL 界面的數據倉庫解決方案)。
不幸的是,這個生態系統構建于一種編程模式之上,無法解決大數據中的所有問題。MapReduce 提供了一種特定的編程模型,盡管已通過 Pig 和 Hive 等工具得到了簡化,但它不是大數據的靈丹妙藥。我們首先介紹一下 MapReduce 2.0 (MRv2) — 或 Yet Another Resource Negotiator (YARN) — 并快速回顧一下 YARN 之前的 Hadoop 架構。
Hadoop 和 MRv1 簡單介紹
Hadoop 集群可從單一節點(其中所有 Hadoop 實體都在同一個節點上運行)擴展到數千個節點(其中的功能分散在各個節點之間,以增加并行處理活動)。圖 1 演示了一個 Hadoop 集群的高級組件。
圖 1. Hadoop 集群架構的簡單演示
一個 Hadoop 集群可分解為兩個抽象實體:MapReduce 引擎和分布式文件系統。MapReduce 引擎能夠在整個集群上執行 Map 和 Reduce 任務并報告結果,其中分布式文件系統提供了一種存儲模式,可跨節點復制數據以進行處理。Hadoop 分布式文件系統 (HDFS) 通過定義來支持大型文件(其中每個文件通常為 64 MB 的倍數)。
當一個客戶端向一個 Hadoop 集群發出一個請求時,此請求由 JobTracker 管理。JobTracker 與 NameNode 聯合將工作分發到離它所處理的數據盡可能近的位置。NameNode 是文件系統的主系統,提供元數據服務來執行數據分發和復制。JobTracker 將 Map 和 Reduce 任務安排到一個或多個 TaskTracker 上的可用插槽中。TaskTracker 與 DataNode(分布式文件系統)一起對來自 DataNode 的數據執行 Map 和 Reduce 任務。當 Map 和 Reduce 任務完成時,TaskTracker 會告知 JobTracker,后者確定所有任務何時完成并最終告知客戶作業已完成。
InfoSphere BigInsights Quick Start Edition
InfoSphere BigInsights Quick Start Edition 是 IBM 基于 Hadoop 的產品 InfoSphere BigInsights 的一個免費可下載版本。使用 Quick Start Edition,您可嘗試 IBM 開發的特性來擴大開源 Hadoop 的價值,比如 Big SQL、文本分析和 BigSheets。引導式學習可讓您的體驗盡可能順暢,包括按部就班、自定進度的教程和視頻,可以幫助開始讓 Hadoop 為您所用。沒有時間或數據限制,您可自行安排時間在大量數據上進行試驗。請?觀看視頻、學習教程 (PDF)?和?下載 BigInsights Quick Start Edition。
從 圖 1 中可以看到,MRv1 實現了一個相對簡單的集群管理器來執行 MapReduce 處理。MRv1 提供了一種分層的集群管理模式,其中大數據作業以單個 Map 和 Reduce 任務的形式滲入一個集群,并最后聚合成作業來報告給用戶。但這種簡單性有一些隱秘,不過也不是很隱秘的問題。
MRv1 的缺陷
MapReduce 的第一個版本既有優點也有缺點。MRv1 是目前使用的標準的大數據處理系統。但是,這種架構存在不足,主要表現在大型集群上。當集群包含的節點超過 4,000 個時(其中每個節點可能是多核的),就會表現出一定的不可預測性。其中一個最大的問題是級聯故障,由于要嘗試復制數據和重載活動的節點,所以一個故障會通過網絡泛洪形式導致整個集群嚴重惡化。
但 MRv1 的最大問題是多租戶。隨著集群規模的增加,一種可取的方式是為這些集群采用各種不同的模型。MRv1 的節點專用于 Hadoop,所以可以改變它們的用途以用于其他應用程序和工作負載。當大數據和 Hadoop 成為云部署中一個更重要的使用模型時,這種能力也會增強,因為它允許在服務器上對 Hadoop 進行物理化,而無需虛擬化且不會增加管理、計算和輸入/輸出開銷。
我們現在看看 YARN 的新架構,看看它如何支持 MRv2 和其他使用不同處理模型的應用程序。
回頁首
YARN (MRv2) 簡介
為了實現一個 Hadoop 集群的集群共享、可伸縮性和可靠性。設計人員采用了一種分層的集群框架方法。具體來講,特定于 MapReduce 的功能已替換為一組新的守護程序,將該框架向新的處理模型開放。
可在何處找到 YARN?
YARN 是在 hadoop-0.23 版本時引入 Hadoop 中的。隨著徹底檢查的不斷完善,您將會發現此框架也在不斷更新。
回想一下,由于限制了擴展以及網絡開銷所導致的某些故障模式,MRv1 JobTracker 和 TaskTracker 方法曾是一個重要的缺陷。這些守護程序也是 MapReduce 處理模型所獨有的。為了消除這一限制,JobTracker 和 TaskTracker 已從 YARN 中刪除,取而代之的是一組對應用程序不可知的新守護程序。
圖 2. YARN 的新架構
YARN 分層結構的本質是 ResourceManager。這個實體控制整個集群并管理應用程序向基礎計算資源的分配。ResourceManager 將各個資源部分(計算、內存、帶寬等)精心安排給基礎 NodeManager(YARN 的每節點代理)。ResourceManager 還與 ApplicationMaster 一起分配資源,與 NodeManager 一起啟動和監視它們的基礎應用程序。在此上下文中,ApplicationMaster 承擔了以前的 TaskTracker 的一些角色,ResourceManager 承擔了 JobTracker 的角色。
ApplicationMaster 管理一個在 YARN 內運行的應用程序的每個實例。ApplicationMaster 負責協調來自 ResourceManager 的資源,并通過 NodeManager 監視容器的執行和資源使用(CPU、內存等的資源分配)。請注意,盡管目前的資源更加傳統(CPU 核心、內存),但未來會帶來基于手頭任務的新資源類型(比如圖形處理單元或專用處理設備)。從 YARN 角度講,ApplicationMaster 是用戶代碼,因此存在潛在的安全問題。YARN 假設 ApplicationMaster 存在錯誤或者甚至是惡意的,因此將它們當作無特權的代碼對待。
NodeManager 管理一個 YARN 集群中的每個節點。NodeManager 提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1 通過插槽管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表著可供一個特定應用程序使用的針對每個節點的資源。YARN 繼續使用 HDFS 層。它的主要 NameNode 用于元數據服務,而 DataNode 用于分散在一個集群中的復制存儲服務。
要使用一個 YARN 集群,首先需要來自包含一個應用程序的客戶的請求。ResourceManager 協商一個容器的必要資源,啟動一個 ApplicationMaster 來表示已提交的應用程序。通過使用一個資源請求協議,ApplicationMaster 協商每個節點上供應用程序使用的資源容器。執行應用程序時,ApplicationMaster 監視容器直到完成。當應用程序完成時,ApplicationMaster 從 ResourceManager 注銷其容器,執行周期就完成了。
通過這些討論,應該明確的一點是,舊的 Hadoop 架構受到了 JobTracker 的高度約束,JobTracker 負責整個集群的資源管理和作業調度。新的 YARN 架構打破了這種模型,允許一個新 ResourceManager 管理跨應用程序的資源使用,ApplicationMaster 負責管理作業的執行。這一更改消除了一處瓶頸,還改善了將 Hadoop 集群擴展到比以前大得多的配置的能力。此外,不同于傳統的 MapReduce,YARN 允許使用 Message Passing Interface 等標準通信模式,同時執行各種不同的編程模型,包括圖形處理、迭代式處理、機器學習和一般集群計
總結
以上是生活随笔為你收集整理的Hadoop YARN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop Streaming 编程
- 下一篇: Hadoop学习全程记录——在Eclip