返回頂部
關(guān)閉軟件導航
位置:首頁 > 資訊 > 電商資訊>10分鐘零基礎就可搞懂的Hadoop架構(gòu)原理阿里架構(gòu)師詳解
10分鐘零基礎就可搞懂的Hadoop架構(gòu)原理阿里架構(gòu)師詳解

我今天花了大半個下午的時間,寫了這篇hadoop的架構(gòu),全篇都是以大白話的形式,也算是為后面更加具體的每一部分開了個好頭吧,假如喜歡請點轉(zhuǎn)發(fā)和關(guān)注,假如有疑問,直接在評論里說出來,大家一起解決,才能進步。

Hadoop誕生于2006年,是一款支持數(shù)據(jù)密集型分布式應用并以Apache2.0許可協(xié)議發(fā)布的開源軟件框架。它支持在商品硬件構(gòu)建的大型集群上運行的應用程序。Hadoop是根據(jù)Google公司發(fā)表的MapReduce和Google檔案系統(tǒng)的論文自行實作而成。

Hadoop與Google一樣,都是小孩命名的,是一個虛構(gòu)的名字,沒有尤其的含義。從計算機專業(yè)的角度看,Hadoop是一個分布式系統(tǒng)基礎架構(gòu),由Apache基金會開發(fā)。Hadoop的主要目標是對分布式環(huán)境下的“大數(shù)據(jù)”以一種可靠、高效、可伸縮的方式處理。

Hadoop框架透明地為應用提供可靠性和數(shù)據(jù)移動。它實現(xiàn)了名為MapReduce的編程范式:應用程序被分割成許多小部分,而每個部分都能在集群中的任意節(jié)點上執(zhí)行或重新執(zhí)行。

Hadoop還提供了分布式文件系統(tǒng),用以存儲所有計算節(jié)點的數(shù)據(jù),這為整個集群帶來了非常高的帶寬。MapReduce和分布式文件系統(tǒng)的設計,使得整個框架能夠自動處理節(jié)點故障。它使應用程序與成千上萬的獨立計算的電腦和PB級的數(shù)據(jù)。

1.Hadoop的核心組件

分析:Hadoop的核心組件分為:HDFS(分布式文件系統(tǒng))、MapRuduce(分布式運算編程框架)、YARN(運算資源調(diào)度系統(tǒng))

2.HDFS的文件系統(tǒng)

HDFS

1.定義

整個Hadoop的體系結(jié)構(gòu)主要是通過HDFS(Hadoop分布式文件系統(tǒng))來實現(xiàn)對分布式存儲的底層支持,并通過MR來實現(xiàn)對分布式并行任務處理的程序支持。

HDFS是Hadoop體系中數(shù)據(jù)存儲治理的基礎。它是一個高度容錯的系統(tǒng),能檢測和應對硬件故障,用于在低成本的通用硬件上運行。HDFS簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問,提供高吞吐量應用程序數(shù)據(jù)訪問功能,適合帶有大型數(shù)據(jù)集的應用程序。

2.組成

HDFS采用主從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群是由一個NameNode和若干個DataNode組成的。NameNode作為主服務器,治理文件系統(tǒng)命名空間和客戶端對文件的訪問操作。DataNode治理存儲的數(shù)據(jù)。HDFS支持文件形式的數(shù)據(jù)。

從內(nèi)部來看,文件被分成若干個數(shù)據(jù)塊,這若干個數(shù)據(jù)塊存放在一組DataNode上。NameNode執(zhí)行文件系統(tǒng)的命名空間,如打開、關(guān)閉、重命名文件或目錄等,也負責數(shù)據(jù)塊到具體DataNode的映射。DataNode負責處理文件系統(tǒng)客戶端的文件讀寫,并在NameNode的統(tǒng)一調(diào)度下進行數(shù)據(jù)庫的創(chuàng)建、刪除和復制工作。NameNode是所有HDFS元數(shù)據(jù)的治理者,用戶數(shù)據(jù)永遠不會經(jīng)過NameNode。

分析:NameNode是治理者,DataNode是文件存儲者、Client是需要獲取分布式文件系統(tǒng)的應用程序。

MapReduce

1.定義

HadoopMapReduce是googleMapReduce克隆版。

MapReduce是一種計算模型,用以進行大數(shù)據(jù)量的計算。其中Map對數(shù)據(jù)集上的獨立元素進行指定的操作,生成鍵-值對形式中間結(jié)果。Reduce則對中間結(jié)果中相同“鍵”的所有“值”進行規(guī)約,以得到很終結(jié)果。MapReduce這樣的功能劃分,非常適合在大量計算機組成的分布式并行環(huán)境里進行數(shù)據(jù)處理。

2.組成

分析:

(1)JobTracker

JobTracker叫作業(yè)跟蹤器,運行到主節(jié)點(Namenode)上的一個很重要的進程,是MapReduce體系的調(diào)度器。用于處理作業(yè)(用戶提交的代碼)的后臺程序,決定有哪些文件參與作業(yè)的處理,然后把作業(yè)切割成為一個個的小task,并把它們分配到所需要的數(shù)據(jù)所在的子節(jié)點。

Hadoop的原則就是就近運行,數(shù)據(jù)和程序要在同一個物理節(jié)點里,數(shù)據(jù)在哪里,程序就跑去哪里運行。這個工作是JobTracker做的,監(jiān)控task,還會重啟失敗的task(于不同的節(jié)點),每個集群只有優(yōu)選一個JobTracker,類似單點的NameNode,位于Master節(jié)點

(2)TaskTracker

TaskTracker叫任務跟蹤器,MapReduce體系的很后一個后臺進程,位于每個slave節(jié)點上,與datanode結(jié)合(代碼與數(shù)據(jù)一起的原則),治理各自節(jié)點上的task(由jobtracker分配),

每個節(jié)點只有一個tasktracker,但一個tasktracker可以啟動多個JVM,運行MapTask和ReduceTask;并與JobTracker交互,匯報任務狀態(tài),

MapTask:解析每條數(shù)據(jù)記錄,傳遞給用戶編寫的map(),并執(zhí)行,將輸出結(jié)果寫入本地磁盤(假如為map-only作業(yè),直接寫入HDFS)。

ReducerTask:從MapTask的執(zhí)行結(jié)果中,遠程讀取輸入數(shù)據(jù),對數(shù)據(jù)進行排序,將數(shù)據(jù)按照分組傳遞給用戶編寫的reduce函數(shù)執(zhí)行。

Hive

1.定義

Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務進行運行。

Hive是建立在Hadoop上的數(shù)據(jù)倉庫基礎構(gòu)架。它提供了一系列的工具,可以用來進行數(shù)據(jù)提取轉(zhuǎn)化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。

Hive定義了簡單的類SQL查詢語言,稱為HQL,它答應熟悉SQL的用戶查詢數(shù)據(jù)。同時,這個語言也答應熟悉MapReduce開發(fā)者的開發(fā)自定義的mapper和reducer來處理內(nèi)建的mapper和reducer無法完成的復雜的分析工作。

2.組成

分析:Hive架構(gòu)包括:CLI(CommandLineInterface)、JDBC/ODBC、ThriftServer、WEBGUI、Metastore和Driver(Complier、Optimizer和Executor),這些組件分為兩大類:服務端組件和客戶端組件

3.客戶端與服務端組件

(1)客戶端組件:

CLI:CommandLineInterface,命令行接口。

Thrift客戶端:上面的架構(gòu)圖里沒有寫上Thrift客戶端,但是Hive架構(gòu)的許多客戶端接口是建立在Thrift客戶端之上,包括JDBC和ODBC接口。

WEBGUI:Hive客戶端提供了一種通過網(wǎng)頁的方式訪問Hive所提供的服務。這個接口對應Hive的HWI組件(HiveWebInterface),使用前要啟動HWI服務。

(2)服務端組件:

Driver組件:該組件包括Complier、Optimizer和Executor,它的作用是將HiveQL(類SQL)語句進行解析、編譯優(yōu)化,生成執(zhí)行計劃,然后調(diào)用底層的MapReduce計算框架

Metastore組件:元數(shù)據(jù)服務組件,這個組件存儲Hive的元數(shù)據(jù),Hive的元數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫里,Hive支持的關(guān)系數(shù)據(jù)庫有Derby和Mysql。元數(shù)據(jù)對于Hive十分重要,因此Hive支持把Metastore服務獨立出來,安裝到遠程的服務器集群里,從而解耦Hive服務和Metastore服務,保證Hive運行的健壯性;

Thrift服務:Thrift是Facebook開發(fā)的一個軟件框架,它用來進行可擴展且跨語言的服務的開發(fā),Hive集成了該服務,能讓不同的編程語言調(diào)用Hive的接口。

4.Hive與傳統(tǒng)數(shù)據(jù)庫的異同

(1)查詢語言

由于SQL被廣泛的應用在數(shù)據(jù)倉庫中,因此專門針對Hive的特性設計了類SQL的查詢語言HQL。熟悉SQL開發(fā)的開發(fā)者可以很方便的使用Hive進行開發(fā)。

(2)數(shù)據(jù)存儲位置

Hive是建立在Hadoop之上的,所有Hive的數(shù)據(jù)都是存儲在HDFS中的。而數(shù)據(jù)庫則可以將數(shù)據(jù)保存在塊設備或者本地文件系統(tǒng)中。

(3)數(shù)據(jù)格式

Hive中沒有定義專門的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)據(jù)格式需要指定三個屬性:列分隔符(通常為空格、””、”\\x001′)、行分隔符(”

”)以及讀取文件數(shù)據(jù)的方法(Hive中默認有三個文件格式TextFile,SequenceFile以及RCFile)。

(4)數(shù)據(jù)更新

由于Hive是針對數(shù)據(jù)倉庫應用設計的,而數(shù)據(jù)倉庫的內(nèi)容是讀多寫少的。因此,Hive中不支持

對數(shù)據(jù)的改寫和添加,所有的數(shù)據(jù)都是在加載的時候中確定好的。而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進行修改的,因此可以使用INSERTINTO…VALUES添加數(shù)據(jù),使用UPDATE…SET修改數(shù)據(jù)。

(5)索引

Hive在加載數(shù)據(jù)的過程中不會對數(shù)據(jù)進行任何處理,甚至不會對數(shù)據(jù)進行掃描,因此也沒有對數(shù)據(jù)中的某些Key建立索引。Hive要訪問數(shù)據(jù)中滿足條件的特定值時,需要暴力掃描整個數(shù)據(jù),因此訪問延遲較高。由于MapReduce的引入,Hive可以并行訪問數(shù)據(jù),因此即使沒有索引,對于大數(shù)據(jù)量的訪問,Hive仍然可以體現(xiàn)出優(yōu)勢。數(shù)據(jù)庫中,通常會針對一個或者幾個列建立索引,因此對于少量的特定條件的數(shù)據(jù)的訪問,數(shù)據(jù)庫可以有很高的效率,較低的延遲。由于數(shù)據(jù)的訪問延遲較高,決定了Hive不適合在線數(shù)據(jù)查詢。

(6)執(zhí)行

Hive中大多數(shù)查詢的執(zhí)行是通過Hadoop提供的MapReduce來實現(xiàn)的(類似select*fromtbl的查詢不需要MapReduce)。而數(shù)據(jù)庫通常有自己的執(zhí)行引擎。

(7)執(zhí)行延遲

Hive在查詢數(shù)據(jù)的時候,由于沒有索引,需要掃描整個表,因此延遲較高。另外一個導致Hive執(zhí)行延遲高的因素是MapReduce框架。由于MapReduce本身具有較高的延遲,因此在利用MapReduce執(zhí)行Hive查詢時,也會有較高的延遲。相對的,數(shù)據(jù)庫的執(zhí)行延遲較低。當然,這個低是有條件的,即數(shù)據(jù)規(guī)模較小,當數(shù)據(jù)規(guī)模大到超過數(shù)據(jù)庫的處理能力的時候,Hive的并行計算顯然能體現(xiàn)出優(yōu)勢。

(8)可擴展性

由于Hive是建立在Hadoop之上的,因此Hive的可擴展性是和Hadoop的可擴展性是一致的(世界上很大的Hadoop集群在Yahoo!,2009年的規(guī)模在4000臺節(jié)點左右)。而數(shù)據(jù)庫由于ACID語義的嚴格限制,擴展行非常有限。目前很先進的并行數(shù)據(jù)庫Oracle在理論上的擴展能力也只有100臺左右。

(9)數(shù)據(jù)規(guī)模

由于Hive建立在集群上并可以利用MapReduce進行并行計算,因此可以支持很大規(guī)模的數(shù)據(jù);對應的,數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小。

Hbase

1.定義

HBase–HadoopDatabase,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PCServer上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。

HBase是GoogleBigtable的開源實現(xiàn),類似GoogleBigtable利用GFS作為其文件存儲系統(tǒng),HBase利用HadoopHDFS作為其文件存儲系統(tǒng);

Google運行MapReduce來處理Bigtable中的海量數(shù)據(jù),HBase同樣利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù);

GoogleBigtable利用Chubby作為協(xié)同服務,HBase利用Zookeeper作為協(xié)同服務。

2.組成

10分鐘零基礎就可搞懂的Hadoop架構(gòu)原理阿里架構(gòu)師詳解1

分析:從上圖可以看出:Hbase主要由Client、Zookeeper、HMaster和HRegionServer組成,由Hstore作存儲系統(tǒng)。

HBaseClient使用HBase的RPC機制與HMaster和HRegionServer進行通信,對于治理類操作,Client與HMaster進行RPC;對于數(shù)據(jù)讀寫類操作,Client與HRegionServer進行RPC

ZookeeperQuorum中除了存儲了-ROOT-表的地址和HMaster的地址,HRegionServer也會把自己以Ephemeral方式注冊到Zookeeper中,使得HMaster可以隨時感知到各個HRegionServer的健康狀態(tài)。

HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的MasterElection機制保證總有一個Master運行,HMaster在功能上主要負責Table和Region的治理工作:

HStore存儲是HBase存儲的核心了,其中由兩部分組成,一部分是MemStore,一部分是StoreFiles。

MemStore是SortedMemoryBuffer,用戶寫入的數(shù)據(jù)首先會放入MemStore,當MemStore滿了以后會Flush成一個StoreFile(底層實現(xiàn)是HFile),當StoreFile文件數(shù)量增長到一定閾值,會觸發(fā)Compact合并操作,將多個StoreFiles合并成一個StoreFile,合并過程中會進行版本合并和數(shù)據(jù)刪除。

因此可以看出HBase其實只有增加數(shù)據(jù),所有的更新和刪除操作都是在后續(xù)的compact過程中進行的,這使得用戶的寫操作只要進入內(nèi)存中就可以立即返回,保證了HBaseI/O的高性能。

當StoreFilesCompact后,會逐步形成越來越大的StoreFile,當單個StoreFile大小超過一定閾值后,會觸發(fā)Split操作,同時把當前RegionSplit成2個Region,父Region會下線,新Split出的2個孩子Region會被HMaster分配到相應的HRegionServer上,使得原先1個Region的壓力得以分流到2個Region上。

1.回顧Hadoop的整體架構(gòu)

2.Hadoop的應用——流量查詢系統(tǒng)

(1)流量查詢系統(tǒng)總體框架

(2)流量查詢系統(tǒng)總體流程

(3)流量查詢系統(tǒng)數(shù)據(jù)預處理功能框架

(4)流量查詢系統(tǒng)數(shù)據(jù)預處理流程

(5)流量查詢NoSQL數(shù)據(jù)庫功能框架

(6)流量查詢服務功能框架

(7)實時流計算數(shù)據(jù)處理流程圖

本人才疏學淺,若有錯,請指出,謝謝!假如你有更好的建議,可以留言我們一起討論,共同進步!衷心的感謝您能耐心的讀完本文!

如果您覺得 10分鐘零基礎就可搞懂的Hadoop架構(gòu)原理阿里架構(gòu)師詳解 這篇文章對您有用,請分享給您的好友,謝謝
文章地址:http://www.meyanliao.com/article/online/9362.html
解放雙手無盡可能,有問題添加天線貓微信
主站蜘蛛池模板: 精品无码国产一区二区三区51安| 亚洲日韩国产AV无码无码精品| 国产精品无码久久久久久久久久| 亚洲av永久中文无码精品综合| 亚洲国产综合无码一区二区二三区| 亚洲精品无码成人片久久| 无码人妻丰满熟妇区BBBBXXXX | 精品亚洲AV无码一区二区三区| 久久久久亚洲AV无码去区首| 亚洲大尺度无码专区尤物| 国产成人综合日韩精品无码| 无码国产精品一区二区免费3p | 无码精品人妻一区二区三区中| 国内精品久久久久久无码不卡| 亚洲AV色吊丝无码| 曰韩精品无码一区二区三区| 国产精品无码久久综合网| 精品视频无码一区二区三区| 亚洲国产精品无码久久一区二区| 一本大道无码人妻精品专区| 亚洲av无码偷拍在线观看| 国产精品久久久久无码av| 无码视频在线观看| 午夜福利无码不卡在线观看| 精品无码人妻久久久久久| 亚洲成A∨人片天堂网无码| 妖精色AV无码国产在线看| 久久久久无码精品国产h动漫| 亚洲aⅴ天堂av天堂无码麻豆 | 亚洲精品GV天堂无码男同 | 少妇伦子伦精品无码STYLES| 国产爆乳无码一区二区麻豆| 超清无码一区二区三区| 国产免费黄色无码视频| 亚洲精品无码专区2| 亚洲中文字幕无码久久精品1| 国产日产欧洲无码视频无遮挡| 精品久久久久久无码国产| 国产日产欧洲无码视频| 国产品无码一区二区三区在线蜜桃| 精品久久久久久无码中文字幕|