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

下載本文檔

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

文檔簡介

廈門大學(xué)計(jì)算機(jī)科學(xué)系2015年版

第四章分布式數(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é)同服務(wù)管理可以擴(kuò)展到PB級別的數(shù)據(jù)和上千臺機(jī)器,具備廣泛應(yīng)用性、可擴(kuò)展性、高性能和高可用性等特點(diǎn)谷歌的許多項(xiàng)目都存儲在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ū)別主要體現(xiàn)在以下幾個方面:(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ū)別主要體現(xiàn)在以下幾個方面:(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 面向列的存儲數(shù)數(shù)據(jù)據(jù)模模型型概概述述HBase是一一個個稀稀疏疏、、多多維維度度、、排排序序的的映映射射表表,,這這張張表表的的索索引引是是行行鍵鍵、、列列族族、、列列限限定定符符和和時時間間戳戳每個個值值是是一一個個未未經(jīng)經(jīng)解解釋釋的的字字符符串串,,沒沒有有數(shù)數(shù)據(jù)據(jù)類類型型用戶戶在在表表中中存存儲儲數(shù)數(shù)據(jù)據(jù),,每每一一行行都都有有一一個個可可排排序序的的行行鍵鍵和和任任意意多多的的列列表在在水水平平方方向向由由一一個個或或者者多多個個列列族族組組成成,,一一個個列列族族中中可可以以包包含含任任意意多多個個列列,,同同一一個個列列族族里里面面的的數(shù)數(shù)據(jù)據(jù)存存儲儲在在一一起起列族族支支持持動動態(tài)態(tài)擴(kuò)擴(kuò)展展,,可可以以很很輕輕松松地地添添加加一一個個列列族族或或列列,,無無需需預(yù)預(yù)先先定定義義列列的的數(shù)數(shù)量量以以及及類類型型,,所所有有列列均均以以字字符符串串形形式式存存儲儲,,用用戶戶需需要要自自行行進(jìn)進(jìn)行行數(shù)數(shù)據(jù)據(jù)類類型型轉(zhuǎn)轉(zhuǎn)換換HBase中執(zhí)執(zhí)行行更更新新操操作作時時,,并并不不會會刪刪除除數(shù)數(shù)據(jù)據(jù)舊舊的的版版本本,,而而是是生生成成一一個個新新的的版版本本,,舊舊有有的的版版本本仍仍然然保保留留數(shù)數(shù)據(jù)據(jù)模模型型相相關(guān)關(guān)概概念念表::HBase采用用表表來來組組織織數(shù)數(shù)據(jù)據(jù),,表表由由行行和和列列組組成成,,列列劃劃分分為為若若干干個個列列族族行::每每個個HBase表都都由由若若干干行行組組成成,,每每個個行行由由行行鍵鍵((rowkey)來來標(biāo)標(biāo)識識。。訪訪問問表表中中的的行行只只有有三三種種方方式式::((1)通通過過單單個個行行鍵鍵訪訪問問;;((2)通通過過一一個個行行鍵鍵的的區(qū)區(qū)間間來來訪訪問問;;((3)全全表表掃掃描描列族族::一一個個HBase表被被分分組組成成許許多多““列列族族””的的集集合合,,它它是是基基本本的的訪訪問問控控制制單單元元列限限定定符符::列列族族里里的的數(shù)數(shù)據(jù)據(jù)通通過過列列限限定定符符((或或列列))來來定定位位單元元格格::在在HBase表中中,,通通過過行行、、列列族族和和列列限限定定符符確確定定一一個個““單單元元格格””((cell),,單單元元格格中中存存儲儲的的數(shù)數(shù)據(jù)據(jù)沒沒有有數(shù)數(shù)據(jù)據(jù)類類型型,,總總被被視視為為字字節(jié)節(jié)數(shù)數(shù)組組byte[]時間戳::每個單單元格都都保存著著同一份份數(shù)據(jù)的的多個版版本,這這些版本本采用時時間戳進(jìn)進(jìn)行索引引數(shù)數(shù)據(jù)模型型相關(guān)概概念圖4-2HBase數(shù)據(jù)模型型的一個個實(shí)例數(shù)數(shù)據(jù)坐標(biāo)標(biāo)HBase中需要根根據(jù)行鍵鍵、列族族、列限限定符和和時間戳戳來確定定一個單單元格,,因此,,可以視視為一個個“四維維坐標(biāo)””,即[行鍵,列族,列限定符符,時間戳]鍵值[“201505003”,“Info”,“email”,1174184619081]“xie@”[“201505003”,“Info”,“email”,1174184620720]“you@163.com”概概念視圖圖表4-4HBase數(shù)數(shù)據(jù)的概概念視圖圖物物理視圖圖表4-5HBase數(shù)數(shù)據(jù)的物物理視圖圖列族contents列族anchor面面向列的的存儲圖4-3行式數(shù)據(jù)據(jù)庫和列列式數(shù)據(jù)據(jù)庫示意意圖面面向列的的存儲圖4-4行式存儲儲結(jié)構(gòu)和和列式存存儲結(jié)構(gòu)構(gòu)4.4HBase的的實(shí)現(xiàn)原原理功能組件件表和Region的定位4.4.1HBase功能能組件HBase的實(shí)現(xiàn)包包括三個個主要的的功能組組件:(1)庫函數(shù)數(shù):鏈接接到每個個客戶端端(2)一個Master主服務(wù)器器(3)許多個個Region服務(wù)器Region服服務(wù)器負(fù)負(fù)責(zé)存儲儲和維護(hù)護(hù)分配給給自己的的Region,處理理來自客客戶端的的讀寫請請求主服務(wù)器器Master負(fù)責(zé)管管理和維維護(hù)HBase表的分分區(qū)信息息客戶端并并不是直直接從Master主主服務(wù)器器上讀取取數(shù)據(jù),,而是在在獲得Region的的存儲位位置信息息后,直直接從Region服服務(wù)器上上讀取數(shù)數(shù)據(jù)表表和Region圖4-5一個HBase表被劃分分成多個個Region圖4-6一個Region會分裂成成多個新新的Region表表和Region圖4-7不同的Region可以分布布在不同同的Region服務(wù)器上上的的定位圖4-8HBase的三層結(jié)結(jié)構(gòu)的的定位表4-6HBase的三層結(jié)結(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.5HBase運(yùn)運(yùn)行機(jī)制制系統(tǒng)架構(gòu)構(gòu)服務(wù)器工工作原理理工作原理理工作原理理4.5.1HBase系統(tǒng)統(tǒng)架構(gòu)圖4-9HBase的系統(tǒng)架架構(gòu)4.5.1HBase系統(tǒng)統(tǒng)架構(gòu)1.客戶端客戶端包包含訪問問HBase的接口,,同時在在緩存中中維護(hù)著著已經(jīng)訪訪問過的的Region位置信息息,用來來加快后后續(xù)數(shù)據(jù)據(jù)訪問過過程2.Zookeeper服務(wù)器Zookeeper可以幫助助選舉出出一個Master作為集群群的總管管,并保保證在任任何時刻刻總有唯唯一一個個Master在運(yùn)行,,這就避避免了Master的“單點(diǎn)點(diǎn)失效””問題3.Master主服務(wù)器器Master主要負(fù)責(zé)責(zé)表和Region的管理工工作:管理用戶戶對表的的增加、、刪除、、修改、、查詢等等操作實(shí)現(xiàn)不同同Region服務(wù)器之之間的負(fù)負(fù)載均衡衡在Region分裂或合合并后,,負(fù)責(zé)重重新調(diào)整整Region的分布對發(fā)生故故障失效效的Region服務(wù)器上上的Region進(jìn)行遷移移4.Region服務(wù)器Region服務(wù)器是是HBase中最核心心的模塊塊,負(fù)責(zé)責(zé)維護(hù)分分配給自自己的Region,并響應(yīng)應(yīng)用戶的的讀寫請請求服服務(wù)器工工作原理理圖4-10Region服服務(wù)器向向HDFS文件件系統(tǒng)中中讀寫數(shù)數(shù)據(jù)1.用戶讀寫寫數(shù)據(jù)過過程2.緩存的刷刷新3.StoreFile的合并4.5.3Store工作作原理圖4-11StoreFile的的合并和和分裂過過程4.5.4HLog工作原原理HBase系統(tǒng)為每每個Region服務(wù)器配配置了一一個HLog文件,它它是一種種預(yù)寫式式日志((WriteAheadLog)Zookeeper會實(shí)時監(jiān)監(jiān)測每個個Region服務(wù)器的的狀態(tài),,當(dāng)某個個Region服務(wù)器發(fā)發(fā)生故障障時,Zookeeper會通知MasterMaster首先會處處理該故故障Region服務(wù)器上上面遺留留的HLog文件,這這個遺留留的HLog文件中包包含了來來自多個個Region對象的日日志記錄錄系統(tǒng)會根根據(jù)每條條日志記記錄所屬屬的Region對象對HLog數(shù)據(jù)進(jìn)行行拆分,,分別放放到相應(yīng)應(yīng)Region對象的目目錄下,,然后,,再將失失效的Region重新分配配到可用用的Region服務(wù)器中中,并把把與該Region對象相關(guān)關(guān)的HLog日志記錄錄也發(fā)送送給相應(yīng)應(yīng)的Region服務(wù)器Region服務(wù)器領(lǐng)領(lǐng)取到分分配給自自己的Region對象以及及與之相相關(guān)的HLog日志記錄錄以后,,會重新新做一遍遍日志記記錄中的的各種操操作,把把日志記記錄中的的數(shù)據(jù)寫寫入到MemStore緩存中,,然后,,刷新到到磁盤的的StoreFile文件中,,完成數(shù)數(shù)據(jù)恢復(fù)復(fù)共用日志志優(yōu)點(diǎn)::提高對對表的寫寫操作性性能;缺缺點(diǎn):恢恢復(fù)時需需要分拆拆日志4.6HBase編編程實(shí)踐踐本節(jié)主要要介紹Linux中關(guān)于HBase數(shù)據(jù)庫的的常用Shell命令,以及數(shù)據(jù)處理理常用的的JavaAPI常用Shell命令常用JavaAPI及應(yīng)用實(shí)實(shí)例4.6.1HBase常用用Shell命命令create:創(chuàng)建表表list:列出HBase中所有的的表信息息4.6.1HBase常用用Shell命命令put:向表、、行、列列指定的的單元格格添加數(shù)數(shù)據(jù)scan:瀏覽表表的相關(guān)關(guān)信息4.6.1HBase常用用Shell命命令get:通過表表名、行行、列、、時間戳戳、時間間范圍和和版本號號來獲得得相應(yīng)單單元格的的值4.6.1HBase常用用Shell命命令enable/disable:使表有有效或無無效drop:刪除表表4.6.2HBase常用用JavaAPI及及應(yīng)用實(shí)實(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.2HBase常用用JavaAPI及及應(yīng)用實(shí)實(shí)例(4)HTableDescriptor包含了HBase中表格的的詳細(xì)信信息,例例如表中中的列族族、該表表的類型型(-ROOT-,.META.)、該表表是否只只讀、MemStore的最大空空間、Region什么時候候應(yīng)該分分裂等等等(5)HColumnDescriptor包含了列列族的詳詳細(xì)信息息,例如如列族的的版本號號、壓縮縮設(shè)置等等。HColumnDescriptor通常在添添加列族族或者創(chuàng)創(chuàng)建表的的時候使使用。列列族一旦旦建立就就不能被被修改,,只能通通過刪除除列族,,然后再再創(chuàng)建新新的列族族來間接接的修改改列族。。一旦列列族被刪刪除了,,該列族族包含的的數(shù)據(jù)也也隨之被被刪除4.6.2HBase常用用JavaAPI及及應(yīng)用實(shí)實(shí)例(6)用來對單單元格執(zhí)執(zhí)行添加加數(shù)據(jù)操操作(7)用來獲取取單行的的信息(8)用于存放放Get或Scan操作后的的查詢結(jié)結(jié)果,并并以<key,value>的格式存存儲在map結(jié)構(gòu)中。。該類不不是線程程安全的的(9)客戶端端獲取取值的的接口口本章小小結(jié)本章詳詳細(xì)介介紹了了HBase數(shù)據(jù)庫庫的知知識。。HBase數(shù)據(jù)庫庫是BigTable的開源源實(shí)現(xiàn)現(xiàn),和和BigTable一樣,,支持持大規(guī)規(guī)模海海量數(shù)數(shù)據(jù),,分布布式并并發(fā)數(shù)數(shù)據(jù)處處理效效率極極高,,易于于擴(kuò)展展且支支持動動態(tài)伸伸縮,,適用用于廉廉價設(shè)設(shè)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論