概述
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構,是Google的云計算基礎架構的開源實作,用戶可以在不了解分布式底層細節的情況下,開發分布式程式,充分利用集群的優勢進行高速運算和存盤,
Hadoop被ASF定義成一個允許大型資料集使用簡單編程模型在計算機集群的分布式處理的框架,他提供了一個高度可用的服務上的計算機集群,
Hadoop的特點:
(1) 是一系列軟體庫組成的框架;
(2)適合處理大規模資料,高吞吐量;
(3)被部署在一個集群上,高容錯性,可以不使用昂貴的硬體設備;
(4)HDFS可以以流的形式訪問檔案系統中的資料,
核心功能
最核心設計包括:HDFS和MapReduce,
HDFS
HDFS用于海量資料的存盤,
HDFS優勢 劣勢
1、大資料處理 1、低時間延遲的資料訪問
2、流式資料訪問 2、不適用存盤大量小檔案
3、資料冗余,硬體容錯
HDFS的核心概念
資料塊:一般為128MB;
資料復制:默認復制3份;
資料副本存放策略:第一個副本放在本地機架的一個節點,第二個副本放置在本地機架上的另外一個節點,第三個副本放置在另外一個機架的節點上??;
機架感知;
負載均衡;
心跳機制:用于實作Hadoop集群節點之間的通信
HDFS體系結構
HDFS 采用Master/Slave的架構來存盤資料,這種架構主要由四個部分組成,分別為HDFS Client、NameNode、DataNode和Secondary NameNode,一個HDFS集群是由一個NameNode和一定數目的DataNode組成的,NameNode是一個中心服務器,負責管理檔案系統的名字空間 (Namespace )及客戶端對檔案的訪問,集群中的DataNode一般是一個節點運行一個DataNode行程,負責管理它所在節點上的存盤,
這種結構模型主要由四個部分組成:Client(客戶端)、Namenode(名稱節點)、Datanode(資料節點)和SecondaryNamenode(第二名稱節點,輔助Namenode),
一個真正的HDFS集群包括一個Namenode和若干數目的Datanode,Namenode是一個中心服務器,負責管理檔案系統的命名空間 (Namespace )及客戶端對檔案的訪問,集群中的Datanode一般是一個節點運行一個Datanode行程,負責管理客戶端的讀寫請求,在Namenode的統一調度下進行資料塊的創建、洗掉和復制等操作,
MapReduce
MapReduce為海量資料提供計算能力,可分解為map和reduce兩部分,
流程分為5的步驟:
讀取資料;map階段;shuffle;reduce階段,存盤資料,
shuffle是Mapreduce的核心,它分布在Mapreduce的map階段和reduce階段,
Hadoop的物理架構
Hadoop是典型的Master-Slave架構,
Hadoop的特色與優勢
(1)高可靠性:Hadoop采用按位存盤和處理資料,
(2)高擴展性:在可用的計算機集群間分配任務資料,可方便的擴展數以千計的節點,
(3)高效性:能夠在節點之間動態地移動資料并保證各個節點的動態平衡以加快任務處理速度,
(4)高容錯性:能夠自動保存資料的多個副本,能夠自動將失敗的任務重新分配,
Hadoop體系架構
Hadoop生態系統
Hadoop1.0 Hadoop2.0

1.0版本的核心組件主要是HDFS和MapReduce,2.0在1.0的基礎上增加了yarn資源管理系統,
YARN
YARN是Hadoop2.0版本新引入的資源管理系統,直接從1.0演化而來,
核心思想:將1.0中JobTracker的資源管理和作業調度兩個功能分開,分別由ResourceManager和ApplicationMaster行程來實作,
ResourceManager:負責整個集群的資源管理和調度,
ApplicationMaster:負責應用程式相關的事務,比如任務調度、任務監控和容錯等,
YARN的出現,使得多個計算框架可以運行在一個集群當中,
每個應用程式對應一個ApplicationMaster,
目前可以支持多種計算框架運行在YARN上面比如MapReduce、Storm、Spark、Flink等,
YARN架構
從YARN的架構圖來看,它主要由ResourceManager和ApplicationMaster、NodeManager、ApplicationMaster和Container等組件組成,
1、 ResourceManager(RM)
YARN 分層結構的本質是 ResourceManager,這個物體控制整個集群并管理應用程式向基礎計算資源的分配,ResourceManager 將各個資源部分(計算、記憶體、帶寬等)精心安排給基礎 NodeManager(YARN 的每節點代理),ResourceManager 還與 ApplicationMaster 一起分配資源,與 NodeManager 一起啟動和監視它們的基礎應用程式,在此背景關系中,ApplicationMaster 承擔了以前的 TaskTracker 的一些角色,ResourceManager 承擔了 JobTracker 的角色,
總的來說,RM有以下作用
(1)處理客戶端請求
(2) 啟動或監控ApplicationMaster
(3)監控NodeManager
(4)資源的分配與調度
2、 ApplicationMaster(AM)
ApplicationMaster 管理在YARN內運行的每個應用程式實體,ApplicationMaster 負責協調來自 ResourceManager 的資源,并通過 NodeManager 監視容器的執行和資源使用(CPU、記憶體等的資源分配),請注意,盡管目前的資源更加傳統(CPU 核心、記憶體),但未來會帶來基于手頭任務的新資源型別(比如圖形處理單元或專用處理設備),從 YARN 角度講,ApplicationMaster 是用戶代碼,因此存在潛在的安全問題,YARN 假設 ApplicationMaster 存在錯誤或者甚至是惡意的,因此將它們當作無特權的代碼對待,
總的來說,AM有以下作用
(1)負責資料的切分;
(2)為應用程式申請資源并分配給內部的任務;
(3)任務的監控與容錯,
3、 NodeManager(NM)
NodeManager管理YARN集群中的每個節點,NodeManager 提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康,MRv1 通過插槽管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表著可供一個特定應用程式使用的針對每個節點的資源,
總的來說,NM有以下作用
(1)管理單個節點上的資源
(2)處理來自ResourceManager的命令;
(3)處理來自ApplicationMaster的命令,
4、 Container
Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁盤、網路等,當AM向RM申請資源時,RM為AM回傳的資源便是用Container表示的,YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源,
總的來說,Container有以下作用
對任務運行環境進行抽象,封裝CPU、記憶體等多維度的資源以及環境變數、啟動命令等任務運行相關的資訊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419130.html
標籤:其他
