1.Hadoop 體系
1.1 Google 大數(shù)據(jù)三大理論
1.1.1 Google FS
GFS 是一個可擴展的分布式文件系統(tǒng)仑扑,把原文件分割成很多塊的小文件玛瘸,以冗余的方式保存在不同節(jié)點上臼疫。在 GFS 下每個原文件都被分割成固定大小的 chunk池颈。GFS 由一個 master 和大量的 chunk server 組成凡涩。為了簡化處理流程和提高系統(tǒng)性能搂鲫,通過 master 來保存目錄和索引信息,從而產(chǎn)生了單點故障潜必。為了解決單點故障靴姿,允許一個 GFS 集群中有多個master。為了保證信息的可靠性磁滚,每個文件都會以 chunk 的方式備份在不同的 chunk server佛吓。
1.1.2 MapReduce
MapReduce 是一種并行編程模型,其核心思想是“分而治之”垂攘,將一個大規(guī)模的數(shù)據(jù)集切分成很多小的單獨的數(shù)據(jù)集维雇,然后放在多個機器上同時處理。
1.1.3 BigTable
Bigtable 是一種壓縮的晒他、高性能的吱型、高可擴展性的,基于 GFS 文件系統(tǒng)的數(shù)據(jù)存儲系統(tǒng)陨仅,用于存儲大規(guī)模結(jié)構(gòu)化數(shù)據(jù)津滞。Bigtable 是一個稀疏、分布式灼伤、持久化存儲的多維有序映射表触徐,其特點如下:
- Persistent:一個表是一個包含海量 Key-Value 鍵值對的 Map,數(shù)據(jù)是持久化存儲的狐赡;
- Distributed:這個大的 Map 需要支持多個分區(qū)來實現(xiàn)分布式撞鹉;
-
Multidimensional Sorted Map:這個 Map 按照 Row Key 進行排序,這個 Key 是一個由
{Row Key, Column Key, Timestamp}
組成的多維結(jié)構(gòu)猾警; - Sparse:每一行列的組成并不是嚴格的結(jié)構(gòu)孔祸,而是稀疏的隆敢,也就是說发皿,行與行可以由不同的列組成:
Row | Columns |
BigTable 的數(shù)據(jù)模型具體來說就是:Bigtable 的每一個鍵值對的 Key 都為 Row key + Column key + Timestamp 的結(jié)構(gòu),Value 則是字符串:(row:string, column:string,time:int64) -> string
舉一個具體的例子:比如拂蝎,一個存儲了大量網(wǎng)頁及其相關信息的表 Webtable穴墅,Webtable 使用 URL 作為行名,使用網(wǎng)頁的某些屬性作為列名,網(wǎng)頁的內(nèi)容存入 contents 列中玄货,并使用獲取該網(wǎng)頁的時間戳標識同一個網(wǎng)頁的不同版本皇钞。在 Bigtable 中,Webtable 的存儲范例如下圖所示:
1.2 Hadoop 體系
Hadoop 的起源與 Google 大數(shù)據(jù)三大理論息息相關松捉。HDFS 是基于 GFS 分布式文件系統(tǒng)實現(xiàn)的夹界,MapReduce、Spark 的核心是 MapReduce 并行編程模型隘世,而 HBase 也是基于 BigTable 實現(xiàn)的可柿。
Hadoop 有以下 4 個基本模塊:
- Hadoop 基本功能庫:支持其它 Hadoop 模塊的通用程序包,
- HDFS:一個分布式文件系統(tǒng)丙者,能夠以高吞吐量訪問應用的數(shù)據(jù)复斥。
- YARN:一個作業(yè)調(diào)度和資源管理框架。
- MapReduce:一個基于 YARN 的大數(shù)據(jù)并行處理程序械媒。
2.Hadoop 核心組件
2.1 HDFS
HDFS 是基于 GPS 設計思路來實現(xiàn)的目锭,把原文件分割成很多塊的小文件,以冗余的方式保存在不同節(jié)點上纷捞。HDFS 的 NameNode 負責記錄具體數(shù)據(jù)的元數(shù)據(jù)信息痢虹,而 DataNode 是真正的數(shù)據(jù)節(jié)點,其中 Secondary NameNode 主要作用是分擔主 NameNode 的一部分工作負載兰绣。NameNode 和 DataNode之間維持著心跳世分。如果 DataNode 不可用,會啟用副本復制缀辩。
2.2 Hbase
HBase 的核心思想是 BigTable臭埋,基于列式存儲的分布式數(shù)據(jù)庫。利用 HDFS 作為其文件存儲系統(tǒng)臀玄,底層采用 LSM Tree 數(shù)據(jù)結(jié)構(gòu)進行存儲瓢阴,因此寫入性能很強,讀取性能較差健无。
2.3 Yarn
Yarn 采用 Master/Slaver 架構(gòu)荣恐,其中 ResourceManager 為 Master,NodeManager 為 Slaver累贤,RM 負責對各個NM上的資源進行統(tǒng)一管理和調(diào)度叠穆。
2.4 MapReduce
MapReduce 的核心思想是“分而治之”,采用 Master/slave 結(jié)構(gòu)臼膏,按照編程規(guī)范編寫少量的業(yè)務邏輯代碼即可實現(xiàn)一個強大的海量數(shù)據(jù)并發(fā)處理程序硼被。MapReduce 把一個復雜的業(yè)務,任務分成若干個簡單的任務分發(fā)到網(wǎng)絡上的每個節(jié)點并行執(zhí)行渗磅,把 Map 階段的結(jié)果由 Reduce 進行匯總嚷硫,最終大大縮短了數(shù)據(jù)處理的時間開銷检访。