版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第九章大數(shù)據(jù)計算平臺大數(shù)據(jù)管理與應(yīng)用——主編:王剛副主編:劉婧、邵臻01大數(shù)據(jù)計算平臺概述02基于Hadoop的大數(shù)據(jù)計算平臺03基于Spark的大數(shù)據(jù)計算平臺大數(shù)據(jù)計算平臺大數(shù)據(jù)計算平臺是具有數(shù)據(jù)接入、數(shù)據(jù)存儲、數(shù)據(jù)分析與處理、數(shù)據(jù)查詢與檢索、數(shù)據(jù)挖掘和數(shù)據(jù)可視化等功能的一體化數(shù)據(jù)分析平臺。當(dāng)前,常見的大數(shù)據(jù)計算平臺有阿里云平臺、騰訊大數(shù)據(jù)平臺以及百度數(shù)智平臺等。完整的大數(shù)據(jù)計算平臺體系架構(gòu)有多個層級,具體如圖15-1所示。1.1大數(shù)據(jù)計算平臺概述圖15-1大數(shù)據(jù)平臺架構(gòu)體系圖大數(shù)據(jù)計算平臺平臺中各個層級之間相互融合,共同完成大數(shù)據(jù)的分析任務(wù)。大數(shù)據(jù)基礎(chǔ)設(shè)施:作為大數(shù)據(jù)平臺的底層,為上層提供必要的基礎(chǔ)設(shè)施支持,如網(wǎng)絡(luò)設(shè)備、存儲設(shè)備、云數(shù)據(jù)中心等,是大數(shù)據(jù)存儲、計算和交互展示的基礎(chǔ)支撐設(shè)施。數(shù)據(jù)源層與數(shù)據(jù)采集:數(shù)據(jù)采集是大數(shù)據(jù)價值挖掘中必不可少的一個部分,是一種把數(shù)據(jù)從數(shù)據(jù)源采集導(dǎo)入到數(shù)據(jù)平臺中的相關(guān)接口及技術(shù),數(shù)據(jù)采集根據(jù)采集的方式可以分為基于網(wǎng)絡(luò)信息的采集和基于物聯(lián)網(wǎng)傳感器的采集。數(shù)據(jù)存儲:一般是采用分布式文件和分布式數(shù)據(jù)庫的方式將數(shù)據(jù)存儲在大規(guī)模的節(jié)點中,可以對多種類型的數(shù)據(jù)進(jìn)行存儲,包括結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)以及半結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)分析與處理:主要功能是對數(shù)據(jù)進(jìn)行分析、查詢、統(tǒng)計、預(yù)測、挖掘等相關(guān)的分析與處理操作。數(shù)據(jù)交互展示:主要是將分析與處理的數(shù)據(jù)以最優(yōu)的交互方式展現(xiàn)出來。通過形象的可視化方式將分析的結(jié)果展現(xiàn)出來,便于使用者的理解和使用,從而為后續(xù)的決策和預(yù)測提供有效的支撐。大數(shù)據(jù)應(yīng)用:將數(shù)據(jù)及處理的結(jié)果落地到實處,支撐在不同領(lǐng)域展開的應(yīng)用,如醫(yī)療、金融以及制造業(yè)等。1.1大數(shù)據(jù)計算平臺概述大數(shù)據(jù)計算平臺大數(shù)據(jù)計算模式,是指根據(jù)大數(shù)據(jù)的不同數(shù)據(jù)特征和計算特征,從多樣性的大數(shù)據(jù)計算問題和需求中提煉并建立的各種高層抽象和模型。傳統(tǒng)的并行計算方法主要從體系結(jié)構(gòu)和編程語言的層面定義一些較為底層的抽象和模型,但由于大數(shù)據(jù)處理問題具有很多高層的數(shù)據(jù)特征和計算特征,因此大數(shù)據(jù)處理需要更多地結(jié)合其數(shù)據(jù)特征和計算特征考慮更為高層的計算模式。根據(jù)大數(shù)據(jù)處理多樣性的需求,出現(xiàn)了各種典型的大數(shù)據(jù)計算模式,并出現(xiàn)了與之相對應(yīng)的大數(shù)據(jù)計算系統(tǒng)和工具。1.1大數(shù)據(jù)計算平臺概述大數(shù)據(jù)計算模式典型系統(tǒng)和工具大數(shù)據(jù)查詢分析計算HBase,Hive,Cassandra,Impala,Redis等批處理計算MapReduce,Spark等流式計算Scribe,F(xiàn)lume,Storm,S4,Apex等迭代計算HaLoop,iMapReduce,Twister,Spark等圖計算Pregel,Giraph,GraphX等內(nèi)存計算Dremel,Hana,Redis等表15-1大數(shù)據(jù)計算模式及典型系統(tǒng)和工具大數(shù)據(jù)計算平臺從信息系統(tǒng)的角度來看,大數(shù)據(jù)處理是涉及軟硬件系統(tǒng)各個層面的綜合信息處理技術(shù)。從信息系統(tǒng)角度可以將大數(shù)據(jù)處理分為基礎(chǔ)層、系統(tǒng)層、算法層以及應(yīng)用層,表15-2所列是從信息處理系統(tǒng)角度所看到的大數(shù)據(jù)技術(shù)的主要技術(shù)層面和技術(shù)內(nèi)容。1.1大數(shù)據(jù)計算平臺概述表15-1大數(shù)據(jù)計算模式及典型系統(tǒng)和工具應(yīng)用層大數(shù)據(jù)行業(yè)應(yīng)用/服務(wù)層電信/公安/商業(yè)/金融/勘探/教育等領(lǐng)域應(yīng)用/服務(wù)需求和計算模型等應(yīng)用開發(fā)層分析工具/開發(fā)環(huán)境和工具/行業(yè)應(yīng)用系統(tǒng)開發(fā)等算法層應(yīng)用算法層社交網(wǎng)絡(luò)、排名與推薦、商業(yè)智能,自然語言處理,大數(shù)據(jù)分析與可視化計算等基礎(chǔ)算法層并行化機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘算法等系統(tǒng)層并行編程模型與計算框架層并行計算模型與系統(tǒng)批處理計算,流式計算,圖計算,迭代計算,內(nèi)存計算等大數(shù)據(jù)存儲管理大數(shù)據(jù)查詢/大數(shù)據(jù)存儲/大數(shù)據(jù)采集與數(shù)據(jù)預(yù)處理等基礎(chǔ)層并行構(gòu)架和資源平臺層集群,眾核,GPU,混合式架構(gòu)云計算資源與支撐平臺等大數(shù)據(jù)計算平臺云計算是由分布式計算、并行處理、網(wǎng)格計算發(fā)展來的,是一種新興的商業(yè)計算模型。云計算包含狹義和廣義兩個層面,其中,狹義的云計算是指廠商通過分布式計算和虛擬化技術(shù)搭建數(shù)據(jù)中心或超級計算機(jī),向技術(shù)開發(fā)者或企業(yè)客戶提供數(shù)據(jù)存儲、分析以及科學(xué)計算等服務(wù)。而廣義的云計算則是指廠商通過建立網(wǎng)絡(luò)服務(wù)器集群,向各種不同類型客戶提供在線軟件服務(wù)、硬件租借、數(shù)據(jù)存儲、計算分析等不同類型的服務(wù)。云計算和大數(shù)據(jù)是現(xiàn)在企業(yè)走向數(shù)字化運(yùn)營的兩個核心,多數(shù)企業(yè)的目標(biāo)是將兩種技術(shù)結(jié)合起來以獲取更多的商業(yè)利益。二者都關(guān)注對資源的調(diào)度,一般來說,大數(shù)據(jù)在處理過程中涉及到的數(shù)據(jù)采集、傳輸、存儲、處理和分析等多種技術(shù)可以基于云計算平臺來完成,同時也可以作為一種云計算的服務(wù)提供大數(shù)據(jù)分析的服務(wù)。云計算和大數(shù)據(jù)之間具有相輔相成的關(guān)系,云計算作為大數(shù)據(jù)應(yīng)用計算資源的底層,支撐著上層的大數(shù)據(jù)處理,而大數(shù)據(jù)則是在云計算平臺之上的進(jìn)一步應(yīng)用。1.1大數(shù)據(jù)計算平臺概述大數(shù)據(jù)計算平臺云計算主要有以下幾個特點:按需提供服務(wù):以服務(wù)的形式為用戶提供應(yīng)用程序、數(shù)據(jù)存儲、基礎(chǔ)設(shè)施等資源,并可以根據(jù)用戶需求自動分配資源,而不需要管理員的干預(yù)。寬帶網(wǎng)絡(luò)訪問:用戶可以通過各種終端設(shè)備,比如智能手機(jī)、筆記本電腦、PC等,隨時隨地通過互聯(lián)網(wǎng)訪問云計算服務(wù)。資源池化:資源以共享池的方式統(tǒng)一管理。通過虛擬化技術(shù),將資源分享給不同的用戶,而資源的存放、管理以及分配策略對用戶是透明的。高可伸縮性:服務(wù)的規(guī)??梢钥焖偕炜s,來自動適應(yīng)業(yè)務(wù)負(fù)載的變化。可量化服務(wù):云計算服務(wù)中心可以通過監(jiān)控軟件監(jiān)控用戶的使用情況,從而根據(jù)資源的使用情況對提供的服務(wù)進(jìn)行計費。大規(guī)模:承載云計算的集群規(guī)模非常巨大,一般達(dá)到數(shù)萬臺服務(wù)器以上。從集群規(guī)模來看,云計算賦予了用戶前所未有的計算能力。服務(wù)非常廉價:云服務(wù)可以采用非常廉價的PCServer來構(gòu)建,而不需要非常昂貴的小型機(jī)。另外云服務(wù)的公用性和通用性,極大地提升了資源利用率,從而大幅降低使用成本。1.1大數(shù)據(jù)計算平臺概述大數(shù)據(jù)計算平臺架構(gòu)針對集群環(huán)境出現(xiàn)了大量的大數(shù)據(jù)編程框架。首先要提到的就是Google的MapReduce,它給我們展示了一個簡單通用和自動容錯的批處理計算模型。但是對于其他類型的計算,比如交互式和流式計算,MapReduce并不適合,這也導(dǎo)致了大量的不同于MapReduce的專有的數(shù)據(jù)處理模型的出現(xiàn),比如Storm、Impala和GraphLab。隨著專有的數(shù)據(jù)處理模型的不斷出現(xiàn),對于大數(shù)據(jù)處理而言,我們應(yīng)對不同類型的作業(yè)需要一系列不同的處理框架可以很好地完成。但是這些專有系統(tǒng)也有一些不足,主要包括以下五點:重復(fù)工作組合問題適用范圍的局限性資源分配管理問題1.1大數(shù)據(jù)計算平臺概述大數(shù)據(jù)計算平臺架構(gòu)2004年前后,Google先后發(fā)表了三篇論文分別介紹了谷歌文件系統(tǒng)(GFS)、并行計算模型MapReduce和非關(guān)系數(shù)據(jù)存儲系統(tǒng)BigTable,并且第一次提出了針對大數(shù)據(jù)分布式處理的可重用方案。在Google論文的啟發(fā)下,Yahoo的工程師DougCutting和MikeCafarella開發(fā)了Hadoop。后續(xù)研究人員在借鑒和改進(jìn)Hadoop的基礎(chǔ)上,又先后誕生了數(shù)十種應(yīng)用于分布式環(huán)境的大數(shù)據(jù)計算框架。其中最具有代表性的是批處理計算框架、流計算框架和交互式計算框架。1.1大數(shù)據(jù)計算平臺概述圖15-2大數(shù)據(jù)計算框架全景圖Hadoop概述Hadoop是基于Google的MapReduce、GFS和BigTable等核心技術(shù)的開源實現(xiàn),由Apache軟件基金會支持,以分布式文件系統(tǒng)HDFS和MapReduce為核心,以及其他Hadoop的子項目的通用工具組成的分布式計算系統(tǒng),主要用于海量數(shù)據(jù)高效的存儲、管理和分析。經(jīng)過不斷的發(fā)展,Hadoop已經(jīng)有了三個大的版本,包括Hadoop1.0、Hadoop2.0和Hadoop3.0。其發(fā)展流程如圖15-3所示。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-3Hadoop發(fā)展歷史分布式文件系統(tǒng)HDFSHDFS是基于Google發(fā)布的GFS論文設(shè)計開發(fā)的,是Hadoop技術(shù)框架中的分布式文件系統(tǒng),對部署在多臺獨立物理機(jī)器上的文件進(jìn)行管理。HDFS采用Master/Slave架構(gòu)。一個HDFS集群是由一個NameNode和一定數(shù)目的DataNodes組成。NameNode作為中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的名字空間(Namespace)以及控制客戶端對文件的訪問。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在HDFS上存儲數(shù)據(jù)。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-4HDFS整體架構(gòu)分布式文件系統(tǒng)HDFSHDFS讀取數(shù)據(jù)流程:客戶端在讀取HDFS上存儲的數(shù)據(jù)時,首先,業(yè)務(wù)應(yīng)用調(diào)用HDFSClient提供的API打開文件,HDFSClient聯(lián)系NameNode,獲取到文件信息(數(shù)據(jù)塊、DataNode位置信息)。之后,業(yè)務(wù)應(yīng)用調(diào)用數(shù)據(jù)讀取API讀取文件。HDFSClient根據(jù)從NameNode獲取到的信息,聯(lián)系DataNode,根據(jù)就近的原則,獲取相應(yīng)的數(shù)據(jù)塊,HDFSClient會與多個DataNode通訊獲取數(shù)據(jù)塊。數(shù)據(jù)讀取完成后,業(yè)務(wù)調(diào)用關(guān)閉方法關(guān)閉連接。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-5數(shù)據(jù)讀取流程分布式文件系統(tǒng)HDFSHDFS寫入數(shù)據(jù)流程:首先,業(yè)務(wù)應(yīng)用調(diào)用HDFSClient提供的API,請求寫入文件。之后,HDFSClient聯(lián)系NameNode,NameNode在元數(shù)據(jù)中創(chuàng)建文件節(jié)點,再由業(yè)務(wù)應(yīng)用調(diào)用寫入的API寫入文件。HDFSClient收到業(yè)務(wù)數(shù)據(jù)后,從NameNode獲取到數(shù)據(jù)塊編號、位置信息后,聯(lián)系DataNode,并將需要寫入數(shù)據(jù)的DataNode建立起流水線。完成后,客戶端再通過自有協(xié)議寫入數(shù)據(jù)。寫完的數(shù)據(jù),將返回確認(rèn)信息給HDFSClient。最后,業(yè)務(wù)調(diào)用關(guān)閉方法。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-6數(shù)據(jù)寫入流程分布式計算框架MapReduceMapReduce源于Google發(fā)表于2004年的MapReduce論文,HadoopMapReduce是GoogleMapReduce的開源版本。MapReduce實現(xiàn)了Map和Reduce兩個功能:其中Map是對數(shù)據(jù)集上的獨立元素進(jìn)行指定的操作,生成鍵-值對形式的中間結(jié)果;Reduce則對中間結(jié)果中相同“鍵”的所有“值”進(jìn)行規(guī)約(分類和歸納),以得到最終結(jié)果。簡單來說,MapReduce是一種思想,或一種編程模型。對于Hadoop來說,MapReduce則是一個分布式計算框架,是它的一個基礎(chǔ)組件,當(dāng)配置好Hadoop集群時,MapReduce已然包含在內(nèi)。MapReduce的基本思想是分而治之。所謂分而治之,就是將原始問題不斷地分解為較容易解決的多個小問題,每個小問題得到結(jié)果后不斷地向上一層進(jìn)行歸并,直到得到最終的結(jié)果。1.2基于Hadoop的大數(shù)據(jù)計算平臺分布式計算框架MapReduceMapReduce在大數(shù)據(jù)處理方面相比于以往的分布式處理框架有著眾多的優(yōu)點:易于編程開發(fā)和運(yùn)行:基于MapReduce進(jìn)行大數(shù)據(jù)的分布式處理時,只需要實現(xiàn)它API中的Map方法和Reduce方法即可。具有良好的擴(kuò)展性:只要增加機(jī)器,整個架構(gòu)對大數(shù)據(jù)處理的性能就會提升,這使得每增加一臺服務(wù)器,就能將差不多的計算能力接入到集群中。有高容錯性:計算時,MapReduce會選擇就近的數(shù)據(jù)副本來處理。當(dāng)前在計算的任務(wù),如果掛掉了,會自動轉(zhuǎn)移到其他的節(jié)點去運(yùn)行。海量數(shù)據(jù)的離線處理:當(dāng)需要處理的數(shù)據(jù)量增加時,只需要增加節(jié)點數(shù)量,便能夠?qū)?shù)據(jù)進(jìn)行處理,提高數(shù)據(jù)的處理能力。MapReduce在對數(shù)據(jù)的處理中存在的一些問題:不適合實時計算不適合流式計算1.2基于Hadoop的大數(shù)據(jù)計算平臺分布式計算框架MapReduceMapReduce在進(jìn)行數(shù)據(jù)處理時,一般要經(jīng)過五個步驟,包括數(shù)據(jù)分片、Map、Shuffle、Reduce和文件寫入,其過程如圖15-7所示。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-7MapReduce計算框架分布式計算框架MapReduce數(shù)據(jù)分片:MapReduce第一個部分是把HDFS的數(shù)據(jù)切成許多數(shù)據(jù)切片,每一數(shù)據(jù)切片都會有一個映射線程去執(zhí)行,如果有多個數(shù)據(jù)切片會由多個線程并發(fā)同時執(zhí)行。映射:映射任務(wù)處理的數(shù)據(jù)是切片,每一片的大小相等,所以映射任務(wù)的輸入數(shù)據(jù)端不會出現(xiàn)數(shù)據(jù)傾斜的問題。洗牌:洗牌是介于映射和歸約兩個階段的一個中間步驟,能夠把映射任務(wù)的輸出結(jié)果按照一定的鍵值重新切分并組合,將鍵值符合某種范圍的輸出結(jié)果送到特定的歸約任務(wù)。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-8洗牌過程分布式計算框架MapReduce歸約:歸約任務(wù)的輸入數(shù)據(jù)是經(jīng)過映射任務(wù)處理后,再經(jīng)過洗牌階段分發(fā)之后數(shù)據(jù)的拷貝。具體拷貝的數(shù)據(jù)由分區(qū)的結(jié)果來決定,只拷貝分給對應(yīng)的歸約任務(wù)的數(shù)據(jù)。分區(qū)是按照歸約去模后的值進(jìn)行分區(qū)的,分區(qū)以后的數(shù)據(jù)再拷貝到歸約所在的機(jī)器上,同時進(jìn)行合并,便于下一步歸約任務(wù)進(jìn)行處理。文件寫入:當(dāng)Reduce處理完成后,將數(shù)據(jù)寫入到HDFS中,需要注意的是寫入的文件不能與已經(jīng)存在的文件重名。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-9規(guī)約過程資源管理框架YarnApacheHadoopYARN(YetAnotherResourceNegotiator)是一種新的Hadoop資源管理器,它是一個通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,在Hadoop2.0版本中被引入。它將資源管理和處理組件分開,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。相比較而言,MapReduce則是YARN的一個特例,YARN則是MapReduce的一個更加通用和高級的框架形式,并在其上增加了更多的功能。YARN組件資源管理器應(yīng)用程序主機(jī)節(jié)點管理器容器1.2基于Hadoop的大數(shù)據(jù)計算平臺資源管理框架Yarn當(dāng)用戶向YARN中提交一個應(yīng)用程序后,YARN將分兩個階段運(yùn)行該應(yīng)用程序:第一個階段是啟動應(yīng)用程序主機(jī);第二個階段是由應(yīng)用程序主機(jī)創(chuàng)建應(yīng)用程序,為應(yīng)用申請資源,并監(jiān)控它的整個運(yùn)行過程,直到運(yùn)行完成,如圖15-10所示。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-10YARN的工作流程分布式數(shù)據(jù)庫HBaseHBase是一個高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。與傳統(tǒng)關(guān)系型數(shù)據(jù)庫相比,HBase具有很多與眾不同的特性:在數(shù)據(jù)類型方面:關(guān)系數(shù)據(jù)庫采用關(guān)系模型,包含豐富的數(shù)據(jù)類型和存儲方式,HBase則采用了更加簡單的數(shù)據(jù)模型,將所有的數(shù)據(jù)都存儲為未經(jīng)解釋的字符串。在數(shù)據(jù)操作方面:關(guān)系數(shù)據(jù)庫中包含了豐富的操作,其中會涉及復(fù)雜的多表連接,HBase在設(shè)計時避免了復(fù)雜的表之間的關(guān)系,只包括簡單的插入、查詢、刪除等。在存儲模式方面:關(guān)系數(shù)據(jù)庫是基于行模式存儲的,而HBase是基于列存儲的。在數(shù)據(jù)索引方面:關(guān)系數(shù)據(jù)庫通??梢酝ㄟ^構(gòu)建索引來提高數(shù)據(jù)查詢的性能,而HBase只有一個行鍵作為索引,但是HBase中所有的數(shù)據(jù)查詢方法都進(jìn)行了優(yōu)化,從而使得整個查詢過程不會慢下來。在數(shù)據(jù)維護(hù)方面:在HBase中執(zhí)行更新操作時,由于HDFS的機(jī)制無法進(jìn)行刪除操作,而是生成一個新的版本,舊有的版本仍然保留。在可伸縮性方面:HBase作為分布式的數(shù)據(jù)庫在擴(kuò)展性方面十分方便。1.2基于Hadoop的大數(shù)據(jù)計算平臺分布式數(shù)據(jù)庫HBaseHBase是一個稀疏、具有多維度并且有序的映射表,這張表的索引是行鍵、列族、列限定符和時間戳面向列的存儲。其具體概念如下:表:HBase使用表來組織數(shù)據(jù),每個表由行和列組成,列又具體劃分為若干個列族。行:每個數(shù)據(jù)表都由若干行組成,每個行由不重復(fù)的行鍵來標(biāo)識。列族:每個HBase表為了便于理解,根據(jù)不同列的內(nèi)容被分組成許多“列族”(ColumnFamily)的集合,是HBase基本的訪問控制單元,在創(chuàng)建表的時候就需要指定。列限定符:具體到列族,每個列族里的數(shù)據(jù)通過列限定符來定位。單元格:在HBase表中,通過行、列族和列限定符可以唯一確定一個“單元格”(Cell)。時間戳:由于HDFS的機(jī)制,每個單元格都保存著同一份數(shù)據(jù)的多個版本,這些版本采用時間戳進(jìn)行索引,時間戳?xí)詣由?。通過行鍵、列族、列限定符和時間戳能夠確定一個單元格,因此,可以將每個數(shù)據(jù)的索引視為一個“四維坐標(biāo)”,由行鍵,列族,列限定符,時間戳組成。1.2基于Hadoop的大數(shù)據(jù)計算平臺分布式數(shù)據(jù)庫HBaseHBase中的每個表包含的行數(shù)很大,難以將所有的數(shù)據(jù)存儲到一臺機(jī)器上,需要根據(jù)行鍵的值對表進(jìn)行分區(qū),分配到不同的機(jī)器中,每個行區(qū)間構(gòu)成一個分區(qū),被稱為Region。在開始只有一個Region,隨著數(shù)據(jù)不斷涌入,Region持續(xù)增大,當(dāng)一個Region的行數(shù)達(dá)到設(shè)定的閾值時,就會自動分裂,之后在數(shù)據(jù)增加過程中也會不斷分裂。一個HBase表被劃分成多個Region,但同一個Region不會被分拆到多個Region服務(wù)器。受限于硬件,每個Region服務(wù)器存儲10-1000個Region,如圖15-11所示。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-11Region分裂原理分布式數(shù)據(jù)庫HBaseHBase在具體執(zhí)行時,主要包含以下步驟:預(yù)寫日志:HBase中的預(yù)寫日志機(jī)制最重要的作用是當(dāng)出現(xiàn)軟件突然崩潰時進(jìn)行恢復(fù),記錄所有的數(shù)據(jù)改動。Region定位:用戶在訪問數(shù)據(jù)之前需要首先訪問Zookeeper,然后訪問-ROOT-表,接著訪問.META.表,層層搜索,最終找到數(shù)據(jù)所在的位置,整個查詢過程可能需要多次進(jìn)行網(wǎng)絡(luò)請求。-ROOT-只有一個Region,具體信息如表15-4所示。1.2基于Hadoop的大數(shù)據(jù)計算平臺層次名稱作用第一層Zookeeper文件記錄了-ROOT-表的位置信息件。第二層-ROOT-表記錄了.META.表的Region位置信息-ROOT-表只能有一個Region。通過-ROOT-表,就可以訪問.META.表中的數(shù)據(jù)。第三層.META.表記錄了用戶數(shù)據(jù)表的Region位置信息,.META.表可以有多個Region,保存了HBase中所有用戶數(shù)據(jù)表的Region位置信息。表15-4Region層次結(jié)構(gòu)分布式數(shù)據(jù)庫HBaseHBase在具體執(zhí)行時,主要包含以下步驟:寫入流程:首先在客戶端會生成批量操作請求,然后將這些請求發(fā)送到機(jī)器集群進(jìn)行處理。機(jī)器集群會根據(jù)元數(shù)據(jù)信息表查詢Region所在的機(jī)器,接著客戶端可以與目標(biāo)機(jī)器進(jìn)行通訊。在服務(wù)端,收到客戶端發(fā)送的請求之后,會首先對請求的Region進(jìn)行檢查,然后按照獲取行鎖、Region更新共享鎖,寫入事務(wù)、寫入緩存、寫入AppendHlog、釋放行鎖和Region共享鎖、同步日志到HDFS、結(jié)束事務(wù)、刷新數(shù)據(jù)到磁盤這一過程完成數(shù)據(jù)的寫入。查詢流程:在客戶端,首先會訪問Zookeeper集群,找到META表的位置,接著訪問META表所在的ReginServer,將META表加載到本地內(nèi)存中,查找需要查詢的數(shù)據(jù)所在的Region。最后,客戶端直接與Region所在的主機(jī)進(jìn)行通信準(zhǔn)備查詢數(shù)據(jù)。在服務(wù)端,接收到來自客戶端的查詢請求后,首先會查詢對應(yīng)數(shù)據(jù)的列鍵所對應(yīng)的Region,接著從緩存中查詢是否已有緩存的結(jié)果,如果查詢到就直接返回,如果沒有查詢到則會讀取Region主機(jī)相應(yīng)的Hfile,迭代地進(jìn)行數(shù)據(jù)的查詢。1.2基于Hadoop的大數(shù)據(jù)計算平臺數(shù)據(jù)倉庫HiveHive是一個基于Hadoop的數(shù)據(jù)倉庫,用來處理結(jié)構(gòu)化數(shù)據(jù),可以通過類SQL的語言對存儲在HDFS上的數(shù)據(jù)進(jìn)行存儲、分析和查詢。Hive作為基于Hadoop的數(shù)據(jù)倉庫,在設(shè)計的時候遵循三個準(zhǔn)則:內(nèi)部表和外部表:在Hive中創(chuàng)建的普通表都可稱作“內(nèi)部表”,其可以由Hive進(jìn)行數(shù)據(jù)的生命周期的控制。外部表不需要將數(shù)據(jù)復(fù)制到Hive中,一旦關(guān)聯(lián)上數(shù)據(jù)格式和數(shù)據(jù)位置,Hive就能直接訪問外部數(shù)據(jù),非常靈活方便,即插即用。分區(qū)和分桶:對于數(shù)據(jù)量很大的大型數(shù)據(jù)處理系統(tǒng)而言,將數(shù)據(jù)進(jìn)行分區(qū)的功能是非常重要的。分區(qū)的優(yōu)勢在于利用維度分割數(shù)據(jù)。在根據(jù)分區(qū)維度進(jìn)行查詢時,Hive只需要加載相應(yīng)維度的數(shù)據(jù),可以極大縮短數(shù)據(jù)加載時間。但是,并非所有數(shù)據(jù)集都能形成合理的分區(qū),特別是需要在防止數(shù)據(jù)傾斜的前提下合理地劃分?jǐn)?shù)據(jù)。對數(shù)據(jù)表中的名稱做分桶,將名稱按哈希值分發(fā)到不同的桶中,能夠有效地解決數(shù)據(jù)傾斜的問題。同時因為桶的數(shù)量固定,所以也能有效緩解數(shù)據(jù)波動的問題。序列化/反序列化:序列化/反序列化的作用是將一條非結(jié)構(gòu)化字節(jié)轉(zhuǎn)化成Hive可以使用的一條記錄。Serdeproperties是Hive中內(nèi)置的序列化/反序列化工具。1.2基于Hadoop的大數(shù)據(jù)計算平臺數(shù)據(jù)倉庫HiveHive的體系架構(gòu):Hive能夠直接處理用戶輸入的HiveSQL語句,但是與標(biāo)準(zhǔn)的SQL語句有些許不同,然后調(diào)用MapReduce計算框架完成數(shù)據(jù)分析操作。具體包含的組件和其關(guān)系架構(gòu)圖如圖15-12所示??蛻舳耍嚎蛻舳酥饕N:CLI接口、JDBC/ODBC客戶端和Web接口。其中,CLI通過命令行直接連接Hive,JDBC/ODBC客戶端借助于Thrift服務(wù)與Hive進(jìn)行交互,Web接口則是訪問由Hive創(chuàng)建的網(wǎng)絡(luò)頁面進(jìn)行各種操作。1.2基于Hadoop的大數(shù)據(jù)計算平臺圖15-12Hive架構(gòu)數(shù)據(jù)倉庫HiveHive的體系架構(gòu):Hive能夠直接處理用戶輸入的HiveSQL語句,但是與標(biāo)準(zhǔn)的SQL語句有些許不同,然后調(diào)用MapReduce計算框架完成數(shù)據(jù)分析操作。具體包含的組件和其關(guān)系架構(gòu)圖如圖15-12所示。Thrift服務(wù)器:Thrift提供了一種跨語言的Socket通信,可以使用多種語言,包括C++、Java、PHP、Python和Ruby,借助于Thrift進(jìn)行Hive的相關(guān)操作。Hive驅(qū)動:Hive驅(qū)動是Hive的核心,由以下四個部分組成:用于將HQL轉(zhuǎn)換為語法數(shù)的解釋器,將語法樹編譯為邏輯執(zhí)行計劃的編譯器,對邏輯執(zhí)行計劃進(jìn)行優(yōu)化的優(yōu)化器以及調(diào)用底層框架執(zhí)行邏輯執(zhí)行計劃的執(zhí)行器。元數(shù)據(jù):元數(shù)據(jù)中包含了Hive的基礎(chǔ)信息,而實際的數(shù)據(jù)則存儲在HDFS中。存儲的元數(shù)據(jù)包括:數(shù)據(jù)庫的信息、表名、表中的列以及分區(qū)屬性等,常用來存儲元數(shù)據(jù)的數(shù)據(jù)庫包括Hive內(nèi)置的Derby和Mysql。Hadoop:Hadoop主要用來存儲Hive中的數(shù)據(jù)文件,Hive中對數(shù)據(jù)的操作大多都是轉(zhuǎn)換成MapReduce作業(yè),在Hadoop上執(zhí)行完成的。1.2基于Hadoop的大數(shù)據(jù)計算平臺數(shù)據(jù)倉庫HiveHive的運(yùn)行流程第一步:執(zhí)行查詢操作,使用命令行或WebUI之類的Hive接口將查詢發(fā)送給驅(qū)動器(任何數(shù)據(jù)庫驅(qū)動程序,如JDBC,ODBC等)執(zhí)行。第二步:獲取計劃任務(wù),驅(qū)動器借助查詢編譯器解析查詢,檢查語法和查詢計劃或查詢需求。第三步:獲取元數(shù)據(jù)信息,編譯器將元數(shù)據(jù)請求發(fā)送到Metastore(任何數(shù)據(jù)庫)。第四步:發(fā)送元數(shù)據(jù),MetaStore將元數(shù)據(jù)作為對編譯器的響應(yīng)發(fā)送出去。第五步:發(fā)送計劃任務(wù),編譯器檢查需求并將計劃重新發(fā)送給驅(qū)動器,完成查詢語句的解析和編譯。第六步:執(zhí)行計劃任務(wù),驅(qū)動器將執(zhí)行計劃發(fā)送到執(zhí)行引擎。第七步:執(zhí)行Job任務(wù),在內(nèi)部,執(zhí)行任務(wù)的過程是MapReduce任務(wù)。第八步:拉取結(jié)果集,執(zhí)行引擎將從DataNode上獲取結(jié)果集。第九步:發(fā)送結(jié)果集到驅(qū)動器,執(zhí)行引擎將這些結(jié)果值發(fā)送給驅(qū)動器;最后驅(qū)動器將結(jié)果發(fā)送至用戶使用接口,將結(jié)果發(fā)送到Hive接口。1.2基于Hadoop的大數(shù)據(jù)計算平臺Spark概述ApacheSpark是一種快速、通用、可擴(kuò)展的大數(shù)據(jù)分析引擎,主要基于Scala語言進(jìn)行開發(fā)。它是不斷壯大的大數(shù)據(jù)分析解決方案家族中備受關(guān)注的明星成員,為分布式數(shù)據(jù)集的處理提供了一個有效框架,并以高效的方式處理分布式數(shù)據(jù)集。1.3基于Spark的大數(shù)據(jù)計算平臺圖15-13Spark發(fā)展史Spark概述SparkCore是Spark的核心組件,除此之外還有用于存儲數(shù)據(jù)的HDFS、AmazonS3、HBase以及NoSQL等持久層和以MESS、YARN和自身攜帶的Standalone為資源管理器調(diào)度Job完成Spark應(yīng)用程序的計算。這些應(yīng)用程序可以來自于不同的組件,如SparkShell/SparkSubmit的批處理、SparkStreaming的實時處理應(yīng)用、SparkSQL的即席查詢、BlinkDB的權(quán)衡查詢、MLlib的機(jī)器學(xué)習(xí)、GraphX的圖處理和SparkR的數(shù)學(xué)計算等。Spark整體的生態(tài)系統(tǒng)圖如圖15-14所示。1.3基于Spark的大數(shù)據(jù)計算平臺圖15-14Spark生態(tài)圈Spark概述Spark整體的生態(tài)系統(tǒng)圖:SparkCore:SparkCore是整個伯克利數(shù)據(jù)分析棧(BerkeleyDataAnalyticsStack,BDAS)生態(tài)系統(tǒng)的核心組件,提供了基于有向無環(huán)圖(DirectedAcyclicGraph,DAG)的分布式并行計算框架,并提供緩存機(jī)制來支持多次迭代計算或者數(shù)據(jù)共享,大大減少了迭代計算之間讀取數(shù)據(jù)的開銷,這對于需要進(jìn)行多次迭代的數(shù)據(jù)挖掘和分析性能有很大提升。SparkStreaming:SparkStreaming是一個對實時數(shù)據(jù)流進(jìn)行高通量、容錯處理的流式處理系統(tǒng),可以對多種數(shù)據(jù)源(如Kafka、Flume、Twitter和TCP套接字)進(jìn)行類似Map、Reduce和Join等復(fù)雜操作,并將結(jié)果保存到外部文件系統(tǒng)、數(shù)據(jù)庫或應(yīng)用到實時儀表盤。SparkSQL:SaprkSQL允許用戶直接對RDD進(jìn)行處理,同時也可以查詢ApacheHive上存儲的外部數(shù)據(jù)。Mllib:MLlib是Spark生態(tài)中的機(jī)器學(xué)習(xí)組件,可以讓用戶方便地將機(jī)器學(xué)習(xí)和大數(shù)據(jù)計算結(jié)合起來。GraphX:GraphX是Spark中用于圖和圖并行計算部分,是GraphLab和Pregel在Spark框架下的重寫及優(yōu)化,與其他分布式的圖計算框架相比,GraphX能夠在Spark框架下完成一棧式的分布式圖數(shù)據(jù)處理,可以方便且高效地完成圖計算的一整套流水作業(yè)。1.3基于Spark的大數(shù)據(jù)計算平臺Spark概述Spark編程模型整體可以分成驅(qū)動程序(Driver)部分和執(zhí)行器(Executor)部分,結(jié)構(gòu)如圖15-15所示。驅(qū)動部分主要在客戶端驅(qū)動Spark集群執(zhí)行相關(guān)操作,執(zhí)行器主要負(fù)責(zé)實際的任務(wù)執(zhí)行。驅(qū)動程序部分:驅(qū)動程序部分主要負(fù)責(zé)Spark上下文的相關(guān)配置、初始化以及關(guān)閉。執(zhí)行器部分:Spark應(yīng)用程序的執(zhí)行器負(fù)責(zé)對不同任務(wù)中的數(shù)據(jù)進(jìn)行處理,不同的變量在驅(qū)動中聲明,不同算子中的計算邏輯需要分發(fā)給執(zhí)行器來執(zhí)行。1.3基于Spark的大數(shù)據(jù)計算平臺圖15-15模型組成Spark概述RDD概念彈性分布式數(shù)據(jù)集是Spark中最基本的計算單元,是對分布式內(nèi)存的抽象使用,可以通過一系列算子進(jìn)行操作(主要包括Transformation和Action操作),完成通過使用MapReduce完成的任務(wù),但是作為MapReduce的延伸,RDD解決了MapReduce中存在的問題,能夠更加高效的進(jìn)行計算。RDD作為Spark的核心,它表示已被分區(qū)、不可變的并能夠被并行操作的數(shù)據(jù)集合,不同的數(shù)據(jù)集格式對應(yīng)不同的RDD實現(xiàn),RDD必須是可序列化的。RDD可以緩存到內(nèi)存中,每次對RDD數(shù)據(jù)集進(jìn)行操作之后的結(jié)果都可以存放到內(nèi)存中,下一個操作可以直接從內(nèi)存中輸入,省去了MapReduce大量的磁盤IO操作。這對于迭代運(yùn)算比較常見的機(jī)器學(xué)習(xí)算法、交互式數(shù)據(jù)挖掘來說,效率提升非常大。其具有以下特點:分區(qū)只讀依賴緩存檢查點1.3基于Spark的大數(shù)據(jù)計算平臺Spark概述RDD的操作在Spark的應(yīng)用程序開發(fā)過程中,需要使用驅(qū)動程序來連接工作節(jié)點進(jìn)行相關(guān)的操作。通過驅(qū)動程序可以定義一個或多個RDD以及圍繞RDD相關(guān)的操作,同時記錄RDD之間的繼承關(guān)系。在操作過程中的RDD數(shù)據(jù)都保存在工作節(jié)點的內(nèi)存中,其工作流程圖如圖15-16所示。Spark中涉及到RDD的操作大致可以分為四種,分別為創(chuàng)建操作、轉(zhuǎn)換操作、控制操作和行動操作。1.3基于Spark的大數(shù)據(jù)計算平臺圖15-16Spark運(yùn)行架構(gòu)圖SparkSQLSparkSQL基本原理SparkSQL是Spark中用來處理結(jié)構(gòu)化數(shù)據(jù)的子模塊,提供了DataFrame用來實現(xiàn)數(shù)據(jù)的抽象描述,并且可以將其作為分布式SQL查詢引擎。先前的Hive是將HiveSQL轉(zhuǎn)換成MapReduce,然后提交到集群上執(zhí)行,大大簡化了編寫MapReduce程序的復(fù)雜性。但是MapReduce這種計算模型執(zhí)行效率比較慢,為了解決這一問題,SparkSQL應(yīng)運(yùn)而生。與Hive不同,SparkSQL是將SparkSQL轉(zhuǎn)換成RDD,然后提交到集群執(zhí)行,執(zhí)行效率高,同時SparkSQL也支持從Hive中讀取數(shù)據(jù)。SparkSQL提供了方便的調(diào)用接口,用戶可以同時使用Scala、Java和Python語言開發(fā)基于SparkSQLAPI的數(shù)據(jù)處理程序,并通過SQL語句與Spark代碼交互。目前SparkSQL使用Catalyst優(yōu)化器來對SQL語句進(jìn)行優(yōu)化處理,從而實現(xiàn)更加高效地行。通過SparkSQL處理后可以將結(jié)果存儲到外部存儲系統(tǒng)中。更重要的是,基于Spark的DataFrame,SparkSQL可以和Spark中的其他子系統(tǒng)(如SparkStreaming、Graphx和MLlib)無縫集成,這樣就可以在一個技術(shù)棧中完成對數(shù)據(jù)的批處理、實時流處理和交互式查詢等多種數(shù)據(jù)處理業(yè)務(wù)。1.3基于Spark的大數(shù)據(jù)計算平臺SparkSQLSparkSQL基本原理DataFrame是一種以RDD作為基礎(chǔ)進(jìn)行抽象封裝的分布式數(shù)據(jù)表示,類似于關(guān)系數(shù)據(jù)庫中的二維數(shù)據(jù)表,但在底層具有針對分布式更豐富的優(yōu)化。DataFrame可以從各種來源構(gòu)建,如結(jié)構(gòu)化數(shù)據(jù)文件、Hive中的表、外部數(shù)據(jù)庫或者現(xiàn)有RDD。DataFrame與RDD的區(qū)別在于,DataFrame本身帶有Schema元數(shù)據(jù),也就是DataFrame中表示的二維數(shù)據(jù)表中的每一列都附帶有名稱和數(shù)據(jù)的類型。同時由于DataFrame中帶有數(shù)據(jù)的結(jié)構(gòu)信息,在運(yùn)行任務(wù)時可以針對不同的數(shù)據(jù)類型進(jìn)行優(yōu)化,提高整體運(yùn)行的效率。1.3基于Spark的大數(shù)據(jù)計算平臺圖15-17DataFrame數(shù)據(jù)結(jié)構(gòu)信息SparkSQLSparkSQL運(yùn)行機(jī)制SparkSQL對SQL語句的處理和關(guān)系型數(shù)據(jù)庫類似,即詞法/語法解析、綁定、優(yōu)化、執(zhí)行。SparkSQL會先將SQL語句解析成一棵樹,然后基于規(guī)則對Tree進(jìn)行綁定、優(yōu)化等處理過程。SparkSQL由Core、Catalyst、Hive、Hive-ThriftServer四部分構(gòu)成。其中,Core負(fù)責(zé)處理數(shù)據(jù)的輸入和輸出,如獲取數(shù)據(jù),查詢結(jié)果輸出成DataFrame等;Catalyst
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河北唐山市中首特鋼集團(tuán)有限公司招聘222人筆試備考試題及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考貴州省科學(xué)技術(shù)廳招聘4人考試參考題庫及答案解析
- 2026中國科學(xué)院云南天文臺科技人才招聘筆試備考題庫及答案解析
- 2026四川廣安市前鋒區(qū)財政局招聘勞務(wù)派遣制從事相關(guān)專業(yè)施工圖設(shè)計評審工作者1人考試參考題庫及答案解析
- 2026云南昆明市尋甸回族彝族自治縣人民政府辦公室城鎮(zhèn)公益性崗位招聘5人考試參考題庫及答案解析
- 2026廣東汕尾市陸河縣應(yīng)急管理局招聘綜合應(yīng)急救援隊員5人備考題庫及答案詳解(奪冠系列)
- 2026上半年云南事業(yè)單位聯(lián)考體育局直屬事業(yè)單位公開招聘人員筆試備考試題及答案解析
- 2026廣東廣州市中山大學(xué)孫逸仙紀(jì)念醫(yī)院消毒供應(yīng)中心工程崗位(花都院區(qū))招聘1人筆試備考題庫及答案解析
- 2026山東菏澤新東方烹飪學(xué)校招聘學(xué)校工作人員備考題庫及一套答案詳解
- 2026四川自貢市沿灘區(qū)瓦市鎮(zhèn)人民政府編外人員招聘1人備考題庫及1套完整答案詳解
- 高校區(qū)域技術(shù)轉(zhuǎn)移轉(zhuǎn)化中心(福建)光電顯示、海洋氫能分中心主任招聘2人備考題庫及答案詳解(考點梳理)
- 航空安保審計培訓(xùn)課件
- 2026四川成都錦江投資發(fā)展集團(tuán)有限責(zé)任公司招聘18人備考題庫有答案詳解
- 2026元旦主題班會:馬年猜猜樂馬年成語教學(xué)課件
- 云南省楚雄州2023-2024學(xué)年上學(xué)期期末教育學(xué)業(yè)質(zhì)量監(jiān)測九年級歷史試卷(含答案)
- 2023年湖北煙草筆試試題
- 凝血功能檢測方法與臨床意義
- 人教版五年級數(shù)學(xué)用方程解決問題
- 架桿租賃合同
- 哈工大歷年電機(jī)學(xué)試卷及答案詳解
- GB/T 16886.1-2022醫(yī)療器械生物學(xué)評價第1部分:風(fēng)險管理過程中的評價與試驗
評論
0/150
提交評論