版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
廈門大學(xué)計(jì)算機(jī)科學(xué)系2015年版林子雨廈門大學(xué)計(jì)算機(jī)科學(xué)系主頁:
第四章分布式數(shù)據(jù)庫HBase
〔PPT版本號:2015年6月第1.0版〕《大數(shù)據(jù)技術(shù)原理與應(yīng)用》溫馨提示:編輯幻燈片母版,可以修改每頁P(yáng)PT的廈大?;蘸偷撞课淖痔峋V4.1 概述4.2 HBase訪問接口4.3 HBase數(shù)據(jù)模型4.4 HBase的實(shí)現(xiàn)原理4.5 HBase運(yùn)行機(jī)制4.6 HBase編程實(shí)踐歡送訪問《大數(shù)據(jù)技術(shù)原理與應(yīng)用》教材官方網(wǎng)站:本PPT是如下教材的配套講義:21世紀(jì)高等教育計(jì)算機(jī)規(guī)劃教材《大數(shù)據(jù)技術(shù)原理與應(yīng)用——概念、存儲、處理、分析與應(yīng)用》〔2015年6月第1版〕廈門大學(xué)林子雨編著,人民郵電出版社ISBN:978-7-115-39287-94.1 概述4.1.1 從BigTable說起4.1.2 HBase簡介4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫的比照分析4.1.1 從BigTable說起B(yǎng)igTable是一個分布式存儲系統(tǒng)利用谷歌提出的MapReduce分布式并行計(jì)算模型來處理海量數(shù)據(jù)使用谷歌分布式文件系統(tǒng)GFS作為底層數(shù)據(jù)存儲采用Chubby提供協(xié)同效勞管理可以擴(kuò)展到PB級別的數(shù)據(jù)和上千臺機(jī)器,具備廣泛應(yīng)用性、可擴(kuò)展性、高性能和高可用性等特點(diǎn)谷歌的許多工程都存儲在BigTable中,包括搜索、地圖、財(cái)經(jīng)、打印、社交網(wǎng)站Orkut、視頻共享網(wǎng)站YouTube和博客網(wǎng)站Blogger等4.1.2 HBase簡介HBase是一個高可靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,是谷歌BigTable的開源實(shí)現(xiàn),主要用來存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase的目標(biāo)是處理非常龐大的表,可以通過水平擴(kuò)展的方式,利用廉價計(jì)算機(jī)集群處理由超過10億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表圖4-1Hadoop生態(tài)系統(tǒng)中HBase與其他局部的關(guān)系4.1.2 HBase簡介表4-1HBase和BigTable的底層技術(shù)對應(yīng)關(guān)系BigTableHBase文件存儲系統(tǒng)GFSHDFS海量數(shù)據(jù)處理MapReduceHadoopMapReduce協(xié)同服務(wù)管理ChubbyZookeeper4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫的比照分析HBase與傳統(tǒng)的關(guān)系數(shù)據(jù)庫的區(qū)別主要表達(dá)在以下幾個方面:〔1〕數(shù)據(jù)類型:關(guān)系數(shù)據(jù)庫采用關(guān)系模型,具有豐富的數(shù)據(jù)類型和存儲方式,HBase那么采用了更加簡單的數(shù)據(jù)模型,它把數(shù)據(jù)存儲為未經(jīng)解釋的字符串〔2〕數(shù)據(jù)操作:關(guān)系數(shù)據(jù)庫中包含了豐富的操作,其中會涉及復(fù)雜的多表連接。HBase操作那么不存在復(fù)雜的表與表之間的關(guān)系,只有簡單的插入、查詢、刪除、清空等,因?yàn)镠Base在設(shè)計(jì)上就防止了復(fù)雜的表和表之間的關(guān)系〔3〕存儲模式:關(guān)系數(shù)據(jù)庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是別離的4.1.3 HBase與傳統(tǒng)關(guān)系數(shù)據(jù)庫的比照分析HBase與傳統(tǒng)的關(guān)系數(shù)據(jù)庫的區(qū)別主要表達(dá)在以下幾個方面:〔4〕數(shù)據(jù)索引:關(guān)系數(shù)據(jù)庫通常可以針對不同列構(gòu)建復(fù)雜的多個索引,以提高數(shù)據(jù)訪問性能。HBase只有一個索引——行鍵,通過巧妙的設(shè)計(jì),HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統(tǒng)不會慢下來〔5〕數(shù)據(jù)維護(hù):在關(guān)系數(shù)據(jù)庫中,更新操作會用最新的當(dāng)前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊有的版本仍然保存〔6〕可伸縮性:關(guān)系數(shù)據(jù)庫很難實(shí)現(xiàn)橫向擴(kuò)展,縱向擴(kuò)展的空間也比較有限。相反,HBase和BigTable這些分布式數(shù)據(jù)庫就是為了實(shí)現(xiàn)靈活的水平擴(kuò)展而開發(fā)的,能夠輕易地通過在集群中增加或者減少硬件數(shù)量來實(shí)現(xiàn)性能的伸縮4.2 HBase訪問接口表4-2HBase訪問接口類型特點(diǎn)場合NativeJavaAPI最常規(guī)和高效的訪問方式適合HadoopMapReduce作業(yè)并行批處理HBase表數(shù)據(jù)HBaseShellHBase的命令行工具,最簡單的接口適合HBase管理使用ThriftGateway利用Thrift序列化技術(shù),支持C++、PHP、Python等多種語言適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù)RESTGateway解除了語言限制支持REST風(fēng)格的HttpAPI訪問HBasePig使用PigLatin流式編程語言來處理HBase中的數(shù)據(jù)適合做數(shù)據(jù)統(tǒng)計(jì)Hive簡單當(dāng)需要以類似SQL語言方式來訪問HBase的時候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 面向列的存儲4.3.1 數(shù)據(jù)模型概述HBase是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時間戳每個值是一個未經(jīng)解釋的字符串,沒有數(shù)據(jù)類型用戶在表中存儲數(shù)據(jù),每一行都有一個可排序的行鍵和任意多的列表在水平方向由一個或者多個列族組成,一個列族中可以包含任意多個列,同一個列族里面的數(shù)據(jù)存儲在一起列族支持動態(tài)擴(kuò)展,可以很輕松地添加一個列族或列,無需預(yù)先定義列的數(shù)量以及類型,所有列均以字符串形式存儲,用戶需要自行進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換HBase中執(zhí)行更新操作時,并不會刪除數(shù)據(jù)舊的版本,而是生成一個新的版本,舊有的版本仍然保存4.3.2 數(shù)據(jù)模型相關(guān)概念表:HBase采用表來組織數(shù)據(jù),表由行和列組成,列劃分為假設(shè)干個列族行:每個HBase表都由假設(shè)干行組成,每個行由行鍵〔rowkey〕來標(biāo)識。訪問表中的行只有三種方式:〔1〕通過單個行鍵訪問;〔2〕通過一個行鍵的區(qū)間來訪問;〔3〕全表掃描列族:一個HBase表被分組成許多“列族”的集合,它是根本的訪問控制單元列限定符:列族里的數(shù)據(jù)通過列限定符〔或列〕來定位單元格:在HBase表中,通過行、列族和列限定符確定一個“單元格”〔cell〕,單元格中存儲的數(shù)據(jù)沒有數(shù)據(jù)類型,總被視為字節(jié)數(shù)組byte[]時間戳:每個單元格都保存著同一份數(shù)據(jù)的多個版本,這些版本采用時間戳進(jìn)行索引4.3.2 數(shù)據(jù)模型相關(guān)概念圖4-2HBase數(shù)據(jù)模型的一個實(shí)例4.3.3 數(shù)據(jù)坐標(biāo)HBase中需要根據(jù)行鍵、列族、列限定符和時間戳來確定一個單元格,因此,可以視為一個“四維坐標(biāo)”,即[行鍵,列族,列限定符,時間戳]鍵值[“201505003”,“Info”,“email”,1174184619081]“xie@”[“201505003”,“Info”,“email”,1174184620720]“you@163.com”4.3.4 概念視圖表4-4HBase數(shù)據(jù)的概念視圖行鍵時間戳列族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行鍵時間戳列族contents"n.www"t3contents:html="<html>..."t2contents:html="<html>..."t1contents:html="<html>..."列族anchor行鍵時間戳列族anchor"n.www"t5anchor:=”CNN”t4anchor:my.look.ca="CNN.com"4.3.6 面向列的存儲圖4-3行式數(shù)據(jù)庫和列式數(shù)據(jù)庫示意圖4.3.6 面向列的存儲圖4-4行式存儲結(jié)構(gòu)和列式存儲結(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)包括三個主要的功能組件:〔1〕庫函數(shù):鏈接到每個客戶端〔2〕一個Master主效勞器〔3〕許多個Region效勞器Region效勞器負(fù)責(zé)存儲和維護(hù)分配給自己的Region,處理來自客戶端的讀寫請求主效勞器Master負(fù)責(zé)管理和維護(hù)HBase表的分區(qū)信息客戶端并不是直接從Master主效勞器上讀取數(shù)據(jù),而是在獲得Region的存儲位置信息后,直接從Region效勞器上讀取數(shù)據(jù)4.4.2 表和Region圖4-5一個HBase表被劃分成多個Region圖4-6一個Region會分裂成多個新的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-表只能有一個Region。通過-ROOT-表,就可以訪問.META.表中的數(shù)據(jù)第三層.META.表記錄了用戶數(shù)據(jù)表的Region位置信息,.META.表可以有多個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.客戶端客戶端包含訪問HBase的接口,同時在緩存中維護(hù)著已經(jīng)訪問過的Region位置信息,用來加快后續(xù)數(shù)據(jù)訪問過程2.Zookeeper效勞器Zookeeper可以幫助選舉出一個Master作為集群的總管,并保證在任何時刻總有唯一一個Master在運(yùn)行,這就防止了Master的“單點(diǎn)失效”問題3.Master主效勞器Master主要負(fù)責(zé)表和Region的管理工作:管理用戶對表的增加、刪除、修改、查詢等操作實(shí)現(xiàn)不同Region效勞器之間的負(fù)載均衡在Region分裂或合并后,負(fù)責(zé)重新調(diào)整Region的分布對發(fā)生故障失效的Region效勞器上的Region進(jìn)行遷移4.Region效勞器Region效勞器是HBase中最核心的模塊,負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請求4.5.2 Region效勞器工作原理圖4-10Region效勞器向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)1.用戶讀寫數(shù)據(jù)過程
2.緩存的刷新3.StoreFile的合并4.5.3 Store工作原理圖4-11StoreFile的合并和分裂過程4.5.4 HLog工作原理HBase系統(tǒng)為每個Region效勞器配置了一個HLog文件,它是一種預(yù)寫式日志〔WriteAheadLog〕Zookeeper會實(shí)時監(jiān)測每個Region效勞器的狀態(tài),當(dāng)某個Region效勞器發(fā)生故障時,Zookeeper會通知MasterMaster首先會處理該故障Region效勞器上面遺留的HLog文件,這個遺留的HLog文件中包含了來自多個Region對象的日志記錄系統(tǒng)會根據(jù)每條日志記錄所屬的Region對象對HLog數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)Region對象的目錄下,然后,再將失效的Region重新分配到可用的Region效勞器中,并把與該Region對象相關(guān)的HLog日志記錄也發(fā)送給相應(yīng)的Region效勞器Region效勞器領(lǐng)取到分配給自己的Region對象以及與之相關(guān)的HLog日志記錄以后,會重新做一遍日志記錄中的各種操作,把日志記錄中的數(shù)據(jù)寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數(shù)據(jù)恢復(fù)共用日志優(yōu)點(diǎn):提高對表的寫操作性能;缺點(diǎn):恢復(fù)時需要分拆日志4.6HBase編程實(shí)踐
本節(jié)主要介紹Linux中關(guān)于HBase數(shù)據(jù)庫的常用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:通過表名、行、列、時間戳、時間范圍和版本號來獲得相應(yīng)單元格的值4.6.1 HBase常用Shell命令enable/disable:使表有效或無效drop:刪除表4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例Hbase常用JavaAPI〔1〕該類用于管理HBase數(shù)據(jù)庫的表信息,包括創(chuàng)立或刪除表、列出表項(xiàng)、使表有效或無效、添加或刪除表的列族成員、檢查HBase的運(yùn)行狀態(tài)等
〔2〕該類用于管理HBase的配置信息
〔3〕用于與HBase進(jìn)行通信。如果多個線程對一個HTable對象進(jìn)行put或者delete操作的話,那么寫緩沖器可能會崩潰4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例〔4〕HTableDescriptor包含了HBase中表格的詳細(xì)信息,例如表中的列族、該表的類型〔-ROOT-,.META.〕、該表是否只讀、MemStore的最大空間、Region什么時候應(yīng)該分裂等等〔5〕HColumnDescriptor包含了列族的詳細(xì)信息,例如列族的版本號、壓縮設(shè)置等。HColumnDescriptor通常在添加列族或者創(chuàng)立表的時候使用。列族一旦建立就不能被修改,只能通過刪除列族,然后再創(chuàng)立新的列族來間接的修改列族。一旦列族被刪除了,該列族包含的數(shù)據(jù)也隨之被刪除4.6.2 HBase常用JavaAPI及應(yīng)用實(shí)例〔6〕用來對單元格執(zhí)行添加數(shù)據(jù)操作〔7〕用來獲取單行的信息〔8〕用于存放Get或Scan操作后的查詢結(jié)果,并以<key,value>的格式存儲在map結(jié)構(gòu)中。該類不是線程平安的〔9〕客戶端獲取值的接口
本章小結(jié)本章詳細(xì)介紹了HBase數(shù)據(jù)庫的知
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度醫(yī)療設(shè)備研發(fā)與應(yīng)用合同3篇
- 二零二五版私募股權(quán)投資基金股權(quán)收購合同2篇
- 二零二五版企業(yè)股權(quán)激勵項(xiàng)目執(zhí)行與改進(jìn)合同2篇
- 二零二五年度房產(chǎn)投資分期付款合同模板3篇
- 二零二五年蔬菜種子進(jìn)口合同2篇
- 二零二五年度酒樓市場拓展與股權(quán)激勵方案合同2篇
- 二零二五年模具生產(chǎn)項(xiàng)目質(zhì)量保證合同3篇
- 二零二五版智能家居貨款擔(dān)保合同范本3篇
- 二零二五年船舶抵押借款合同范本修訂版3篇
- 二零二五年戶外活動用安全護(hù)欄租賃合同3篇
- 分割不動產(chǎn)的協(xié)議書(2篇)
- 菏澤2024年山東菏澤市中心血站招聘15人筆試歷年典型考點(diǎn)(頻考版試卷)附帶答案詳解版
- 供熱通風(fēng)與空調(diào)工程施工企業(yè)生產(chǎn)安全事故隱患排查治理體系實(shí)施指南
- 精-品解析:廣東省深圳市羅湖區(qū)2023-2024學(xué)年高一上學(xué)期期末考試化學(xué)試題(解析版)
- 記賬實(shí)操-基金管理公司的會計(jì)處理分錄示例
- 中國慢性便秘診治指南
- 兒童流感診療及預(yù)防指南(2024醫(yī)生版)
- 沐足行業(yè)嚴(yán)禁黃賭毒承諾書
- 2025年蛇年紅色喜慶中國風(fēng)春節(jié)傳統(tǒng)節(jié)日介紹
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 山西省2024年中考物理試題(含答案)
評論
0/150
提交評論