Hadoop架構(gòu)概覽
1 Hadoop組成
- HDFS
- Yarn
- MapReduce
- Common輔助工具
1.1 HDFS概述
Hadoop Distributed File System,簡稱HDFS穴翩,是一個分布式文件系統(tǒng)
包含:NameNode(nn)劝术、DataNode(dn) 和 Secondary NameNode (2nn)
1.1.1 NameNode(nn)
就是Master,它是一個主管县耽、管理者匈勋。
(1)管理HDFS的名稱空間监憎;
(2)配置副本策略绞呈;
(3)管理數(shù)據(jù)塊(Block)映射信息贸人;
(4)處理客戶端讀寫請求。
1.1.2 DataNode(dn)
就是Slave佃声,NameNode下達(dá)命令艺智,DataNode執(zhí)行實(shí)際的操作。
(1)存儲實(shí)際的數(shù)據(jù)塊圾亏;
(2)執(zhí)行數(shù)據(jù)塊的讀/寫操作十拣。
1.1.3 Client
就是需要使用HDFS能力的客戶端。
(1)文件切分志鹃。文件上傳HDFS的時候父晶,Client將文件切分成一個一個的Block,然后進(jìn)行上傳弄跌;
(2)與NameNode交互,獲取文件的位置信息尝苇;
(3)與DataNode交互铛只,讀取或者寫入數(shù)據(jù)埠胖;
(4)Client提供一些命令來管理HDFS,比如NameNode格式化淳玩;
(5)Client可以通過一些命令來訪問HDFS直撤,比如對HDFS增刪查改操作。
1.1.4 Secondary NameNode(2nn)
并非NameNode的熱備份蜕着。當(dāng)NameNode掛掉的時候谋竖,它并不能馬上替換NameNode并提供服務(wù)。
(1)輔助NameNode承匣,分擔(dān)其工作量蓖乘,比如定期合并Fsimage和Edits,并推送給NameNode 韧骗;
(2)在緊急情況下嘉抒,可輔助恢復(fù)NameNode。
1.2 Yarn概述
Yet Another Resource Negotiator 簡稱YARN 袍暴,另一種資源協(xié)調(diào)者些侍,是Hadoop 的資源管理器。
包含:
- ResourceManager(RM):整個集群資源(內(nèi)存政模、CPU等)的老大
- ApplicationMaster(AM):單個任務(wù)運(yùn)行的老大
- NodeManager(NM):單個節(jié)點(diǎn)服務(wù)器資源老大
- Container:容器岗宣,相當(dāng)一臺獨(dú)立的服務(wù)器,里面封裝了任務(wù)運(yùn)行所需要的資源淋样,如內(nèi)存耗式、CPU、磁盤习蓬、網(wǎng)絡(luò)等纽什。
說明:
- 客戶端可以有多個
- 集群上可以運(yùn)行多個ApplicationMaster
- 每個NodeManager上可以有多個Container
1.2.1 ResourceManager(RM)
主要作用如下
- 處理客戶端請求
- 監(jiān)控NodeManager
- 啟動或監(jiān)控ApplicationMaster
- 資源的分配與調(diào)度
1.2.2 ApplicationMaster(AM)
作用如下
- 任務(wù)的監(jiān)控與容錯
- 為應(yīng)用程序申請資源并分配給內(nèi)部的任務(wù)
1.2.3 NodeManager(NM)
主要作用如下
- 管理單個節(jié)點(diǎn)上的資源
- 處理來自ResourceManager的命令
- 處理來自ApplicationMaster的命令
1.2.4 Container
Container 是YARN 中的資源抽象,它封裝了某個節(jié)點(diǎn)上的多維度資源躲叼,如內(nèi)存芦缰、CPU、磁盤枫慷、網(wǎng)絡(luò)等让蕾。
1.3 MapReduce概述
MapReduce 是一個分布式運(yùn)算程序的編程框架,是用戶開發(fā)“基于Hadoop 的數(shù)據(jù)分析應(yīng)用”的核心框架或听。
MapReduce 核心功能是將用戶編寫的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個完整的分布式運(yùn)算程序探孝,并發(fā)運(yùn)行在一個Hadoop 集群上。
MapReduce 將計算過程分為兩個階段:Map 和Reduce
1)Map 階段并行處理輸入數(shù)據(jù)
2)Reduce 階段對Map 結(jié)果進(jìn)行匯總
2 HDFS誉裆、YARN顿颅、MapReduce 三者關(guān)系
3 大數(shù)據(jù)技術(shù)生態(tài)體系
圖中涉及的技術(shù)名詞解釋:
3.1 Sqoop
Sqoop 是一款開源的工具,主要用于在Hadoop足丢、Hive 與傳統(tǒng)的數(shù)據(jù)庫(MySQL)間進(jìn)行數(shù)據(jù)的傳遞粱腻,可以將一個關(guān)系型數(shù)據(jù)庫(例如 :MySQL庇配,Oracle 等)中的數(shù)據(jù)導(dǎo)入到Hadoop 的HDFS 中,也可以將HDFS 的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫中
3.2 Flume
Flume 是一個高可用的绍些,高可靠的捞慌,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)柬批,F(xiàn)lume 支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方啸澡,用于收集數(shù)據(jù)
3.3 Kafka
Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)
3.4 Spark
Spark 是當(dāng)前最流行的開源大數(shù)據(jù)內(nèi)存計算框架〉剩可以基于Hadoop 上存儲的大數(shù)據(jù)進(jìn)行計算
3.5 Flink
Flink 是當(dāng)前最流行的開源大數(shù)據(jù)內(nèi)存計算框架嗅虏。用于實(shí)時計算的場景較多
3.6 Oozie
Oozie 是一個管理Hadoop 作業(yè)(job)的工作流程調(diào)度管理系統(tǒng)
3.7 Hbase
HBase 是一個分布式的、面向列的開源數(shù)據(jù)庫揪漩。HBase 不同于一般的關(guān)系數(shù)據(jù)庫旋恼,它是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫
3.8 Hive
Hive 是基于Hadoop 的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表奄容,并提供簡單的SQL 查詢功能冰更,可以將SQL 語句轉(zhuǎn)換為MapReduce 任務(wù)進(jìn)行運(yùn)行。其優(yōu)點(diǎn)是學(xué)習(xí)成本低昂勒,可以通過類SQL 語句快速實(shí)現(xiàn)簡單的MapReduce 統(tǒng)計蜀细,不必開發(fā)專門的MapReduce 應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析
3.9 ZooKeeper
是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)戈盈,提供的功能包括:配置維護(hù)奠衔、名字服務(wù)、分布式同步塘娶、組服務(wù)等