![數(shù)據(jù)結(jié)構(gòu)(從概念到算法)課件_第1頁](http://file4.renrendoc.com/view14/M06/0A/26/wKhkGWeAuyeAcJHCAAB-GnlBrZA879.jpg)
![數(shù)據(jù)結(jié)構(gòu)(從概念到算法)課件_第2頁](http://file4.renrendoc.com/view14/M06/0A/26/wKhkGWeAuyeAcJHCAAB-GnlBrZA8792.jpg)
![數(shù)據(jù)結(jié)構(gòu)(從概念到算法)課件_第3頁](http://file4.renrendoc.com/view14/M06/0A/26/wKhkGWeAuyeAcJHCAAB-GnlBrZA8793.jpg)
![數(shù)據(jù)結(jié)構(gòu)(從概念到算法)課件_第4頁](http://file4.renrendoc.com/view14/M06/0A/26/wKhkGWeAuyeAcJHCAAB-GnlBrZA8794.jpg)
![數(shù)據(jù)結(jié)構(gòu)(從概念到算法)課件_第5頁](http://file4.renrendoc.com/view14/M06/0A/26/wKhkGWeAuyeAcJHCAAB-GnlBrZA8795.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章大數(shù)據(jù)存儲(chǔ)與檢索010203目錄CONTENTS04大數(shù)據(jù)的定義與特征大數(shù)據(jù)存儲(chǔ)大數(shù)據(jù)檢索應(yīng)用實(shí)例04本章小結(jié)01PART大數(shù)據(jù)的定義與特征大數(shù)據(jù)(BigData)是指需要通過快速獲取、處理、分析以從中提取價(jià)值的海量且多樣化的交易數(shù)據(jù)、交互數(shù)據(jù)與傳感數(shù)據(jù),其規(guī)模往往達(dá)到PB(1024TB)級(jí)。不同機(jī)構(gòu)對大數(shù)據(jù)也有不同的定義。麥肯錫全球研究院(MGI)對大數(shù)據(jù)的定義為:一種規(guī)模大到在獲取、存儲(chǔ)、管理、分析方面極大超出傳統(tǒng)數(shù)據(jù)庫軟件工具能力范圍的數(shù)據(jù)集合,具有海量的數(shù)據(jù)規(guī)模、快速的數(shù)據(jù)流轉(zhuǎn)、多樣的數(shù)據(jù)類型和價(jià)值密度低四大特征。移動(dòng)信息化研究中心對大數(shù)據(jù)的定義為:大數(shù)據(jù)是幫助企業(yè)利用海量數(shù)據(jù)資產(chǎn),實(shí)時(shí)、精確地洞察未知邏輯領(lǐng)域的動(dòng)態(tài)變化,并快速重塑業(yè)務(wù)流程、組織和行業(yè)的新興數(shù)據(jù)管理技術(shù)?;ヂ?lián)網(wǎng)數(shù)據(jù)中心(IDC)認(rèn)為,大數(shù)據(jù)具備海量(Volume)、異構(gòu)(Variety)、高速(Velocity)和價(jià)值(Value)四大特性。9.1.1大數(shù)據(jù)定義大數(shù)據(jù)的定義與特征小數(shù)據(jù)與大數(shù)據(jù)的特征對比如下表所示。9.1.1大數(shù)據(jù)定義特征小數(shù)據(jù)大數(shù)據(jù)體積有限的量數(shù)據(jù)龐大徹底性樣本整個(gè)群體分辨率和索引性粗糙,弱精致,強(qiáng)關(guān)聯(lián)性弱強(qiáng)速度慢、定格快多樣性窄寬靈活性和可擴(kuò)展性中等高大數(shù)據(jù)的定義與特征大數(shù)據(jù)的特征可以歸納為5個(gè)層面:Volume(數(shù)據(jù)容量)、Variety(數(shù)據(jù)類型)、Value(價(jià)值密度)、Velocity(速度)、Veracity(真實(shí)性),也就是大數(shù)據(jù)的5V特征。(1)數(shù)據(jù)容量Volume表示數(shù)據(jù)容量巨大。大型數(shù)據(jù)集一般在10TB規(guī)模。但在實(shí)際應(yīng)用中,很多企業(yè)用戶把多個(gè)數(shù)據(jù)集放在一起,已經(jīng)形成了PB級(jí)的數(shù)據(jù)量。可以想象,隨著存儲(chǔ)設(shè)備容量的增大以及物聯(lián)網(wǎng)和人工智能等的發(fā)展,存儲(chǔ)數(shù)據(jù)還會(huì)呈幾何級(jí)增長。大數(shù)據(jù)的容量指標(biāo)是動(dòng)態(tài)增加的。9.1.2大數(shù)據(jù)特征大數(shù)據(jù)的定義與特征(2)數(shù)據(jù)類型Variety表示數(shù)據(jù)類型繁多。傳統(tǒng)的數(shù)據(jù)類型一般較為單一,且或多或少是同構(gòu)的,即結(jié)構(gòu)化的數(shù)據(jù),這種特點(diǎn)使它更易于管理。但在大數(shù)據(jù)中,數(shù)據(jù)來源各異,因而形式各異。大數(shù)據(jù)主要來源于互聯(lián)網(wǎng),包含多種數(shù)據(jù)類型,例如各種音頻和視頻文件、網(wǎng)絡(luò)日志、地理位置信息等。大數(shù)據(jù)大多為半結(jié)構(gòu)化,甚至完全非結(jié)構(gòu)化的數(shù)據(jù)類型。這類數(shù)據(jù)毫無特征可言,給大數(shù)據(jù)的存儲(chǔ)和檢索帶來極大的挑戰(zhàn)。9.1.2大數(shù)據(jù)特征大數(shù)據(jù)的定義與特征(3)價(jià)值密度Value表示價(jià)值密度。隨著物聯(lián)網(wǎng)的廣泛應(yīng)用,信息感知無處不在,數(shù)據(jù)海量,但是其價(jià)值密度很低。大數(shù)據(jù)蘊(yùn)藏著豐富的價(jià)值,挖掘價(jià)值往往類似沙里淘金。通過對大數(shù)據(jù)獲取、存儲(chǔ)、抽取、清洗,再經(jīng)過復(fù)雜地挖掘與分析才能從大數(shù)據(jù)中獲取到有價(jià)值的信息。如何從海量的數(shù)據(jù)中迅速地完成數(shù)據(jù)的價(jià)值提純是亟待解決的難題。(4)速度Velocity表示數(shù)據(jù)的產(chǎn)生和變化快。在高速網(wǎng)絡(luò)時(shí)代,通過能夠?qū)崿F(xiàn)軟件性能優(yōu)化的高速處理器和服務(wù)器創(chuàng)建實(shí)時(shí)數(shù)據(jù)流已經(jīng)成為流行趨勢。企業(yè)不僅需要了解如何快速創(chuàng)建數(shù)據(jù),還需要知道如何快速處理、分析數(shù)據(jù)并返回結(jié)果給用戶,以滿足用戶的實(shí)時(shí)需求。大數(shù)據(jù)的快速處理能力充分體現(xiàn)了它與傳統(tǒng)數(shù)據(jù)處理技術(shù)的本質(zhì)區(qū)別。9.1.2大數(shù)據(jù)特征大數(shù)據(jù)的定義與特征(5)真實(shí)性Veracity表示數(shù)據(jù)的真實(shí)性。數(shù)據(jù)真實(shí)性是一個(gè)在討論大數(shù)據(jù)時(shí)常常被忽略的屬性,但是它與其他的屬性同樣重要。采集到的大數(shù)據(jù)并不能保證完全、真實(shí)、準(zhǔn)確,可能存在著錯(cuò)誤的數(shù)據(jù)、甚至是偽造的數(shù)據(jù),而大數(shù)據(jù)分析高度依賴數(shù)據(jù)的真實(shí)性,越真實(shí)的數(shù)據(jù),就越有助于分析出準(zhǔn)確的結(jié)果。9.1.2大數(shù)據(jù)特征大數(shù)據(jù)的定義與特征(1)物聯(lián)網(wǎng)的興起:物聯(lián)網(wǎng)和5G通信技術(shù)的發(fā)展使得智能終端廣泛應(yīng)用于家用電器的控制。(2)暗數(shù)據(jù)遷移到云:尚未轉(zhuǎn)換為數(shù)字格式的數(shù)據(jù)稱為暗數(shù)據(jù),它是尚未開發(fā)的巨大存儲(chǔ)庫,未來這些模擬數(shù)據(jù)庫會(huì)被數(shù)字化并遷移到云中,有利于進(jìn)一步分析和決策。(3)量子計(jì)算:盡管量子計(jì)算尚處于起步階段,但相關(guān)研究實(shí)驗(yàn)從未停止,量子計(jì)算將能夠極大提升計(jì)算機(jī)數(shù)據(jù)處理能力,縮短處理時(shí)間。(4)邊緣計(jì)算:隨著物聯(lián)網(wǎng)的發(fā)展,企業(yè)收集數(shù)據(jù)的方式逐漸轉(zhuǎn)向設(shè)備端,邊緣計(jì)算相較于云計(jì)算更加靠近數(shù)據(jù)源頭,這樣可以有效降低數(shù)據(jù)傳輸處理到反饋的遲延,同時(shí)具有顯著的大數(shù)據(jù)收集與處理能力。(5)人工智能:隨著機(jī)器學(xué)習(xí)與人工智能(AI)的崛起,越來越多與人們生活日常息息相關(guān)的大數(shù)據(jù)被輸送到AI模型中,進(jìn)一步提升了AI系統(tǒng)的智能化決策水平,以便更好地為人類服務(wù)。9.1.3大數(shù)據(jù)的行業(yè)發(fā)展趨勢02PART大數(shù)據(jù)存儲(chǔ)9.2.1數(shù)據(jù)存儲(chǔ)管理傳統(tǒng)的數(shù)據(jù)存儲(chǔ)管理已經(jīng)不能滿足大數(shù)據(jù)的發(fā)展要求,大數(shù)據(jù)存儲(chǔ)管理面臨著巨大的挑戰(zhàn)。大數(shù)據(jù)管理技術(shù)也不斷涌現(xiàn),有多種數(shù)據(jù)管理技術(shù)被廣泛關(guān)注,例如分布式存儲(chǔ)、內(nèi)存數(shù)據(jù)庫技術(shù)、列式數(shù)據(jù)庫技術(shù)、云數(shù)據(jù)庫技術(shù)、NoSQL技術(shù)、移動(dòng)數(shù)據(jù)庫技術(shù)等。分布式存儲(chǔ)系統(tǒng)是將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上。內(nèi)存數(shù)據(jù)庫技術(shù)將數(shù)據(jù)放在內(nèi)存中直接操作,內(nèi)存的數(shù)據(jù)讀寫速度要比磁盤高出幾個(gè)數(shù)量級(jí),因此數(shù)據(jù)保存在內(nèi)存中能為應(yīng)用程序提供即時(shí)的響應(yīng)和高吞吐量。列式數(shù)據(jù)庫是以列相關(guān)存儲(chǔ)架構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫,主要適用于批量數(shù)據(jù)處理和即時(shí)查詢,占用更少的存儲(chǔ)空間,它是構(gòu)建數(shù)據(jù)倉庫的理想架構(gòu)之一。云數(shù)據(jù)庫是指被優(yōu)化或部署到一個(gè)虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫,其可以被隨意地進(jìn)行擴(kuò)展,具有按需付費(fèi)、按需擴(kuò)展、高可用性以及存儲(chǔ)整合等優(yōu)勢。NoSQL(NotOnlySQL)泛指非關(guān)系型數(shù)據(jù)庫,適用于龐大的數(shù)據(jù)量、極端的查詢量和模式演化等場景下。移動(dòng)數(shù)據(jù)庫是分布式數(shù)據(jù)庫的延伸和擴(kuò)展,擁有分布式數(shù)據(jù)庫的諸多優(yōu)點(diǎn)和獨(dú)特的性能,能夠滿足未來人們訪問信息的要求。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)分布式文件系統(tǒng)(DistributedFileSystem)是指文件系統(tǒng)管理的存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過計(jì)算機(jī)網(wǎng)絡(luò)節(jié)點(diǎn)相連,或是若干不同的邏輯磁盤分區(qū)或卷標(biāo)組合在一起而形成的完整、有層次的文件系統(tǒng)。分布式文件系統(tǒng)把大量數(shù)據(jù)分散到不同的節(jié)點(diǎn)上存儲(chǔ),并使用備份機(jī)制,極大減小了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。分布式文件系統(tǒng)具有冗余性,部分節(jié)點(diǎn)的故障并不影響整體的正常運(yùn)行,而且即使出現(xiàn)故障的計(jì)算機(jī)存儲(chǔ)的數(shù)據(jù)損壞、甚至丟失,也可以由其他節(jié)點(diǎn)將缺失的數(shù)據(jù)恢復(fù)出來。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)Hadoop
Distributed
FileSystem(簡稱HDFS)是一個(gè)分布式文件系統(tǒng)。HDFS
與現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn),但同時(shí)它與其他分布式文件系統(tǒng)的區(qū)別也非常明顯。HDFS
是基于滿足流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的,是一個(gè)具有高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的商用服務(wù)器上。HDFS
能提供高吞吐量的數(shù)據(jù)訪問,非常適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)HDFS采用了主從(Master/Slave)結(jié)構(gòu)模型,一個(gè)HDFS集群由一個(gè)名稱節(jié)點(diǎn)(NameNode)和若干數(shù)據(jù)節(jié)點(diǎn)(DataNode)組成。其中,名稱節(jié)點(diǎn)作為主服務(wù)器,用于管理文件命名空間和調(diào)節(jié)客戶端對文件的訪問;集群中的數(shù)據(jù)節(jié)點(diǎn)才是真正存儲(chǔ)數(shù)據(jù)的地方,一般一個(gè)數(shù)據(jù)節(jié)點(diǎn)對應(yīng)一臺(tái)服務(wù)器。HDFS系統(tǒng)架構(gòu)如圖所示。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)NameNode管理文件系統(tǒng)的命名空間,維護(hù)著文件系統(tǒng)樹以及整棵樹內(nèi)所有的文件和目錄,這些元數(shù)據(jù)以兩個(gè)文件的形式永久保存在本地磁盤上,即命名空間鏡像文件和編輯日志文件。NameNode也記錄著每個(gè)文件中各個(gè)塊所在的數(shù)據(jù)節(jié)點(diǎn)信息,但它并不持久化在硬盤上,而是存儲(chǔ)在內(nèi)存中,這些信息是在系統(tǒng)啟動(dòng)時(shí)由DataNode發(fā)送過來的。因此,NameNode并不參與客戶數(shù)據(jù)的讀寫操作,只負(fù)責(zé)維護(hù)一些控制信息。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)DataNode是文件系統(tǒng)的工作節(jié)點(diǎn),是真正存儲(chǔ)數(shù)據(jù)的位置。DataNode在存儲(chǔ)數(shù)據(jù)時(shí)以數(shù)據(jù)塊為單位讀寫數(shù)據(jù),數(shù)據(jù)塊是HDFS讀寫數(shù)據(jù)的基本單位。每個(gè)文件除了最后一個(gè)塊,其他塊都有相同的大小。數(shù)據(jù)塊一般都有多個(gè)備份,存儲(chǔ)在不同的DataNode中,DataNode也可以分布在不同的機(jī)架上。DataNode負(fù)責(zé)執(zhí)行文件系統(tǒng)客戶端發(fā)出的讀/寫請求,將數(shù)據(jù)塊持久化存儲(chǔ)在本地。DataNode同時(shí)也負(fù)責(zé)執(zhí)行NameNode發(fā)送過來的指令,例如進(jìn)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)HDFS主要有以下幾個(gè)特點(diǎn)。(1)故障檢測和自動(dòng)快速恢復(fù)硬件故障的出現(xiàn)在HDFS中是常態(tài)。由于整個(gè)HDFS系統(tǒng)由數(shù)百或數(shù)千個(gè)存儲(chǔ)著文件數(shù)據(jù)片段的服務(wù)器組成,且都很復(fù)雜,因此每一個(gè)部分都很有可能出現(xiàn)故障,這就意味著HDFS系統(tǒng)中總有一些部件是失效的??梢哉f,故障的檢測和自動(dòng)快速恢復(fù)是HDFS一個(gè)很核心的設(shè)計(jì)目標(biāo)(2)簡單、一致模型大部分的HDFS程序?qū)ξ募僮鞯男枨笫且淮螌懭攵啻巫x取。一個(gè)文件一旦被創(chuàng)建、寫入、關(guān)閉之后就不需要再修改了,這個(gè)假定簡化了數(shù)據(jù)一致的問題,同時(shí)也能提供高吞吐量的數(shù)據(jù)訪問。Map-Reduce程序或者網(wǎng)絡(luò)爬蟲應(yīng)用都可以完美地適合這個(gè)模型。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)(3)大數(shù)據(jù)集運(yùn)行在HDFS上的應(yīng)用程序有著大量的數(shù)據(jù)集。典型的HDFS文件大小是GB到TB的級(jí)別,操作系統(tǒng)中磁盤塊的大小默認(rèn)是512字節(jié),而hadoop2.x版本中塊的大小默認(rèn)為128MB,其目的是減小尋址的開銷。只要塊足夠大,磁盤傳輸數(shù)據(jù)的時(shí)間必定會(huì)明顯大于這個(gè)塊的尋址時(shí)間。另外,HDFS提供很高的聚合數(shù)據(jù)帶寬,即一個(gè)集群中支持?jǐn)?shù)百個(gè)節(jié)點(diǎn),另一個(gè)集群中還應(yīng)該支持千萬級(jí)別的文件。(4)數(shù)據(jù)訪問運(yùn)行在HDFS上的應(yīng)用程序必須流式地訪問它們的數(shù)據(jù)集,它不是運(yùn)行在普通文件系統(tǒng)上的程序。HDFS被設(shè)計(jì)成適合批量處理的,而不是用戶交互式的。HDFS強(qiáng)調(diào)數(shù)據(jù)吞吐量,而不是數(shù)據(jù)訪問的反應(yīng)時(shí)間。POSIX(PortableOperatingSystemInterfaceofUNIX)的很多硬性需求對HDFS應(yīng)用都是非必需的,去掉POSIX中小部分關(guān)鍵語義可以獲得更好的數(shù)據(jù)吞吐量。(大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)(5)異構(gòu)軟硬件平臺(tái)間的可移植性HDFS被設(shè)計(jì)成可以簡單實(shí)現(xiàn)平臺(tái)間的遷移,這樣將推動(dòng)需要大數(shù)據(jù)集的應(yīng)用更廣泛地采用HDFS作為平臺(tái)。(6)移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更經(jīng)濟(jì)在靠近計(jì)算數(shù)據(jù)的真實(shí)存儲(chǔ)位置來進(jìn)行計(jì)算是最理想的狀態(tài),尤其是在數(shù)據(jù)集特別巨大的時(shí)候,傳送代碼的通信代價(jià)通常比傳送數(shù)據(jù)小得多。因此,就近計(jì)算能消除網(wǎng)絡(luò)的擁堵,提高系統(tǒng)的整體吞吐量。一個(gè)假定就是遷移程序到距離數(shù)據(jù)更近的位置比將數(shù)據(jù)移動(dòng)到程序運(yùn)行更近的位置要更好。HDFS提供了讓程序?qū)⒆约阂苿?dòng)到距離數(shù)據(jù)存儲(chǔ)更近位置的接口。大數(shù)據(jù)存儲(chǔ)9.2.2分布式文件系統(tǒng)HDFS的設(shè)計(jì)理念是為了滿足特定的大數(shù)據(jù)場景,所以HDFS也具有一定的局限性,主要體現(xiàn)在以下幾點(diǎn)。(1)小文件問題文件系統(tǒng)的元數(shù)據(jù)是由NameNode保存在內(nèi)存中,而HDFS系統(tǒng)只有一個(gè)NameNode,文件系統(tǒng)所能存儲(chǔ)的文件總量受限于NameNode的內(nèi)存總?cè)萘?,因此過多的小文件會(huì)大量消耗NameNode的存儲(chǔ)量。(2)實(shí)時(shí)性差HDFS針對高數(shù)據(jù)吞吐量做了優(yōu)化,以獲取數(shù)據(jù)有延遲為代價(jià),因此HDFS并不適用于對實(shí)時(shí)性要求很高的應(yīng)用場景。(3)文件修改問題HDFS并不支持修改文件,HDFS適合一次寫入,然后多次讀取的場景。(4)不支持用戶的并行寫同一時(shí)間內(nèi),只能有一個(gè)用戶執(zhí)行寫操作。大數(shù)據(jù)存儲(chǔ)9.2.3NoSQL數(shù)據(jù)庫傳統(tǒng)的關(guān)系型數(shù)據(jù)庫可以很好地支持結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和管理,它們具有嚴(yán)格的數(shù)據(jù)模式和標(biāo)準(zhǔn),并且支持事務(wù)的ACID特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。但是,大數(shù)據(jù)時(shí)代的數(shù)據(jù)大多為半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),傳統(tǒng)關(guān)系型數(shù)據(jù)庫并不適合存儲(chǔ)和管理這些數(shù)據(jù),因此NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生。NoSQL具有以下幾個(gè)特點(diǎn)。(1)靈活的可擴(kuò)展性NoSQL數(shù)據(jù)庫種類繁多,但是它們有一個(gè)共同的特點(diǎn),就是沒有關(guān)系型數(shù)據(jù)庫的關(guān)系性特性。數(shù)據(jù)之間沒有關(guān)系使擴(kuò)展變得更加容易,如在架構(gòu)層面上無形之間帶來可擴(kuò)展的能力。大數(shù)據(jù)存儲(chǔ)9.2.3NoSQL數(shù)據(jù)庫(2)大數(shù)據(jù)量和高性能大數(shù)據(jù)時(shí)代需要存儲(chǔ)的數(shù)據(jù)規(guī)模增大了好幾個(gè)數(shù)量級(jí)。盡管傳統(tǒng)的關(guān)系型數(shù)據(jù)庫一直在優(yōu)化以適應(yīng)這種規(guī)模的增長,但是其特點(diǎn)決定存儲(chǔ)上限;NoSQL數(shù)據(jù)庫具有無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)也相對簡單,這些使得它具有非常高的讀寫性能,尤其是在大數(shù)據(jù)量場景下。一般關(guān)系型數(shù)據(jù)庫使用查詢緩存,而NoSQL使用的是記錄級(jí)緩存,即一種細(xì)粒度的緩存,所以在這個(gè)層面上來說NoSQL的性能就要高很多。(3)靈活的數(shù)據(jù)模型,可處理半結(jié)構(gòu)化和非結(jié)構(gòu)化的大數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)字段需要事先建立好,因?yàn)橄到y(tǒng)運(yùn)行后再增、刪字段是一件非常麻煩的事情。NoSQL數(shù)據(jù)庫在這一方面的優(yōu)勢就顯而易見了——NoSQL數(shù)據(jù)庫在數(shù)據(jù)模型約束方面更加寬松,無須用戶事先為要存儲(chǔ)的數(shù)據(jù)建立字段,且允許隨時(shí)存儲(chǔ)自定義的數(shù)據(jù)格式。NoSQL數(shù)據(jù)庫可以讓應(yīng)用程序在一個(gè)數(shù)據(jù)元素中存儲(chǔ)任何結(jié)構(gòu)的數(shù)據(jù),如半結(jié)構(gòu)化、完全非結(jié)構(gòu)化的數(shù)據(jù)。大數(shù)據(jù)存儲(chǔ)9.2.3NoSQL數(shù)據(jù)庫近些年,伴隨著大數(shù)據(jù)的發(fā)展,NoSQL數(shù)據(jù)庫的發(fā)展十分迅猛。據(jù)統(tǒng)計(jì),目前已經(jīng)出現(xiàn)50~150款NoSQL數(shù)據(jù)庫系統(tǒng)。它們一般被劃分為4類,分別是鍵值數(shù)據(jù)庫、列式數(shù)據(jù)庫、文檔數(shù)據(jù)庫和圖形數(shù)據(jù)庫,如圖所示。其中,鍵值數(shù)據(jù)庫以鍵值對為基本存儲(chǔ)單元,具有非??斓臋z索能力,這樣可以極大提升數(shù)據(jù)檢索的效率;列式數(shù)據(jù)庫以列簇式存儲(chǔ),具有很強(qiáng)的數(shù)據(jù)可擴(kuò)展性,更容易進(jìn)行分布式擴(kuò)展;文檔型數(shù)據(jù)庫對數(shù)據(jù)結(jié)構(gòu)的要求不嚴(yán)格,使得數(shù)據(jù)存儲(chǔ)更加靈活多變;圖形數(shù)據(jù)庫主要用于社交網(wǎng)絡(luò)、推薦系統(tǒng)等典型場景,在圖計(jì)算和數(shù)據(jù)可視化方面具有天然的優(yōu)勢,但其構(gòu)建成本相對較高。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫HBase是一款基于Hadoop的分布式、可伸縮、面向列的開源數(shù)據(jù)庫,其用于存儲(chǔ)海量數(shù)據(jù)。HBase與一般的關(guān)系型數(shù)據(jù)庫不同,它是一款適用于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫,而且它是基于列而不是基于行的模式。HBase有如下幾個(gè)特點(diǎn)。(1)海量存儲(chǔ)HBase適合存儲(chǔ)PB級(jí)別的海量數(shù)據(jù),人們即使是使用廉價(jià)計(jì)算機(jī)上的HBase來存儲(chǔ)PB級(jí)別的數(shù)據(jù),也能在幾十毫秒到百毫秒內(nèi)獲得反饋數(shù)據(jù)。HBase的這個(gè)特點(diǎn)得益于其極易擴(kuò)展性。正因?yàn)镠Base擁有良好的擴(kuò)展性,才為海量數(shù)據(jù)的存儲(chǔ)提供了便利。(2)列式存儲(chǔ)里“列式存儲(chǔ)”其實(shí)是列族存儲(chǔ),其中列族是指多個(gè)列的組合。區(qū)別于原來關(guān)系型數(shù)據(jù)庫的行式存儲(chǔ),HBase的列式存儲(chǔ)將行內(nèi)的數(shù)據(jù)按照列族分組,并且在物理存放上具有更加緊湊的空間使用效率。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫(3)極易擴(kuò)展HBase的擴(kuò)展性主要體現(xiàn)在兩個(gè)方面:一方面,通過橫向添加RegionSever的機(jī)器進(jìn)行水平擴(kuò)展,可以提高HBase的上層處理能力;另一方面,通過橫向添加DataNode的機(jī)器進(jìn)行存儲(chǔ)層的擴(kuò)容,可以提升HBase的數(shù)據(jù)存儲(chǔ)能力和后端存儲(chǔ)的讀寫能力。(4)高并發(fā)目前大部分采用HBase的架構(gòu)都是使用的廉價(jià)PC,因此單個(gè)I/O的延遲其實(shí)并不低。但是在并發(fā)的情況下,HBase的單個(gè)I/O延遲并不會(huì)變差很多,所以總體上用戶能獲得高并發(fā)、低延遲的服務(wù)。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫(5)稀疏稀疏主要是針對HBase列的靈活性而言的,即在列族中可以指定任意多的列,但只有列數(shù)據(jù)不為空的才會(huì)真正地占用存儲(chǔ)空間。HBase實(shí)際上是一個(gè)稀疏、多維度、有序的映射表,表中的每個(gè)單元是由行鍵、列族、列限定符和時(shí)間戳組成的唯一索引標(biāo)識(shí)。當(dāng)用戶在表中存儲(chǔ)數(shù)據(jù)時(shí),表中的每一行至少由一個(gè)列族組成,每一個(gè)列族又包含任意多的列。同一個(gè)表模式的列族數(shù)量是固定的,即每一行有相同數(shù)量的列族,且列族的名稱相同,但每一行中每個(gè)列族的列個(gè)數(shù)是可以變動(dòng)的。HBase的數(shù)據(jù)模型示意圖如圖所示。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫HBase中同一列族里面的數(shù)據(jù)存儲(chǔ)在一起,列族支持動(dòng)態(tài)擴(kuò)展,即不用提前定義列的數(shù)量,可隨時(shí)增加新的列。因此,同一個(gè)表中的不同行有相同的列族,但是可能具有完全不同的列。正因如此,對于整個(gè)映射表的每行數(shù)據(jù)而言,部分列的值是空的,所以HBase的表是稀疏的。HBase表中所有的行都是排好序的,一般按照行鍵的字典序排列。一個(gè)HBase表一般都很大,所以存儲(chǔ)時(shí)在行的方向上被分割成多個(gè)HRegion。HRegion是按大小分割的,默認(rèn)大小為10GB。HBase表是自動(dòng)分割HRegion的,其自動(dòng)分割原理是:每個(gè)表最開始只有一個(gè)HRegion,隨著數(shù)據(jù)不斷被插入表中,HRegion不斷增大;當(dāng)增大到一個(gè)閾值的時(shí)候,HRegion就會(huì)被等分成兩個(gè)新的HRegion;表中的行不斷增多,就會(huì)有越來越多的HRegion。HBase的數(shù)據(jù)單元層次示意圖如圖所示。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫HRegion是HBase中分布式存儲(chǔ)和負(fù)載均衡的最小單元,因此不同的HRegion可以分布在不同的HRegionServer上,但是HRegion不會(huì)拆分到多個(gè)服務(wù)器上。盡管HRegion是負(fù)載均衡的最小單元,但它并不是物理存儲(chǔ)上的最小單元。事實(shí)上,HRegion由一個(gè)或多個(gè)Store組成,每個(gè)Store保存一個(gè)列族,而每個(gè)Store又由一個(gè)MemStore和0個(gè)或多個(gè)StoreFile組成。HBase中所有的文件都存儲(chǔ)在HDFS上,其主要包括兩種文件類型:分別為HFile和HLogFile。HRegion的內(nèi)部結(jié)構(gòu)示意圖如圖所示。大數(shù)據(jù)存儲(chǔ)9.2.4HBase數(shù)據(jù)庫HFile是Hadoop的二進(jìn)制格式文件,實(shí)際上StoreFile就是對HFile做了輕量級(jí)包裝,即StoreFile就是HFile。HFile內(nèi)部結(jié)構(gòu)示意圖如下圖所示。其中,Data為數(shù)據(jù)塊,保存的是表中的數(shù)據(jù),可以被壓縮;Meta為元數(shù)據(jù)塊,保存用戶自定義的鍵值對,也可以被壓縮;FileInfo是HFile的元數(shù)據(jù)信息,用戶也可以在這一部分添加自己的元信息;DataIndex是存儲(chǔ)Data塊索引信息的塊文件,每條索引的key是被索引block中第一條記錄的key;MetaData是存儲(chǔ)Meta塊索引信息的塊文件;Trailer是HFile的最后一部分,它用來存儲(chǔ)FileInfo、DataIndex、MetaIndex塊的偏移量和尋址信息。03PART大數(shù)據(jù)檢索傳統(tǒng)意義上的索引,其目標(biāo)是加快查詢速度。索引是獨(dú)立于數(shù)據(jù)的,它通??梢员患虞d到內(nèi)存中,這樣就可以高效地進(jìn)行數(shù)據(jù)訪問,例如典型的B樹等。但是在大數(shù)據(jù)中,這一點(diǎn)就變得不太現(xiàn)實(shí)。即使索引比實(shí)際數(shù)據(jù)小很多,但由于實(shí)際數(shù)據(jù)的規(guī)模非常大,索引量依然會(huì)很大,因此索引仍然無法全部被放入內(nèi)存,這樣就導(dǎo)致很多傳統(tǒng)數(shù)據(jù)庫的索引模式對大數(shù)據(jù)失效。關(guān)系型數(shù)據(jù)庫一般采用B+樹作為索引的數(shù)據(jù)結(jié)構(gòu)。在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)隨機(jī)無序?qū)懺诖疟P上,B+樹能夠很好地提高數(shù)據(jù)庫的讀數(shù)據(jù)能力。對于大型分布式數(shù)據(jù)系統(tǒng),B+樹的性能就沒那么強(qiáng)了;這種情況下,日志結(jié)構(gòu)合并樹(LogStructuredMergeTree,LSM樹)是一個(gè)更好的選擇。9.3.1大數(shù)據(jù)索引大數(shù)據(jù)檢索LSM
樹是一種分層、有序、面向磁盤的數(shù)據(jù)結(jié)構(gòu)。LSM
樹的核心思想是以放棄部分讀數(shù)據(jù)能力來換取寫入能力的最大化。使用LSM
樹,假定內(nèi)存足夠大,因此不需要每次更新數(shù)據(jù)時(shí)就必須將數(shù)據(jù)寫入磁盤,而是將最新的數(shù)據(jù)駐留在內(nèi)存中,等積累到閾值后再使用歸并排序的方式將內(nèi)存中的數(shù)據(jù)歸并且追加到磁盤隊(duì)尾。事實(shí)上,所有待合并的樹都是有序的,因而我們可以通過合并排序的方式將它們快速合并到一起。LSM
樹的原理是把一棵大樹拆分成N
棵小樹,即將它寫入內(nèi)存中,隨著不斷更新數(shù)據(jù),小樹越來越大,達(dá)到一定的閾值之后,內(nèi)存中的小樹會(huì)被寫回到磁盤中,磁盤中的樹可定期做歸并操作,歸并成一棵大樹,以優(yōu)化讀性能。LSM
樹合并示意圖如圖所示。9.3.1大數(shù)據(jù)索引大數(shù)據(jù)檢索LSM樹與B樹的差異就體現(xiàn)于在讀性能和寫性能之間進(jìn)行取舍,在犧牲性能的同時(shí),尋找其他方案來彌補(bǔ)。LSM樹具有批量特性,可實(shí)現(xiàn)存儲(chǔ)延遲。當(dāng)寫操作大于讀操作時(shí),LSM樹相較于B
樹有更好的性能。這是因?yàn)殡S著插入操作的增多,為了維護(hù)B樹結(jié)構(gòu),結(jié)點(diǎn)需要分裂,讀磁盤的隨機(jī)概率會(huì)變大,性能會(huì)逐漸減弱。LSM樹的數(shù)據(jù)更新只在內(nèi)存中操作,沒有磁盤訪問環(huán)節(jié)。如果讀取的是最近訪問過的數(shù)據(jù),則可以直接從內(nèi)存中讀取,減少了磁盤訪問,因而提高性能。9.3.1大數(shù)據(jù)索引大數(shù)據(jù)檢索
大數(shù)據(jù)檢索技術(shù)是科學(xué)家一直都在研究的內(nèi)容,搜索引擎就是發(fā)展很多年的一項(xiàng)檢索技術(shù)。搜索引擎是根據(jù)用戶需求和利用一定算法,運(yùn)用特定策略從互聯(lián)網(wǎng)檢索出指定信息并反饋給用戶的一門
檢索技術(shù)。搜索方式大致可以分為4種:全文搜索引擎方式、元搜索引擎方式、垂直搜索引擎方式和目錄搜索引擎方式。(1)全文搜索引擎方式全文搜索引擎方式是利用爬蟲程序抓取互聯(lián)網(wǎng)上所有相關(guān)文章并予以索引的搜索方式,一般的
網(wǎng)絡(luò)用戶使用全文搜索引擎。全文搜索能夠方便、簡捷地獲得所有相關(guān)信息,但是搜索到的信息比
較龐雜,需要用戶進(jìn)一步自行篩選。在用戶沒有明確檢索意圖的情況下,這種搜索方式非常高效。9.3.2大數(shù)據(jù)高效檢索大數(shù)據(jù)檢索(2)元搜索引擎方式元搜索引擎方式是基于多個(gè)搜索引擎結(jié)果并對之整合處理的二次搜索方式。元搜索方式適用廣泛,能夠準(zhǔn)確地收集信息。不同全文搜索引擎的性能和反饋能力差異較大,導(dǎo)致各有利弊。元搜索引擎剛好能夠解決這個(gè)問題,有利于各基本搜索引擎間的優(yōu)勢互補(bǔ)。元搜索方式還有利于對基本搜索方式進(jìn)行全局控制,引導(dǎo)全文搜索引擎自我完善。(3)垂直搜索引擎方式垂直搜索引擎方式是對某一特定行業(yè)內(nèi)數(shù)據(jù)進(jìn)行快速檢索的一種專業(yè)搜索方式。這種方式適用于有明確搜索意圖情況下的檢索。例如,用戶購買機(jī)票、火車票、汽車票時(shí)或想要瀏覽網(wǎng)絡(luò)視頻資源時(shí),都可以直接選用行業(yè)內(nèi)專用搜索引擎,以準(zhǔn)確、迅速地獲得相關(guān)信息。(4)目錄搜索引擎方式目錄搜索引擎方式是依賴人工收集、處理數(shù)據(jù)并置于分類目錄鏈接下的搜索方式。這種方式通常是網(wǎng)站內(nèi)部使用的檢索方式。9.3.2大數(shù)據(jù)高效檢索04PART應(yīng)用實(shí)例ApacheS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寫電子版合同范本
- 個(gè)人合資合同范本
- 修建魚塘工程合同范例
- 深化行業(yè)企業(yè)與產(chǎn)業(yè)園區(qū)合作的高效人才培養(yǎng)路徑
- 個(gè)人花園施工合同范本
- 農(nóng)業(yè)人工勞務(wù)合同范例
- 2025年度高新技術(shù)企業(yè)項(xiàng)目合同擔(dān)保范圍界定
- 全額退保合同范例
- 體育經(jīng)濟(jì)租賃合同范本
- 光伏屋頂安裝合同范本
- 新部編版小學(xué)六年級(jí)下冊語文第二單元測試卷及答案
- 5《這些事我來做》(說課稿)-部編版道德與法治四年級(jí)上冊
- 2025年福建福州市倉山區(qū)國有投資發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2025年人教版新教材數(shù)學(xué)一年級(jí)下冊教學(xué)計(jì)劃(含進(jìn)度表)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長江航道工程局招聘101人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 2025年八省聯(lián)考四川高考生物試卷真題答案詳解(精校打印)
- 《供電營業(yè)規(guī)則》
- 企業(yè)員工退休管理規(guī)章制度(3篇)
- 執(zhí)行總經(jīng)理崗位職責(zé)
評(píng)論
0/150
提交評(píng)論