Chapter4-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第四章-分布式數(shù)據(jù)庫(kù)HBase_第1頁(yè)
Chapter4-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第四章-分布式數(shù)據(jù)庫(kù)HBase_第2頁(yè)
Chapter4-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第四章-分布式數(shù)據(jù)庫(kù)HBase_第3頁(yè)
Chapter4-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第四章-分布式數(shù)據(jù)庫(kù)HBase_第4頁(yè)
Chapter4-廈門大學(xué)-林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用-第四章-分布式數(shù)據(jù)庫(kù)HBase_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

廈門大學(xué)計(jì)算機(jī)科學(xué)系2015年版林子雨廈門大學(xué)計(jì)算機(jī)科學(xué)系主頁(yè):

第四章分布式數(shù)據(jù)庫(kù)HBase

〔PPT版本號(hào):2015年6月第1.0版〕《大數(shù)據(jù)技術(shù)原理與應(yīng)用》溫馨提示:編輯幻燈片母版,可以修改每頁(yè)P(yáng)PT的廈大?;蘸偷撞课淖痔峋V4.1 概述4.2 HBase訪問(wèn)接口4.3 HBase數(shù)據(jù)模型4.4 HBase的實(shí)現(xiàn)原理4.5 HBase運(yùn)行機(jī)制4.6 HBase編程實(shí)踐歡送訪問(wèn)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》教材官方網(wǎng)站:本PPT是如下教材的配套講義:21世紀(jì)高等教育計(jì)算機(jī)規(guī)劃教材《大數(shù)據(jù)技術(shù)原理與應(yīng)用——概念、存儲(chǔ)、處理、分析與應(yīng)用》〔2015年6月第1版〕廈門大學(xué)林子雨編著,人民郵電出版社ISBN:978-7-115-39287-94.1 概述4.1.1 從BigTable說(shuō)起4.1.2 HBase簡(jiǎn)介4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的比照分析4.1.1 從BigTable說(shuō)起B(yǎng)igTable是一個(gè)分布式存儲(chǔ)系統(tǒng)利用谷歌提出的MapReduce分布式并行計(jì)算模型來(lái)處理海量數(shù)據(jù)使用谷歌分布式文件系統(tǒng)GFS作為底層數(shù)據(jù)存儲(chǔ)采用Chubby提供協(xié)同效勞管理可以擴(kuò)展到PB級(jí)別的數(shù)據(jù)和上千臺(tái)機(jī)器,具備廣泛應(yīng)用性、可擴(kuò)展性、高性能和高可用性等特點(diǎn)谷歌的許多工程都存儲(chǔ)在BigTable中,包括搜索、地圖、財(cái)經(jīng)、打印、社交網(wǎng)站Orkut、視頻共享網(wǎng)站YouTube和博客網(wǎng)站Blogger等4.1.2 HBase簡(jiǎn)介HBase是一個(gè)高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫(kù),是谷歌BigTable的開源實(shí)現(xiàn),主要用來(lái)存儲(chǔ)非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase的目標(biāo)是處理非常龐大的表,可以通過(guò)水平擴(kuò)展的方式,利用廉價(jià)計(jì)算機(jī)集群處理由超過(guò)10億行數(shù)據(jù)和數(shù)百萬(wàn)列元素組成的數(shù)據(jù)表圖4-1Hadoop生態(tài)系統(tǒng)中HBase與其他局部的關(guān)系4.1.2 HBase簡(jiǎn)介表4-1HBase和BigTable的底層技術(shù)對(duì)應(yīng)關(guān)系BigTableHBase文件存儲(chǔ)系統(tǒng)GFSHDFS海量數(shù)據(jù)處理MapReduceHadoopMapReduce協(xié)同服務(wù)管理ChubbyZookeeper4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的比照分析HBase與傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的區(qū)別主要表達(dá)在以下幾個(gè)方面:〔1〕數(shù)據(jù)類型:關(guān)系數(shù)據(jù)庫(kù)采用關(guān)系模型,具有豐富的數(shù)據(jù)類型和存儲(chǔ)方式,HBase那么采用了更加簡(jiǎn)單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲(chǔ)為未經(jīng)解釋的字符串〔2〕數(shù)據(jù)操作:關(guān)系數(shù)據(jù)庫(kù)中包含了豐富的操作,其中會(huì)涉及復(fù)雜的多表連接。HBase操作那么不存在復(fù)雜的表與表之間的關(guān)系,只有簡(jiǎn)單的插入、查詢、刪除、清空等,因?yàn)镠Base在設(shè)計(jì)上就防止了復(fù)雜的表和表之間的關(guān)系〔3〕存儲(chǔ)模式:關(guān)系數(shù)據(jù)庫(kù)是基于行模式存儲(chǔ)的。HBase是基于列存儲(chǔ)的,每個(gè)列族都由幾個(gè)文件保存,不同列族的文件是別離的4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的比照分析HBase與傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)的區(qū)別主要表達(dá)在以下幾個(gè)方面:〔4〕數(shù)據(jù)索引:關(guān)系數(shù)據(jù)庫(kù)通??梢葬槍?duì)不同列構(gòu)建復(fù)雜的多個(gè)索引,以提高數(shù)據(jù)訪問(wèn)性能。HBase只有一個(gè)索引——行鍵,通過(guò)巧妙的設(shè)計(jì),HBase中的所有訪問(wèn)方法,或者通過(guò)行鍵訪問(wèn),或者通過(guò)行鍵掃描,從而使得整個(gè)系統(tǒng)不會(huì)慢下來(lái)〔5〕數(shù)據(jù)維護(hù):在關(guān)系數(shù)據(jù)庫(kù)中,更新操作會(huì)用最新的當(dāng)前值去替換記錄中原來(lái)的舊值,舊值被覆蓋后就不會(huì)存在。而在HBase中執(zhí)行更新操作時(shí),并不會(huì)刪除數(shù)據(jù)舊的版本,而是生成一個(gè)新的版本,舊有的版本仍然保存〔6〕可伸縮性:關(guān)系數(shù)據(jù)庫(kù)很難實(shí)現(xiàn)橫向擴(kuò)展,縱向擴(kuò)展的空間也比較有限。相反,HBase和BigTable這些分布式數(shù)據(jù)庫(kù)就是為了實(shí)現(xiàn)靈活的水平擴(kuò)展而開發(fā)的,能夠輕易地通過(guò)在集群中增加或者減少硬件數(shù)量來(lái)實(shí)現(xiàn)性能的伸縮4.2 HBase訪問(wèn)接口表4-2HBase訪問(wèn)接口類型特點(diǎn)場(chǎng)合NativeJavaAPI最常規(guī)和高效的訪問(wèn)方式適合HadoopMapReduce作業(yè)并行批處理HBase表數(shù)據(jù)HBaseShellHBase的命令行工具,最簡(jiǎn)單的接口適合HBase管理使用ThriftGateway利用Thrift序列化技術(shù),支持C++、PHP、Python等多種語(yǔ)言適合其他異構(gòu)系統(tǒng)在線訪問(wèn)HBase表數(shù)據(jù)RESTGateway解除了語(yǔ)言限制支持REST風(fēng)格的HttpAPI訪問(wèn)HBasePig使用PigLatin流式編程語(yǔ)言來(lái)處理HBase中的數(shù)據(jù)適合做數(shù)據(jù)統(tǒng)計(jì)Hive簡(jiǎn)單當(dāng)需要以類似SQL語(yǔ)言方式來(lái)訪問(wèn)HBase的時(shí)候4.3 HBase數(shù)據(jù)模型4.3.1 數(shù)據(jù)模型概述4.3.2 數(shù)據(jù)模型相關(guān)概念4.3.3 數(shù)據(jù)坐標(biāo)4.3.4 概念視圖4.3.5 物理視圖4.3.6 面向列的存儲(chǔ)4.3.1 數(shù)據(jù)模型概述HBase是一個(gè)稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時(shí)間戳每個(gè)值是一個(gè)未經(jīng)解釋的字符串,沒(méi)有數(shù)據(jù)類型用戶在表中存儲(chǔ)數(shù)據(jù),每一行都有一個(gè)可排序的行鍵和任意多的列表在水平方向由一個(gè)或者多個(gè)列族組成,一個(gè)列族中可以包含任意多個(gè)列,同一個(gè)列族里面的數(shù)據(jù)存儲(chǔ)在一起列族支持動(dòng)態(tài)擴(kuò)展,可以很輕松地添加一個(gè)列族或列,無(wú)需預(yù)先定義列的數(shù)量以及類型,所有列均以字符串形式存儲(chǔ),用戶需要自行進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換HBase中執(zhí)行更新操作時(shí),并不會(huì)刪除數(shù)據(jù)舊的版本,而是生成一個(gè)新的版本,舊有的版本仍然保存4.3.2 數(shù)據(jù)模型相關(guān)概念表:HBase采用表來(lái)組織數(shù)據(jù),表由行和列組成,列劃分為假設(shè)干個(gè)列族行:每個(gè)HBase表都由假設(shè)干行組成,每個(gè)行由行鍵〔rowkey〕來(lái)標(biāo)識(shí)。訪問(wèn)表中的行只有三種方式:〔1〕通過(guò)單個(gè)行鍵訪問(wèn);〔2〕通過(guò)一個(gè)行鍵的區(qū)間來(lái)訪問(wèn);〔3〕全表掃描列族:一個(gè)HBase表被分組成許多“列族”的集合,它是根本的訪問(wèn)控制單元列限定符:列族里的數(shù)據(jù)通過(guò)列限定符〔或列〕來(lái)定位單元格:在HBase表中,通過(guò)行、列族和列限定符確定一個(gè)“單元格”〔cell〕,單元格中存儲(chǔ)的數(shù)據(jù)沒(méi)有數(shù)據(jù)類型,總被視為字節(jié)數(shù)組byte[]時(shí)間戳:每個(gè)單元格都保存著同一份數(shù)據(jù)的多個(gè)版本,這些版本采用時(shí)間戳進(jìn)行索引4.3.2 數(shù)據(jù)模型相關(guān)概念圖4-2HBase數(shù)據(jù)模型的一個(gè)實(shí)例4.3.3 數(shù)據(jù)坐標(biāo)HBase中需要根據(jù)行鍵、列族、列限定符和時(shí)間戳來(lái)確定一個(gè)單元格,因此,可以視為一個(gè)“四維坐標(biāo)”,即[行鍵,列族,列限定符,時(shí)間戳]鍵值[“201505003”,“Info”,“email”,1174184619081]“xie@”[“201505003”,“Info”,“email”,1174184620720]“you@163.com”4.3.4 概念視圖表4-4HBase數(shù)據(jù)的概念視圖行鍵時(shí)間戳列族contents列族anchor"n.www"t5anchor:=”CNN”t4anchor:my.look.ca="CNN.com"t3contents:html="<html>..."t2contents:html="<html>..."t1contents:html="<html>..."4.3.5 物理視圖表4-5HBase數(shù)據(jù)的物理視圖列族contents行鍵時(shí)間戳列族contents"n.www"t3contents:html="<html>..."t2contents:html="<html>..."t1contents:html="<html>..."列族anchor行鍵時(shí)間戳列族anchor"n.www"t5anchor:=”CNN”t4anchor:my.look.ca="CNN.com"4.3.6 面向列的存儲(chǔ)圖4-3行式數(shù)據(jù)庫(kù)和列式數(shù)據(jù)庫(kù)示意圖4.3.6 面向列的存儲(chǔ)圖4-4行式存儲(chǔ)結(jié)構(gòu)和列式存儲(chǔ)結(jié)構(gòu)4.4 HBase的實(shí)現(xiàn)原理4.4.1 HBase功能組件4.4.2 表和Region4.4.3 Region的定位4.4.1 HBase功能組件HBase的實(shí)現(xiàn)包括三個(gè)主要的功能組件:〔1〕庫(kù)函數(shù):鏈接到每個(gè)客戶端〔2〕一個(gè)Master主效勞器〔3〕許多個(gè)Region效勞器Region效勞器負(fù)責(zé)存儲(chǔ)和維護(hù)分配給自己的Region,處理來(lái)自客戶端的讀寫請(qǐng)求主效勞器Master負(fù)責(zé)管理和維護(hù)HBase表的分區(qū)信息客戶端并不是直接從Master主效勞器上讀取數(shù)據(jù),而是在獲得Region的存儲(chǔ)位置信息后,直接從Region效勞器上讀取數(shù)據(jù)4.4.2 表和Region圖4-5一個(gè)HBase表被劃分成多個(gè)Region圖4-6一個(gè)Region會(huì)分裂成多個(gè)新的Region4.4.2 表和Region圖4-7不同的Region可以分布在不同的Region效勞器上4.4.3 Region的定位圖4-8HBase的三層結(jié)構(gòu)4.4.3 Region的定位表4-6HBase的三層結(jié)構(gòu)中各層次的名稱和作用層次名稱作用第一層Zookeeper文件記錄了-ROOT-表的位置信息第二層-ROOT-表記錄了.META.表的Region位置信息-ROOT-表只能有一個(gè)Region。通過(guò)-ROOT-表,就可以訪問(wèn).META.表中的數(shù)據(jù)第三層.META.表記錄了用戶數(shù)據(jù)表的Region位置信息,.META.表可以有多個(gè)Region,保存了HBase中所有用戶數(shù)據(jù)表的Region位置信息4.5 HBase運(yùn)行機(jī)制4.5.1 HBase系統(tǒng)架構(gòu)4.5.2 Region效勞器工作原理4.5.3 Store工作原理4.5.4 HLog工作原理4.5.1 HBase系統(tǒng)架構(gòu)圖4-9HBase的系統(tǒng)架構(gòu)4.5.1 HBase系統(tǒng)架構(gòu)1.客戶端客戶端包含訪問(wèn)HBase的接口,同時(shí)在緩存中維護(hù)著已經(jīng)訪問(wèn)過(guò)的Region位置信息,用來(lái)加快后續(xù)數(shù)據(jù)訪問(wèn)過(guò)程2.Zookeeper效勞器Zookeeper可以幫助選舉出一個(gè)Master作為集群的總管,并保證在任何時(shí)刻總有唯一一個(gè)Master在運(yùn)行,這就防止了Master的“單點(diǎn)失效”問(wèn)題3.Master主效勞器Master主要負(fù)責(zé)表和Region的管理工作:管理用戶對(duì)表的增加、刪除、修改、查詢等操作實(shí)現(xiàn)不同Region效勞器之間的負(fù)載均衡在Region分裂或合并后,負(fù)責(zé)重新調(diào)整Region的分布對(duì)發(fā)生故障失效的Region效勞器上的Region進(jìn)行遷移4.Region效勞器Region效勞器是HBase中最核心的模塊,負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求4.5.2 Region效勞器工作原理圖4-10Region效勞器向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)1.用戶讀寫數(shù)據(jù)過(guò)程

2.緩存的刷新3.StoreFile的合并4.5.3 Store工作原理圖4-11StoreFile的合并和分裂過(guò)程4.5.4 HLog工作原理HBase系統(tǒng)為每個(gè)Region效勞器配置了一個(gè)HLog文件,它是一種預(yù)寫式日志〔WriteAheadLog〕Zookeeper會(huì)實(shí)時(shí)監(jiān)測(cè)每個(gè)Region效勞器的狀態(tài),當(dāng)某個(gè)Region效勞器發(fā)生故障時(shí),Zookeeper會(huì)通知MasterMaster首先會(huì)處理該故障Region效勞器上面遺留的HLog文件,這個(gè)遺留的HLog文件中包含了來(lái)自多個(gè)Region對(duì)象的日志記錄系統(tǒng)會(huì)根據(jù)每條日志記錄所屬的Region對(duì)象對(duì)HLog數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)Region對(duì)象的目錄下,然后,再將失效的Region重新分配到可用的Region效勞器中,并把與該Region對(duì)象相關(guān)的HLog日志記錄也發(fā)送給相應(yīng)的Region效勞器Region效勞器領(lǐng)取到分配給自己的Region對(duì)象以及與之相關(guān)的HLog日志記錄以后,會(huì)重新做一遍日志記錄中的各種操作,把日志記錄中的數(shù)據(jù)寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數(shù)據(jù)恢復(fù)共用日志優(yōu)點(diǎn):提高對(duì)表的寫操作性能;缺點(diǎn):恢復(fù)時(shí)需要分拆日志4.6HBase編程實(shí)踐

本節(jié)主要介紹Linux中關(guān)于HBase數(shù)據(jù)庫(kù)的常用Shell命令,以及數(shù)據(jù)處理常用的JavaAPI4.6.1 HBase常用Shell命令4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例4.6.1 HBase常用Shell命令create:創(chuàng)立表list:列出HBase中所有的表信息4.6.1 HBase常用Shell命令put:向表、行、列指定的單元格添加數(shù)據(jù)scan:瀏覽表的相關(guān)信息4.6.1 HBase常用Shell命令get:通過(guò)表名、行、列、時(shí)間戳、時(shí)間范圍和版本號(hào)來(lái)獲得相應(yīng)單元格的值4.6.1 HBase常用Shell命令enable/disable:使表有效或無(wú)效drop:刪除表4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例Hbase常用JavaAPI〔1〕該類用于管理HBase數(shù)據(jù)庫(kù)的表信息,包括創(chuàng)立或刪除表、列出表項(xiàng)、使表有效或無(wú)效、添加或刪除表的列族成員、檢查HBase的運(yùn)行狀態(tài)等

〔2〕該類用于管理HBase的配置信息

〔3〕用于與HBase進(jìn)行通信。如果多個(gè)線程對(duì)一個(gè)HTable對(duì)象進(jìn)行put或者delete操作的話,那么寫緩沖器可能會(huì)崩潰4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例〔4〕HTableDescriptor包含了HBase中表格的詳細(xì)信息,例如表中的列族、該表的類型〔-ROOT-,.META.〕、該表是否只讀、MemStore的最大空間、Region什么時(shí)候應(yīng)該分裂等等〔5〕HColumnDescriptor包含了列族的詳細(xì)信息,例如列族的版本號(hào)、壓縮設(shè)置等。HColumnDescriptor通常在添加列族或者創(chuàng)立表的時(shí)候使用。列族一旦建立就不能被修改,只能通過(guò)刪除列族,然后再創(chuàng)立新的列族來(lái)間接的修改列族。一旦列族被刪除了,該列族包含的數(shù)據(jù)也隨之被刪除4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例〔6〕用來(lái)對(duì)單元格執(zhí)行添加數(shù)據(jù)操作〔7〕用來(lái)獲取單行的信息〔8〕用于存放Get或Scan操作后的查詢結(jié)果,并以<key,value>的格式存儲(chǔ)在map結(jié)構(gòu)中。該類不是線程平安的〔9〕客戶端獲取值的接口

本章小結(jié)本章詳細(xì)介紹了HBase數(shù)據(jù)庫(kù)的知

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論