什麼是 Hadoop Yarn 架構及其組件
已發表: 2020-02-10目錄
Hadoop YARN 介紹
YARN 是 Hadoop v2.0 的主要組件。 YARN 通過允許處理和運行存儲在 HDFS 中的批處理、流處理、交互式處理和圖形處理數據來幫助開放 Hadoop。 通過這種方式,它有助於運行 MapReduce 以外的不同類型的分佈式應用程序。
在 YARN 架構中,處理層與資源管理層是分開的。 在 Hadoop 1.0 版本中創建應用程序管理器和資源管理器之間的分離是作業跟踪器的職責。 YARN 允許存儲在 HDFS(Hadoop 分佈式文件系統)中的數據由各種數據處理引擎處理和運行,例如批處理、流處理、交互處理、圖形處理等等。 因此,使用 YARN 可以提高系統的效率。 應用程序的處理通過其不同的組件在 YARN 中進行調度。 許多不同種類的資源也被逐步分配以實現最佳利用。 YARN 對正確使用可用資源有很大幫助,這對於處理大量數據是非常必要的。
為什麼選擇紗線?
MapReduce 執行資源管理和處理的功能。 Hadoop v1.0 也稱為 MapReduce 版本 1 (MRV1)。 Job Tracker 只有一個主控。
你不會相信這個項目如何改變了學生的職業生涯在以前的 Hadoop 版本中,即 Hadoop 版本 1.0,也稱為 MapReduce 版本 1 (MRV1),用於自行執行進程和資源管理任務。 它有一個工作跟踪模塊,負責一切。 因此,為應用程序分配資源、執行需求調度以及監控系統中的處理作業是單個主機。 Hadoop 1.0 版減少了任務並在稱為任務跟踪器的幾個子流程上分配了地圖。 Task Tracker 還定期報告進程的進度。 但主要問題不在於,問題在於這種單一主控的設計,導致瓶頸問題。 此外,計算資源利用效率低下。 因此,可擴展性成為這個版本的 Hadoop 的一個問題。 但好的一面是,YARN 解決了這個問題,YARN 是其繼任者 Hadoop 版本 2.0 中的一個重要核心組件,雅虎和 Hortonworks 在 2012 年推出。 這種緩解背後的基本思想是將 MapReduce 從資源管理和作業調度中分離出來,而不是單個主控。 因此,YARN 現在負責作業調度和資源管理。
在 Hadoop 2.0 中,YARN 引入了 Application Master 和 Resource Manager 的概念。 在 Hadoop 集群中,資源的利用率由資源管理器監控。
YARN 有一些特性因此而聞名,它們是:

- 多租戶: YARN 允許訪問多個數據處理引擎,例如批處理引擎、流處理引擎、交互式處理引擎、圖形處理引擎等等。 這為公司帶來了多租戶的好處。
- 集群利用率:集群以一種優化的方式被利用,因為集群是在 YARN 的幫助下在 Hadoop 中動態使用的。
- 兼容性:YARN 還兼容 Hadoop 的第一個版本,即 Hadoop 1.0,因為它使用現有的 map-reduce 應用程序。 所以 YARN 也可以與 Hadoop 1.0 一起使用。
- 可擴展性: YARN 資源管理器中的調度程序允許數千個集群和節點由 Hadoop 管理和擴展。
YARN 的組成部分
- 容器:
在 Container 中,可以找到單個節點上的磁盤、CPU 內核、RAM 等物理資源。 容器啟動上下文 (CLC) 用於調用容器。 有關依賴項、安全令牌、環境變量的數據,這些數據作為稱為容器啟動上下文 (CLC) 的記錄進行維護。
- 在特定主機上,應用程序只能使用 CPU 和內存中的指定內存。 只有在 Container 授予權限後,才能使用此指定數量的內存。
- Container Launch Context 用於管理 YARN Containers。 它也稱為容器生命週期 (CLC)。 用於創建進程的必要命令存儲在此記錄中。 它還保存節點管理器服務、安全令牌、依賴項、環境變量映射的有效負載。
- 應用大師:
在框架中,當提交單個作業時,它被稱為應用程序。 監控應用程序進度、跟踪應用程序狀態、與資源管理器協商資源是應用程序管理器的職責。 應用程序運行的所有要求都是通過發送容器啟動上下文 (CLC) 來完成的。 應用程序主機通過向節點管理器請求容器來發布容器啟動上下文 (CLC)。 資源管理器有時會在應用程序啟動後收到健康報告。

- 節點管理器:
節點管理器負責 Hadoop 集群中的各個節點,還管理與每個特定節點相關的容器。 它向資源管理器註冊,並將每個節點的健康狀態發送到資源管理器,說明節點進程是否已完成對資源的使用。 由於其主要目標是管理資源管理器分配的每個特定節點容器。 節點管理器還會在應用程序主控請求時創建一個容器進程。 當應用程序主機通過 CLC(容器啟動上下文)向節點管理器發送並詢問附加的容器時,CLC(容器啟動上下文)包括應用程序需要執行的所有內容。 然後節點管理器創建請求的進程容器並運行它。 節點管理器還負責監控各個 Container 的資源使用情況,並將其報告給資源管理器。 因此,節點管理器和資源管理器協作以在節點之間進行通信並管理集群中每個節點的資源使用情況。 如果資源管理器指示它,它也可以殺死容器。 最後,節點管理器通過日誌管理系統將所有內容記錄在其中。
特定節點由節點管理器負責。 節點管理器管理節點的工作流和應用程序。 執行日誌管理,節點管理器監控資源使用情況。 資源管理器向節點管理器指示殺死容器。 應用程序主機請求節點管理器啟動容器進程。 容器進程的創建是節點管理器的職責。
- 資源管理器:
所有應用程序的資源管理和分配是資源管理器的職責,是 YARN 的主守護進程。 資源管理器收到的請求被轉發到相應的節點管理器。 根據應用,資源由資源管理器分配完成。
- 集群的利用率得到優化,例如保持所有資源的使用不受不同類型的限制,如 SLA、公平和容量保證。
- 資源管理器分配可用資源。
- 資源管理器仲裁集群資源。
- 請求的實際處理髮生在節點中,節點管理器對其進行管理。 每當接收到任何處理請求時,它將請求部分地傳輸到其相應的節點管理器。
- 資源管理者是資源分配的最高權力機構。
資源管理器有兩個主要組件,它們是: –

- 應用程序經理 –
應用程序管理器負責管理一組提交的任務或應用程序。 它首先驗證和驗證提交的應用程序的規範,如果沒有足夠的可用資源,它可能會拒絕應用程序。 它還確保不存在具有相同 ID 的其他應用程序,這些應用程序可能由錯誤或惡意客戶端引起。 然後它將驗證後提交的應用程序轉發給調度程序。 最後,它還觀察應用程序的狀態並管理完成的應用程序以節省一些資源管理器的內存。 應用程序管理器保留已完成應用程序的緩存,並移出舊的、已完成的應用程序,以便為新提交的應用程序提供空間。
- 調度器——
基於資源可用性和應用程序分配,調度程序調度任務。 調度程序不會執行其他任務,例如在失敗、跟踪或監視任務後不重新啟動作業。 不同類型的調度器插件有 Fair Scheduler 和 Capacity Scheduler,YARN 調度器支持對集群資源進行分區。
Hadoop YARN 中應用程序的工作流程步驟
客戶提交申請。
- Application Manager 是由 Resource Manager 分配 Container 啟動的。
- 資源管理器和應用程序管理器相互註冊。
- 應用程序管理器將容器與資源管理器協商。
- Node Manager 在收到 Application Manager 的通知後啟動 Container。
- 應用程序代碼的執行在容器中完成。
- 應用程序管理器或資源管理器在被客戶端聯繫後監控應用程序的狀態。
- 流程完成後,使用資源管理器取消註冊應用程序管理器。
包起來
如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。