《大數(shù)據(jù)與云計算》課件-11.Hbase_第1頁
《大數(shù)據(jù)與云計算》課件-11.Hbase_第2頁
《大數(shù)據(jù)與云計算》課件-11.Hbase_第3頁
《大數(shù)據(jù)與云計算》課件-11.Hbase_第4頁
《大數(shù)據(jù)與云計算》課件-11.Hbase_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

大數(shù)據(jù)與云計算知識點HBASE數(shù)據(jù)庫簡介存儲與管理貫穿大數(shù)據(jù)處理過程的始終。引言傳統(tǒng)的關(guān)系型數(shù)據(jù)庫難以應(yīng)對大數(shù)據(jù)挑戰(zhàn)。我們知道一臺普通PC機的硬盤大概可以存儲1Tb的數(shù)據(jù),那么10Tb,100Tb,1000Tb怎么辦?再比如現(xiàn)在我們大多數(shù)同學(xué)都有云存儲空間,而且還不小有50GB的空間,那么10個、100個、10000個同學(xué)呢?我們說1萬個同學(xué)就有1萬個50GB大小的空間,也就是500TB,這500TB的信息顯然不可能在一臺計算機上存儲。那又該如何存儲,如何查詢呢?分布式數(shù)據(jù)庫HBase是一個分布式的非關(guān)系型數(shù)據(jù)庫,一個高可靠、高性能、可伸縮的分布式數(shù)據(jù)庫,是Nosql數(shù)據(jù)庫,也就是NotOnly的縮寫。它的擴展性強,并發(fā)性能好,數(shù)據(jù)模型靈活。屬于Hadoop的組件,它使用Java語言編寫,需要運行在HDFS文件系統(tǒng)之上,使用Zookeeper作為協(xié)同服務(wù)組件。HBase與Hadoop當(dāng)中的其他組件一樣,可以運行在多臺計算機上,可以提供數(shù)10億行乘以數(shù)百萬列的大數(shù)據(jù)存儲、管理,以及隨機訪問和實時讀、寫的能力。分布式數(shù)據(jù)庫數(shù)據(jù)庫的核心目的是實現(xiàn)數(shù)據(jù)的高效管理,傳統(tǒng)關(guān)系數(shù)據(jù)庫一度占據(jù)商業(yè)數(shù)據(jù)庫應(yīng)用的主流位置分布式數(shù)據(jù)庫完備的關(guān)系理論基礎(chǔ)事務(wù)管理機制的支持高效的查詢優(yōu)化機制隨著web2.0應(yīng)用的發(fā)展,關(guān)系數(shù)據(jù)庫逐漸呈現(xiàn)不足:Schema-lessScalableNotransactions

Semi-structuredSchema

Hardtoscale

TransactionalStructured并發(fā)性可擴展性可用性分布式數(shù)據(jù)庫HBase的原型是Google的分布式存儲系統(tǒng)BigTableBigTable使用谷歌分布式文件系統(tǒng)GFS作為底層數(shù)據(jù)存儲,配合MapReduce分布式并行計算模型來處理海量數(shù)據(jù),采用Chubby提供協(xié)同服務(wù)管理可以擴展到PB級別的數(shù)據(jù)和上千臺機器,具備廣泛應(yīng)用性、可擴展性、高性能和高可用性等特點。作為BigTable的開源實現(xiàn),HBase是一個高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)。HBase的目標是處理非常龐大的表,通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數(shù)據(jù)和數(shù)百萬列屬性組成的數(shù)據(jù)表數(shù)據(jù)類型:關(guān)系數(shù)據(jù)庫采用關(guān)系模型,具有豐富的數(shù)據(jù)類型和存儲方式,比如我們剛才說的同學(xué)的成績,這個就是整型的數(shù)據(jù)類型,只能是整數(shù)。姓名就是字符型,長度也可以固定,比如10個字符(5個漢字的長度)。HBase則采用了更加簡單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲為未經(jīng)解釋的字符串,全部都是字符串。HBase與關(guān)系數(shù)據(jù)庫的區(qū)別數(shù)據(jù)操作:關(guān)系數(shù)據(jù)庫中包含了豐富的操作,其中會涉及復(fù)雜的多表連接。比如我們在關(guān)系型數(shù)據(jù)庫中有兩張表,有一張是我們的成績信息,有一張表是我們的寢室信息家庭信息等等。這兩張表有一個相同的字段姓名,這樣我們就可以通過這個相同的字段把兩張表連接起來。HBase操作則不存在復(fù)雜的表與表之間的關(guān)系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設(shè)計上就避免了復(fù)雜的表和表之間的關(guān)系。所以HBase也就不支持復(fù)雜的條件查詢,只能是通過行鍵查詢。存儲模式:關(guān)系數(shù)據(jù)庫是基于行模式存儲的。我們說每一行就是一條記錄。HBase是基于列存儲的,每個列簇都由幾個文件保存,不同列簇的文件是分離的。并且列簇中的列是可以動態(tài)增加的,而關(guān)系數(shù)據(jù)庫需要一開始就設(shè)計好。除此之外,HBase可以自動切分數(shù)據(jù),關(guān)系型數(shù)據(jù)庫則需要我們?nèi)斯で蟹謹?shù)據(jù)。數(shù)據(jù)索引:關(guān)系數(shù)據(jù)庫通常可以針對不同列構(gòu)建復(fù)雜的多個索引,以提高數(shù)據(jù)訪問性能。HBase只有一個索引——行鍵,通過巧妙的設(shè)計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統(tǒng)不會慢下來??缮炜s性:關(guān)系數(shù)據(jù)庫很難實現(xiàn)橫向擴展,縱向擴展的空間也比較有限。相反,HBase分布式數(shù)據(jù)庫就是為了實現(xiàn)靈活的水平擴展而開發(fā)的,能夠輕易地通過在集群中增加或者減少硬件數(shù)量來實現(xiàn)性能的伸縮。數(shù)據(jù)維護:在關(guān)系數(shù)據(jù)庫中,更新操作會用最新的當(dāng)前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊的版本仍然保留。數(shù)據(jù)庫的核心目的是實現(xiàn)數(shù)據(jù)的高效管理,傳統(tǒng)關(guān)系數(shù)據(jù)庫一度占據(jù)商業(yè)數(shù)據(jù)庫應(yīng)用的主流位置完備的關(guān)系理論基礎(chǔ)事務(wù)管理機制的支持高效的查詢優(yōu)化機制隨著信息化浪潮和互聯(lián)網(wǎng)應(yīng)用的興起,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在一些業(yè)務(wù)上開始呈現(xiàn)不足:無法滿足海量數(shù)據(jù)的管理需求無法滿足數(shù)據(jù)高并發(fā)的需求無法滿足高可擴展性和高可用性的需求NoSQL最初被理解為一味用新型數(shù)據(jù)庫替代傳統(tǒng)關(guān)系型數(shù)據(jù)庫,但兩者各有優(yōu)缺點,無法完全取代NoSQL是對非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱,具有以下幾個特點:靈活的可擴展性靈活的數(shù)據(jù)模型與云計算緊密融合典型的NoSQL數(shù)據(jù)庫通常包括:鍵值數(shù)據(jù)庫列存儲數(shù)據(jù)庫文檔數(shù)據(jù)庫圖數(shù)據(jù)庫典型NoSQL數(shù)據(jù)庫鍵值數(shù)據(jù)庫(Key-Value)將數(shù)據(jù)存儲為鍵值對集合,其中鍵作為唯一標識符,可以用來定位值。鍵值數(shù)據(jù)庫值對數(shù)據(jù)庫而言是不可見的,不能對值進行索引和查詢。鍵是一個字符串對象,值可以是任意類型的數(shù)據(jù),比如整型、字符型、數(shù)組、列表、集合等鍵值數(shù)據(jù)庫可以進一步分為內(nèi)存鍵值數(shù)據(jù)庫和持久化鍵值數(shù)據(jù)庫內(nèi)存鍵值數(shù)據(jù)庫。鍵值數(shù)據(jù)庫是高度可分區(qū)的,具有高可擴展性。列存儲數(shù)據(jù)庫列存儲數(shù)據(jù)庫主要面向海量數(shù)據(jù)的分布式存儲。列存儲數(shù)據(jù)庫一般采用列族數(shù)據(jù)庫模型,數(shù)據(jù)庫由多行構(gòu)成,每行數(shù)據(jù)包含多個列族,不同行可具有不同數(shù)量的列。每行數(shù)據(jù)通過行鍵進行定位,行鍵對應(yīng)多個列,列以列族為單位組織存儲。典型的列數(shù)據(jù)庫包括Cassandra,HBase,HyperTable等。{"firstName":

"Bob","lastName":

"Smith","address":

{"street":"21

2ndStreet","city":

"New

York","state":

"NY","postalCode":

"10021"},"phoneNumbers":

[{"type":

“cell","number":

"(123)

555-0178"},{"type":

"Work","number":

"(890)

555-0133"},]}<contact><firstname>Bob</firstname><lastname>Smith</lastname><phone

type="Cell">(123)

555-0178</phone><phone

type="Work">(890)

555-0133</phone><address><type>Home</type><street>21

2nd

Street</street><city>New

York</city><state>NY</state><zip>10021</zip><country>US</country></address></contact>文檔數(shù)據(jù)庫“文檔”是處理信息的基本單位,相當(dāng)于關(guān)系數(shù)據(jù)庫中的一條記錄。旨在將半結(jié)構(gòu)化數(shù)據(jù)存儲為文檔,通常用XML、JSON等文檔格式來封裝和編碼數(shù)據(jù)文檔數(shù)據(jù)庫用于存儲、檢索和管理面向文檔的信息。使用文檔內(nèi)容來構(gòu)建索引典型的文檔數(shù)據(jù)庫包括CouchDB,MongoDB,RavenDB等文檔數(shù)據(jù)庫文檔能夠?qū)Π臄?shù)據(jù)類型和內(nèi)容進行“自我描述”。文檔數(shù)據(jù)庫一個文檔可以包含非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如嵌套對象,且每個文檔可以有完全不同的數(shù)據(jù)結(jié)構(gòu)。文檔數(shù)據(jù)庫圖數(shù)據(jù)庫圖數(shù)據(jù)庫(GraphDatabase)使用圖作為數(shù)據(jù)模型,通過節(jié)點、邊和屬性來表示和存儲數(shù)據(jù)。圖數(shù)據(jù)庫專門用于管理具有高度相互關(guān)聯(lián)關(guān)系的數(shù)據(jù)。如社交網(wǎng)絡(luò)、依賴分析、推薦系統(tǒng)以及路徑尋找等問題。典型的圖數(shù)據(jù)庫包括Neo4J、InfiniteGraph、GraphDB等。NoSQL對比關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫優(yōu)勢以完善的關(guān)系代數(shù)理論作為基礎(chǔ),有嚴格的標準,支持事務(wù)ACID,借助索引機制可以實現(xiàn)高效的查詢,技術(shù)成熟,有專業(yè)公司的技術(shù)支持??蓴U展性較差,無法較好支持海量數(shù)據(jù)存儲,數(shù)據(jù)模型不夠靈活、無法較好支持Web2.0應(yīng)用,事務(wù)機制影響了系統(tǒng)的整體性能等。劣勢NoSQL對比關(guān)系數(shù)據(jù)庫NoSQL數(shù)據(jù)庫優(yōu)勢可以支持超大規(guī)模數(shù)據(jù)存儲,靈活的數(shù)據(jù)模型可以很好地支持Web2.0應(yīng)用,具有強大的橫向擴展能力等。缺乏數(shù)學(xué)理論基礎(chǔ),復(fù)雜查詢性能不高,大都不能實現(xiàn)事務(wù)強一致性,很難實現(xiàn)數(shù)據(jù)完整性,缺乏專業(yè)團隊的技術(shù)支持,維護較困難等。劣勢存儲業(yè)務(wù)數(shù)據(jù):交通工具GPS信息,司機點位信息,訂單信息,物流信息,設(shè)備訪問信息,用戶行為信息等存儲日志數(shù)據(jù):架構(gòu)監(jiān)控數(shù)據(jù)(登錄日志,中間件訪問日志,推送日志,短信郵件發(fā)送記錄等),業(yè)務(wù)操作日志信息等存儲業(yè)務(wù)附件:UDFS系統(tǒng)存儲圖像,視頻,文檔等附件信息,智慧城市系統(tǒng)的監(jiān)控圖像、流量數(shù)據(jù)等。HBase常見應(yīng)用場景1本節(jié)介紹了分布式數(shù)據(jù)庫Hbase的概念。2介紹了分布式數(shù)據(jù)庫Hbase與關(guān)系數(shù)據(jù)庫的區(qū)別,HBase數(shù)據(jù)庫是BigTable的開源實現(xiàn),支持大規(guī)模海量數(shù)據(jù)的存儲與管理。3介紹了NoSQL數(shù)據(jù)庫,NoSQL數(shù)據(jù)庫主要包括鍵值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖數(shù)據(jù)庫四種類型。4介紹了分布式數(shù)據(jù)庫的常見應(yīng)用場景。本章小結(jié)知識點HBASE數(shù)據(jù)庫入門3hbase與分布式文件系統(tǒng)hdfs的區(qū)別1hbase的結(jié)構(gòu)2hbase的特性HBASE數(shù)據(jù)庫入門HBase本質(zhì)上是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時間戳。hbase的結(jié)構(gòu)用戶在表中存儲數(shù)據(jù),每一行都有一個可排序的行鍵和任意多的列。表中的值是未經(jīng)解釋的字符串,沒有數(shù)據(jù)類型。行鍵列族

cf1列族

cf2列限定符3個時間戳有些列的值是空的,所以HBase是稀疏的hbase的結(jié)構(gòu)邏輯視圖vs.物理視圖hbase的結(jié)構(gòu)關(guān)系型數(shù)據(jù)庫當(dāng)中要修改表的結(jié)構(gòu)就是很復(fù)雜的一件事,比如增加一個字段。舉個例子來說,如果我們的成績表當(dāng)中忘記了計算機成績這一列,你都錄入了一大半數(shù)據(jù)才發(fā)現(xiàn),這個時候你要先修改表的結(jié)構(gòu)增加一列,然后在一行一行的輸入每個同學(xué)的計算機成績。如果是hbase就簡單了,我把這一列直接擴充到hbase里面就可以了。hbase的結(jié)構(gòu)29列族支持動態(tài)擴展,可以很輕松地添加一個列族或列,無需預(yù)先定義列的數(shù)量以及類型,所有列均以字符串形式存儲,用戶需要自行進行數(shù)據(jù)類型轉(zhuǎn)換。hbase的結(jié)構(gòu)HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊有的版本仍然保留。若不提供時間戳則默認返回最新版本。數(shù)據(jù)是按照時間戳順序存儲的,客戶端可以選擇獲取距離某個時間最近的版本,或者獲取所有版本。表:HBase采用表來組織數(shù)據(jù),表由行和列組成,列劃分為若干個列族hbase的結(jié)構(gòu)行:每個HBase表都由若干行組成,每個行由行鍵(row

key)來標識。列族:一個HBase表被分組成許多“列族”(Column

Family)的集合,它是基本的訪問控制單元列限定符:列族里的數(shù)據(jù)通過列限定符(或列)來定位hbase的結(jié)構(gòu)單元格:在HBase表中,通過行、列族和列限定符確定一個“單元格”(cell),單元格中存儲的數(shù)據(jù)沒有數(shù)據(jù)類型,總被視為字節(jié)數(shù)組byte[

]時間戳:每個單元格都保存著同一份數(shù)據(jù)的多個版本,這些版本采用時間戳進行索引HBase中需要根據(jù)行鍵、列族、列限定符和時間戳來確定一個單元格,因此可視為一個“四維坐標”[行鍵,列族,列限定符,時間戳];如果把坐標看成“鍵”,單元格數(shù)據(jù)看成“值”,HBase也可看成一個鍵值數(shù)據(jù)庫。hbase的結(jié)構(gòu)為空的列并不占用存儲空間,表可以設(shè)計的非常稀疏稀疏性每一列存儲的數(shù)據(jù)可以有多個version。多版本單表可以有百億行、百萬列,數(shù)據(jù)矩陣橫向和縱向兩個維度所支持的數(shù)據(jù)量級都非常具有彈性。數(shù)據(jù)容量大HBase特性讀寫強一致,非“最終一致性”的數(shù)據(jù)存儲,使得它非常適合高速的計算聚合。自動分片,通過Region分散在集群中,當(dāng)行數(shù)增長的時候,Region也會自動的切分和再分配。Hadoop/HDFS集成,和HDFS開箱即用,不用太麻煩的銜接。擴展性強,只需要增加DataNode就可以增加存儲空間。HBase特性豐富的“簡潔,高效”API(應(yīng)用程序接口),提供了Thrift/RESTAPI,JavaAPI等方式對HBase進行訪問。塊緩存,布隆過濾器,可以高效的列查詢優(yōu)化。操作管理,Hbase提供了內(nèi)置的web界面來操作,還可以監(jiān)控JMX指標。高可靠,保證了系統(tǒng)的容錯能力,WAL機制使得數(shù)據(jù)寫入時不會因為集群異常而導(dǎo)致寫入數(shù)據(jù)丟失。故HBase選擇了CAP中的CP。HBase特性面向列的存儲和權(quán)限控制,并支持獨立檢索,可以動態(tài)的增加列。列式存儲:其數(shù)據(jù)在表中是按照某列存儲的,這樣在查詢只需要少數(shù)幾個字段的時候,能大大減少讀取的數(shù)據(jù)量。高性能:具備海量數(shù)據(jù)的隨機訪問和實時讀寫能力。HBase特性分布式文件系統(tǒng)(HDFS)是指文件系統(tǒng)管理的物理存儲資源不僅存儲在本地節(jié)點上,還可以通過網(wǎng)絡(luò)連接存儲在非本地節(jié)點上。計算機集群的基本架構(gòu)HBase與HDFS的區(qū)別HBase與HDFS的區(qū)別

分布式文件系統(tǒng)改變了數(shù)據(jù)存儲和管理方式,相對于本地文件系統(tǒng)具有很存儲和管理分布式多優(yōu)勢:低成本易擴展強可靠高可用1

用戶無需關(guān)心數(shù)據(jù)是存儲在哪個節(jié)點上,可以如同使用本地文件系統(tǒng)一樣文件系統(tǒng)里的數(shù)據(jù)。2HDFS優(yōu)點HDFS是面向批量的訪問模式,其類型為文件系統(tǒng),存儲的是文件類型的數(shù)據(jù)。HBase與HDFS的區(qū)別HBase是面向隨機訪問和實時讀寫模式,其類型為數(shù)據(jù)庫服務(wù),存儲的是非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase使用HDFS作為底層的文件系統(tǒng),HBase的數(shù)據(jù)最終會寫到HDFS中。就像其他的數(shù)據(jù)庫一樣,真正的數(shù)據(jù)是存儲在操作系統(tǒng)里的文件系統(tǒng)中的。HDFS是文件系統(tǒng),Hbase是數(shù)據(jù)庫。你可以把Hbase當(dāng)做是MySQL,把HDFS當(dāng)做是硬盤。Hbase只是一個NoSQL數(shù)據(jù)庫,數(shù)據(jù)時存放在HDFS上的,Hbase在HDFS上提供了高并發(fā)的隨機寫和支持實時查詢,這是HDFS不具備的。HBase與HDFS的區(qū)別原生的ApacheHadoopCDH:ClouderaDistributedHadoopHDP:HortonworksD

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論