大數(shù)據(jù)實踐教學(xué)課件:第3章Hadoop數(shù)據(jù)庫HBase_第1頁
大數(shù)據(jù)實踐教學(xué)課件:第3章Hadoop數(shù)據(jù)庫HBase_第2頁
大數(shù)據(jù)實踐教學(xué)課件:第3章Hadoop數(shù)據(jù)庫HBase_第3頁
大數(shù)據(jù)實踐教學(xué)課件:第3章Hadoop數(shù)據(jù)庫HBase_第4頁
大數(shù)據(jù)實踐教學(xué)課件:第3章Hadoop數(shù)據(jù)庫HBase_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材大數(shù)據(jù)實踐第1頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell習(xí)題3.5HBase模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第2頁,共63頁。3.1 HBase簡介第三章 Hadoop數(shù)據(jù)庫HBase1體系架構(gòu)第3頁,共63頁。HBase體系架構(gòu)ZooKeeperHRegionServerHMasterClientZooKeepe主要用于解決分布式應(yīng)用中經(jīng)常遇到的統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、配置項管理等問題。HBase在存儲表數(shù)據(jù)時自動按行鍵(rowkey)

2、將表分成很多塊進(jìn)行存儲,每一塊稱為一個HRegion。HRegionServer負(fù)責(zé)管理本服務(wù)器上的HRegions、處理對HRegion的I/O請求。HRegion是HBase表數(shù)據(jù)存儲分配的最小單位,會自動進(jìn)行拆分與合并。集群的管理者HMaster失效短時間內(nèi)HBase集群仍可繼續(xù)工作最多可配置10個HMasterClient端有訪問HBase的接口,并通過緩存來加快對HBase的訪問。元數(shù)據(jù)所有的HRegion ID及其映射信息組成了HRegions元數(shù)據(jù)。用戶表的HRegions元數(shù)據(jù)被存儲在.META.表中。第三章 Hadoop數(shù)據(jù)庫HBase3.1 HBase簡介第4頁,共63頁。

3、HRegion定位示意圖第三章 Hadoop數(shù)據(jù)庫HBase3.1 HBase簡介ZooKeeper-ROOT-HRegion.META.HRegionHRegionHRegion用戶表HRegionHRegionHRegion用戶表HRegionHRegionHRegion第5頁,共63頁。3.1 HBase簡介第三章 Hadoop數(shù)據(jù)庫HBase2數(shù)據(jù)模型1)基本術(shù)語表(Table):HBase中的表由若干行組成。行(Row):HBase中表的一行由一個行鍵和若干個列名到值的映射組成。列(Column):HBase中的每一列都屬于某一列族,列名稱由:組成。列族(Column Family)

4、:HBase表在存儲上是按列族存儲的,將一張表同一列族下的所有列及其值存儲在一起以便達(dá)到更好的性能。列修飾符(Column Qualifier):列修飾符加在列族名的后面用于表示某一列。單元(Cell):HBase中通過行鍵、列族、列修飾符的組合定位到一個單元,每個單元保存著多個版本的數(shù)據(jù),即多個帶有時間戳的值,時間戳代表了值的版本。時間戳(Timestamp):HBase中保存的每個值都帶有一個時間戳,以時間戳作為值的版本標(biāo)識。第6頁,共63頁。3.1 HBase簡介第三章 Hadoop數(shù)據(jù)庫HBase2)概念視圖示例行鍵時間戳列族basicinfo列族performance列族packag

5、eC000001t9basicinfo:position= Tenical managerperformance:y2016= Apackage:salary=15000package:bonus=20000t6performance:y2015= Bpackage:salary=13000package:bonus=10000t3basicinfo:name=張三basicinfo:gender=男basicinfo:birthyear=1978basicinfo:position=Senior engineerpackage:salary=12000C000002t7performance

6、:y2016= Ct4basicinfo:name=李四basicinfo:gender=男basicinfo:birthyear=1986basicinfo:position= Engineerpackage:salary=8000第7頁,共63頁。3.1 HBase簡介第三章 Hadoop數(shù)據(jù)庫HBase3)物理視圖示例行鍵時間戳列族basicinfoC000001t9basicinfo:position=Tenical managert3basicinfo:name=張三basicinfo:gender=男basicinfo:birthyear=1978basicinfo:positio

7、n=Senior engineerC000002t4basicinfo:name=李四basicinfo:gender=男basicinfo:birthyear=1986basicinfo:position=Engineer行鍵時間戳列族performanceC000001t9performance:y2016= At6performance:y2015= BC000002t7performance:y2016= C行鍵時間戳列族packageC000001t9package:salary=15000package:bonus=20000t6package:salary=13000packag

8、e:bonus=10000t3package:salary=12000C000002t4package:salary=8000第8頁,共63頁。3.1 HBase簡介第三章 Hadoop數(shù)據(jù)庫HBase3主要特性可伸縮性強(qiáng)讀寫一致性自動分片HRegionServer自動故障切換Hadoop/HDFS集成MapReduce集成提供Java客戶端API提供Thrift/REST API塊緩存和布隆過濾(Bloom Filters)提供內(nèi)置的Web操作管理頁面第9頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell

9、習(xí)題3.5HBase模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第10頁,共63頁。3.2 HBase部署HBase集群對安裝和運行環(huán)境的基本要求如下:安裝JDK建立ssh免費訪問提供DNS服務(wù)器安裝NTP服務(wù)ulimit配置支持GNU Bash Shell安裝Hadoop安裝ZooKeeper第三章 Hadoop數(shù)據(jù)庫HBase1準(zhǔn)備工作第11頁,共63頁。3.2 HBase部署單節(jié)點部署步驟如下:選定安裝目錄,解壓HBase安裝包;在HBase配置文件conf/hbase-env.sh中配置JAVA_HOME;在HBase配置文件conf/hbase-site.xml中配置HBa

10、se和ZooKeeper用于寫數(shù)據(jù)的目錄;至此HBase單節(jié)點部署完畢,可執(zhí)行腳本bin/start-hbase.sh啟動HBase。第三章 Hadoop數(shù)據(jù)庫HBase2單節(jié)點部署第12頁,共63頁。3.2 HBase部署可以訪問網(wǎng)址http:/:16010來查看HBase狀態(tài):第三章 Hadoop數(shù)據(jù)庫HBase第13頁,共63頁。3.2 HBase部署將HBase單節(jié)點部署改為偽分布式部署并改用HDFS存儲數(shù)據(jù)的步驟如下:停止HBase;配置文件conf/hbase-site.xml中增加hbase.cluster.distributed配置項并修改hbase.rootdir的配置值為H

11、DFS目錄;啟動HBase;檢查HBase目錄;啟動和停止備用HMaster;啟動和停止更多HRegionServers。第三章 Hadoop數(shù)據(jù)庫HBase3偽分布式部署第14頁,共63頁。3.2 HBase部署HBase集群部署架構(gòu)示例:第三章 Hadoop數(shù)據(jù)庫HBase4集群部署節(jié)點類型機(jī)器名稱HMasterHRegionServerZooKeepermaster主否是slave1備用是否slave2否是是slave3否是是第15頁,共63頁。3.2 HBase部署HBase集群部署的步驟如下:建立ssh免密碼訪問;部署master;安裝HBase;配置HRegionServer;配置

12、備用HMaster;配置ZooKeeper。部署slave1、slave2、slave3;啟動、測試HBase集群。在每個節(jié)點上執(zhí)行jps命令確保都沒有啟動HBase進(jìn)程;在master上執(zhí)行bin/start-hbase.sh腳本來啟動集群;檢查每個節(jié)點上的進(jìn)程是否啟動;檢查Web界面;模擬故障測試。第三章 Hadoop數(shù)據(jù)庫HBase第16頁,共63頁。3.2 HBase部署版本號的格式為:主版本號.小版本號.補丁版本號,其含義如下:第三章 Hadoop數(shù)據(jù)庫HBase5版本升級主版本號:當(dāng)包含了不兼容的API修改時需增加主版本號。小版本號:當(dāng)添加了向后兼容的功能時增加小版本號。補丁版本號

13、:當(dāng)包含了向后兼容的錯誤修正時增加補丁版本號。為預(yù)發(fā)布或開發(fā)管理等目的,還可以在補丁版本號后面增加更多層級編號。啟動HBase;HBase的版本升級有三種情況:主版本升級、小版本升級、補丁版本升級:補丁版本升級對應(yīng)用程序無影響,可以安全升級。小版本升級不需要應(yīng)用程序和客戶端改動程序代碼,但可能需要對代碼用新的.jar文件進(jìn)行重新編譯。主版本升級不能保證API兼容性,應(yīng)謹(jǐn)慎進(jìn)行。第17頁,共63頁。3.2 HBase部署從HBase 1.1.2升級到HBase 1.2.4滾動升級的步驟如下:第三章 Hadoop數(shù)據(jù)庫HBase下載解壓HBase 1.2.4安裝包,在每臺服務(wù)器上解壓到新的目錄;修

14、改/usr/local/hbase-1.2.4/conf下的配置文件,將1.1.2版本的配置文件中的內(nèi)容復(fù)制到1.2.4版本的配置文件中;在/usr/local/hbase-1.2.4/bin下執(zhí)行滾動重啟腳本rolling-restart.sh,格式如下:rootmaster hbase-1.2.4# HBASE_HOME=/usr/local/hbase-1.2.4 ./rolling-restart.sh -config /usr/local/hbase-1.2.4/conf升級完成,可刪除原來1.1.2版本安裝目錄下的文件。第18頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1

15、HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell習(xí)題3.5HBase模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第19頁,共63頁。3.3 HBase配置hbase-site.xml:HBase最主要的配置文件。hbase-env.sh:設(shè)置HBase運行所需的工作環(huán)境。backup-masters:列出哪些服務(wù)器應(yīng)啟動備用HMaster進(jìn)程。regionservers:列出了哪些服務(wù)器啟動HRegionServer進(jìn)程。hbase-policy.xml:PRC服務(wù)器對客戶端請求進(jìn)行權(quán)限驗證時使用的策略配置文件,僅當(dāng)啟用HBase安全管理時才使用。p

16、erties:HBase所使用的日志模塊log4j的配置文件。perties:該配置文件將HBase集群與Hadoop的Metrics2框架相關(guān)聯(lián),可用于實時收集HBase集群的各類監(jiān)控信息。第三章 Hadoop數(shù)據(jù)庫HBase1配置文件上述7個HBase配置文件的路徑和內(nèi)容在每個節(jié)點上都必須一致。第20頁,共63頁。3.3 HBase配置hbase.cluster.distributed:是否為分布式運行模式,默認(rèn)值為false。hbase.tmp.dir:HBase節(jié)點在本地文件系統(tǒng)中的臨時目錄,默認(rèn)值為$java.io.tmpdir/hbase-$。hbase.rootdir:HBase

17、所保存文件的根目錄,默認(rèn)值為$hbase.tmp.dir/hbase。hbase.fs.tmp.dir:HBase集群在HDFS文件系統(tǒng)中保存臨時數(shù)據(jù)的中轉(zhuǎn)目錄,默認(rèn)值為/user/$/hbase-staging。hbase.local.dir:HBase節(jié)點在本地文件系統(tǒng)中用于本地存儲的目錄,默認(rèn)值為$hbase.tmp.dir/local。hbase.zookeeper.quorum:哪些服務(wù)器上運行ZooKeeper進(jìn)程,默認(rèn)值為localhost。第三章 Hadoop數(shù)據(jù)庫HBase2主要配置項第21頁,共63頁。3.3 HBase配置perty.dataDir:ZooKeeper用于

18、保存數(shù)據(jù)的目錄,默認(rèn)值為$hbase.tmp.dir/zookeeper。perty.maxClientCnxns:每個ZooKeeper服務(wù)器允許接受的客戶端并發(fā)連接數(shù)量,默認(rèn)值為300。zookeeper.session.timeout:ZooKeeper會話的超時時間,單位是毫秒,默認(rèn)值是90000。hbase.master.port:HMaster進(jìn)程綁定的端口號,默認(rèn)值為16000。.port:HBase Master的Web頁面的端口號,默認(rèn)值為16010。hbase.master.wait.on.regionservers.mintostart:HBase集群啟動時HMaster

19、在有多少個HRegionServer啟動后開始分配任務(wù),默認(rèn)值為1。hbase.regionserver.port:HRegionServer進(jìn)程綁定的端口號,默認(rèn)值為16020。第三章 Hadoop數(shù)據(jù)庫HBase第22頁,共63頁。3.3 HBase配置.port:HRegionServer的Web頁面的端口號,默認(rèn)值為16030。hbase.regionserver.handler.count:每臺HRegionServer和HMaster上用于偵聽響應(yīng)客戶端請求的線程數(shù)量,默認(rèn)值為30。hbase.ipc.server.callqueue.handler.factor:每臺HRegio

20、nServer和HMaster上對應(yīng)于處理線程數(shù)的調(diào)用等待隊列數(shù)量因子,范圍在0到1之間,默認(rèn)值為0.1,表示每10個處理線程共享一個調(diào)用等待隊列。hbase.hregion.max.filesize:一個HRegion中所有Hfile文件合計大小上限,默認(rèn)值為10737418240,即10G。hbase.hregion.majorcompaction:HRegion數(shù)據(jù)自動進(jìn)行周期性主壓縮的間隔時間,單位是毫秒,默認(rèn)值為604800000,即7天。hbase.hregion.majorcompaction.jitter:隨機(jī)執(zhí)行周期性主壓縮操作的前后時間范圍,默認(rèn)值為0.5。第三章 Hado

21、op數(shù)據(jù)庫HBase第23頁,共63頁。3.3 HBase配置hbase.hregion.memstore.flush.size:Store中的MemStore達(dá)到多大時會存入磁盤生成StoreFile,默認(rèn)值為134217728,即128M。hbase.regionserver.global.memstore.size:HRegionServer中所有MemStore合計大小的上限,按照堆內(nèi)存的百分比計算,默認(rèn)值為0.4,即上限為堆內(nèi)存的40%。hfile.block.cache.size:最多使用堆內(nèi)存的百分之多少作為StoreFile的塊緩存,默認(rèn)值為0.4,即上限為堆內(nèi)存的40%。hb

22、ase.balancer.period:HMaster運行HRegion均衡器的周期,單位是毫秒,默認(rèn)值為300000。hbase.client.write.buffer:HBase服務(wù)器端和客戶端寫入數(shù)據(jù)庫緩沖區(qū)的大小,默認(rèn)值為2097152,即2M。hbase.security.authentication:是否啟用HBase客戶端安全認(rèn)證,默認(rèn)值為simple,表示不進(jìn)行安全認(rèn)證。第三章 Hadoop數(shù)據(jù)庫HBase第24頁,共63頁。3.3 HBase配置hbase.cluster.distributedhbase.tmp.dirhbase.rootdirhbase.zookeeper

23、.quorum第三章 Hadoop數(shù)據(jù)庫HBase3配置建議必須配置以下參數(shù):1)hbase-site.xmlperty.dataDirhbase.master.wait.on.regionservers.mintostarthbase.regionserver.handler.counthbase.hregion.majorcompactionhbase.hregion.majorcompaction.jitterhbase.regionserver.global.memstore.sizehfile.block.cache.sizehbase.client.write.buffer建議配置

24、以下參數(shù):第25頁,共63頁。3.3 HBase配置第三章 Hadoop數(shù)據(jù)庫HBase示例如下:2)hbase-env.sh# The java implementation to use. Java 1.7+ required.export JAVA_HOME=/etc/alternatives/jre_1.7.0_openjdk# The maximum amount of heap to use. Default is left to JVM default.export HBASE_HEAPSIZE=8G# Tell HBase whether it should manage it

25、s own instance of Zookeeper or not.export HBASE_MANAGES_ZK=false第26頁,共63頁。3.3 HBase配置第三章 Hadoop數(shù)據(jù)庫HBase4客戶端配置hbase.zookeeper.quorum 配置值中不能包含空格。 hbase.zookeeper.quorum master,slave2,slave3 在客戶端解壓HBase安裝包并將解壓后的lib/子目錄和conf/子目錄加入到客戶端的CLASSPATH環(huán)境變量中;客戶端的配置比較簡單,只需要在conf/hbase-site.xml配置文件中設(shè)置好參數(shù)hbase.zook

26、eeper.quorum即可,示例如下:第27頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell習(xí)題3.5HBase模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第28頁,共63頁。3.4 HBase Shell在HBase安裝目錄的bin子目錄下執(zhí)行hbase shell命令即可進(jìn)入HBase Shell交互模式進(jìn)行數(shù)據(jù)庫操作。在HBase Shell提示符下執(zhí)行help命令可列出所有命令列表。執(zhí)行help 可顯示針對某條命令的幫助信息,注意前后要加單引號或雙引號。第三章 Hadoop數(shù)據(jù)庫HBa

27、se1交互模式第29頁,共63頁。3.4 HBase Shellcreate:創(chuàng)建一張新表。list:列出名稱匹配的表。exists:查看某張表是否存在。describe:顯示某張表的定義,也可以使用簡寫命令desc。disable:停用某張表。表被停用后則無法再對其進(jìn)行增刪改和查詢等操作,在對表執(zhí)行alter命令或drop命令之前必須先執(zhí)行disable命令停用。enable:啟用某張被disable命令停用的表。表被啟用后即可恢復(fù)正常操作。alter:可在某張表中增加、修改、刪除列族或者更改表的屬性定義.drop:刪除某張表。在刪除前必須先執(zhí)行disable命令停用該表。第三章 Hadoo

28、p數(shù)據(jù)庫HBase1)DDL命令第30頁,共63頁。3.4 HBase Shellput:向某張表里的指定單元插入數(shù)據(jù)。通過行鍵和列名來指定一個單元。scan:查詢某張表中滿足條件的數(shù)據(jù)??梢栽谛?、列、時間戳等多個維度上設(shè)定查詢條件。get:獲取表中給定行符合條件的數(shù)據(jù)。count:查詢某張表中的行數(shù),默認(rèn)時每1000行計一次數(shù)。delete:刪除某張表中指定單元的數(shù)據(jù),通過表名、行鍵和列名指定一個單元,還可以加上時間戳。第三章 Hadoop數(shù)據(jù)庫HBase2)DML命令第31頁,共63頁。 命名空間是對表的邏輯分組,HBase可以針對命名空間分配資源限額、指定HRegionServer子集、

29、進(jìn)行安全管理等。HBase有以下兩個默認(rèn)的命名空間:hbase:系統(tǒng)命名空間,用于保存HBase的內(nèi)部表。default:HBase的默認(rèn)命名空間,如果一張表沒有指定命名空間時,則自動屬于default命名空間。3.4 HBase Shell第三章 Hadoop數(shù)據(jù)庫HBase3)命名空間類命令create_namespace:創(chuàng)建一個命名空間。alter_namespace:修改某個命名空間的定義。describe_namespace:顯示命名空間的定義。list_namespace:不加選項時列出所有的命名空間,也可以加上帶有通配符的正則表達(dá)式選項。list_namespace_table

30、s:列出某個命名空間中的所有表。drop_namespace:刪除某個命名空間。第32頁,共63頁。3.4 HBase Shell第三章 Hadoop數(shù)據(jù)庫HBase4)其他命令配置類命令:對HBase集群參數(shù)配置值進(jìn)行動態(tài)更新。大多數(shù)配置更改后必須重新啟動HBase集群才能生效,與HRegion壓縮、拆分相關(guān)的參數(shù)可以動態(tài)更改,更改后在HBase Shell中執(zhí)行update_all_config命令即可生效。安全類命令:將在3.6中介紹。通過help命令可以查看每個命令的作用和使用方法。第33頁,共63頁。3.4 HBase ShellHBase Shell還可以以非交互方式運行,加上-n

31、或者-noninteractive選項即可進(jìn)入非交互模式,所執(zhí)行命令可以通過輸入重定向獲取,例如:rootclient bin# echo list_namespace_tables default | ./hbase shell -nHBase命令也可以直接以腳本文件作為其命令行參數(shù)來執(zhí)行,例如:rootclient bin# ./hbase shell sample_cmd.txt第三章 Hadoop數(shù)據(jù)庫HBase2非交互模式第34頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell習(xí)題3.5HBase

32、模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第35頁,共63頁。3.5 HBase模式設(shè)計讀訪問模式:通過行鍵索引提升查詢效率。HBase中唯一可用的索引只有行鍵索引,需要對行鍵精心設(shè)計來盡可能地優(yōu)化數(shù)據(jù)查詢。某項數(shù)據(jù)放在行鍵中會得到更好的查詢性能,但是行鍵的長度變長,行鍵索引會占用更多的內(nèi)存資源,由于行鍵在每個列族中保存,也會需要更多的磁盤空間。第三章 Hadoop數(shù)據(jù)庫HBase1設(shè)計準(zhǔn)則1)行鍵設(shè)計第36頁,共63頁。3.5 HBase模式設(shè)計寫訪問模式:避免同一時間段里寫入的數(shù)據(jù)形成熱點。隨機(jī)前綴:在原先彼此相鄰的行鍵前面加上一個隨機(jī)生成的前綴。哈希前綴:針對隨機(jī)前綴生成的行

33、鍵具有不確定性的缺陷,哈希前綴做了改進(jìn),通過對原行鍵調(diào)用選定的哈希函數(shù)生成前綴。反轉(zhuǎn)鍵:將原先彼此相鄰的行鍵按字節(jié)序反轉(zhuǎn)生成新的行鍵。以上幾種策略都會失去數(shù)據(jù)按特定行鍵順序存放的特性,在進(jìn)行范圍查詢時需要訪問全部索引數(shù)據(jù)且需要有更多的磁盤IO操作,對性能影響很大。最理想的行鍵設(shè)計方法是既能讓有關(guān)聯(lián)的數(shù)據(jù)集中在一起存放,又能達(dá)到寫負(fù)載均衡的目的。第三章 Hadoop數(shù)據(jù)庫HBase第37頁,共63頁。3.5 HBase模式設(shè)計行鍵長度:平衡查詢性能和內(nèi)存占用,常用的行鍵設(shè)計策略有:優(yōu)先考慮節(jié)省系統(tǒng)資源:設(shè)計有意義但盡可能短的行鍵。優(yōu)先考慮查詢性能:在資源允許的情況下盡可能實現(xiàn)查詢優(yōu)化。兼顧資源使

34、用和查詢性能:行鍵的設(shè)計僅考慮經(jīng)常執(zhí)行的關(guān)鍵查詢優(yōu)化。如果將行鍵設(shè)計為二進(jìn)制字節(jié)型數(shù)據(jù)類型可以在不犧牲行鍵內(nèi)容的情況下明顯縮短行鍵長度,但缺點是行鍵的可讀性變得很差。第三章 Hadoop數(shù)據(jù)庫HBase第38頁,共63頁。3.5 HBase模式設(shè)計每張表的列族數(shù)能少則少,盡量不超過三個。將有相同訪問模式的所有數(shù)據(jù)存儲在同一列族,不同訪問模式的數(shù)據(jù)存儲在不同列族,并在列族屬性中定義好訪問模式。如果某些列數(shù)據(jù)經(jīng)常被一起訪問而不需要訪問其他列的數(shù)據(jù),可考慮將這些列劃分為一個列族。列族和列的名字應(yīng)盡量短,建議列族名用一個字母表示,列修飾符用少數(shù)幾個字母表示。為了提高讀性能,可進(jìn)行反規(guī)范化設(shè)計,即在多張

35、表中儲存冗余數(shù)據(jù)。冗余設(shè)計會對寫性能有影響,也會加大應(yīng)用程序的復(fù)雜度。HBase不支持跨行事務(wù),所以在列族設(shè)計時要避免一個事務(wù)涉及多行數(shù)據(jù)。第三章 Hadoop數(shù)據(jù)庫HBase2)列族劃分第39頁,共63頁。3.5 HBase模式設(shè)計每個單元的大小最好不超過100K,如果超過100K應(yīng)考慮使用MOB(Medium-sized Objects)文件存儲,如果超過50M則應(yīng)考慮將數(shù)據(jù)保存在HDFS文件中,在HBase中僅保存文件的訪問路徑。每個HRegion的大小最好在10G到50G之間。每張表的HRegion數(shù)量不超過100個為宜。在創(chuàng)建表的時候預(yù)估數(shù)據(jù)量,據(jù)此預(yù)分配足夠數(shù)量的HRegion,從

36、而避免或減少日后對HRegion的拆分。對于不需要長期保存的數(shù)據(jù),設(shè)置合理的數(shù)據(jù)過期時間。版本數(shù)量盡可能設(shè)置得小一些或使用默認(rèn)值1。如果表中儲存的是基于時間的設(shè)備數(shù)據(jù)或日志信息,可將行鍵設(shè)計為設(shè)備ID/服務(wù)ID加上時間。第三章 Hadoop數(shù)據(jù)庫HBase3)數(shù)據(jù)量估算和控制第40頁,共63頁。3.5 HBase模式設(shè)計內(nèi)存需求。集群中所有MemStore合計所需的最大內(nèi)存通過下列公式估算:MemStore大小 * HRegion數(shù)量 * 每個HRegion中平均列族數(shù)內(nèi)存供給。集群參數(shù)hbase.regionserver.global.memstore.size配置了每個HRegionSer

37、ver允許的所有MemStore合計大小上限,該配置值乘以HRegionServer數(shù)量即為整個集群的內(nèi)存供給。如果因為HRegion數(shù)量過大造成MemStore內(nèi)存需求遠(yuǎn)大于實際內(nèi)存供給,則會導(dǎo)致系統(tǒng)頻繁地進(jìn)行MemStore存盤操作而影響性能。第三章 Hadoop數(shù)據(jù)庫HBase4)內(nèi)存需求估算和配置第41頁,共63頁。3.5 HBase模式設(shè)計BLOOMFILTER:定義布隆過濾器類型,默認(rèn)為ROW。NONE:表示不使用布隆過濾。ROW:表示使用基于行的布隆過濾。ROWCOL:表示使用基于行和列的布隆過濾。COMPRESSION:是否以壓縮方式在磁盤上存儲列族數(shù)據(jù)及壓縮編碼格式,默認(rèn)值為

38、NONE。NONE:表示不壓縮。GZ:表示采用GZ壓縮算法。LZ4:表示采用LZ4壓縮算法,該算法在Hadoop庫中提供。LZO:表示采用LZO壓縮算法,該算法庫需由用戶自行安裝。SNAPPY:表示采用SNAPPY壓縮算法,該算法庫需由用戶自行安裝。第三章 Hadoop數(shù)據(jù)庫HBase2列族屬性第42頁,共63頁。3.5 HBase模式設(shè)計DATA_BLOCK_ENCODING:定義數(shù)據(jù)塊編碼格式,默認(rèn)值為NONE。NONE:表示不使用壓縮編碼格式。PREFIX:表示使用前綴編碼格式。DIFF:表示使用差異編碼格式。FAST_DIFF:表示使用快速差異編碼格式。PREFIX_TREE:表示采用

39、前綴樹編碼格式。VERSIONS:定義列族單元保存的數(shù)據(jù)版本數(shù)量,默認(rèn)值為1。MIN_VERSIONS:定義列族存儲的最少版本數(shù),默認(rèn)值為0。TTL:定義數(shù)據(jù)的生存時間,以秒為單位,默認(rèn)值為FOREVER,表示永遠(yuǎn)不過期。第三章 Hadoop數(shù)據(jù)庫HBase第43頁,共63頁。3.5 HBase模式設(shè)計KEEP_DELETED_CELLS:定義在主壓縮時是否清除帶有刪除標(biāo)志的數(shù)據(jù)以及在查詢時是否返回帶有刪除標(biāo)志的數(shù)據(jù),默認(rèn)值為false。BLOCKSIZE:定義HFile數(shù)據(jù)塊的大小,默認(rèn)值為64K。BLOCKCACHE:定義是否在內(nèi)存中緩存數(shù)據(jù)塊,默認(rèn)值為true。IN_MEMORY:定義列

40、族是否優(yōu)先放入塊緩存中,默認(rèn)值為false。REPLICATION_SCOPE:定義列族是否在其他HBase集群中復(fù)制以及復(fù)制份數(shù),默認(rèn)值為0,表示不在其他集群中復(fù)制。第三章 Hadoop數(shù)據(jù)庫HBase第44頁,共63頁。3.5 HBase模式設(shè)計SPLITS、SPLITS_FILE、NUMREGIONS、SPLITALGO:對表進(jìn)行預(yù)拆分,有如下預(yù)拆分方法:提供拆分點數(shù)組,對應(yīng)的表屬性為SPLITS 。將拆分點保存在文本文件中,對應(yīng)的表屬性為SPLITS_FILE 。通過給出HRegion數(shù)量和拆分算法來自動計算出拆分點,對應(yīng)的表屬性分別是NUMREGIONS和SPLITALGO。READ

41、ONLY:定義只讀表。第三章 Hadoop數(shù)據(jù)庫HBase3表屬性第45頁,共63頁。3.5 HBase模式設(shè)計DURABILITY :定義WAL日志的持久化策略,默認(rèn)值為USE_DEFAULT。SYNC_WAL:表示采用同步方式寫WAL日志。ASYNC_WAL:表示采用異步方式寫WAL日志。FSYNC_WAL:表示采用同步方式寫WAL日志,并且強(qiáng)制將WAL刷新到磁盤上。SKIP_WAL:表示不寫入WAL日志。USE_DEFAULT:表示使用HBase的全局默認(rèn)值SYNC_WAL。MAX_FILESIZE:定義該表的每個HRegion中所有HFile合計大小上限,默認(rèn)值為集群配置項hbase.

42、hregion.max.filesize的配置值。MEMSTORE_FLUSHSIZE:定義表的MemStore大小上限,默認(rèn)值為集群配置項hbase.hregion.memstore.flush.size的配置值。第三章 Hadoop數(shù)據(jù)庫HBase第46頁,共63頁。3.5 HBase模式設(shè)計統(tǒng)計每類商品或每款商品的銷售情況。查詢每類商品或每款商品的購買客戶列表,以便對購買人群進(jìn)行特征分析。查詢某個客戶購買的商品列表,以便分析其個人喜好。第三章 Hadoop數(shù)據(jù)庫HBase4設(shè)計實例電商平臺應(yīng)用需要解決的問題有以下幾類:第47頁,共63頁。3.5 HBase模式設(shè)計customer:客戶表

43、,只有一個列族c,GZ方式壓縮存儲,PREFIX編碼格式。goods:商品表,只有一個列族g, GZ方式壓縮存儲,PREFIX編碼格式,IN_MEMROY屬性為true,VERSIONS屬性為10。預(yù)拆分成10個HRegion。order:訂單表,有兩個列族o和c,其中列族o保存訂單信息,列族c保存對購買人群進(jìn)行特征分析所需的客戶信息。訂單表采取了和商品表同樣的拆分方法預(yù)拆分為10個HRegion。customer_order:客戶購買記錄表,以客戶ID+商品ID+訂單時間戳為行鍵,專門供分析個體客戶的個人喜好使用,只有一個列族g保存分析客戶喜好所需的那部分信息。第三章 Hadoop數(shù)據(jù)庫HB

44、ase根據(jù)應(yīng)用需求設(shè)計出以下四張表:第48頁,共63頁。第三章 Hadoop數(shù)據(jù)庫HBase3.1HBase簡介3.2HBase部署3.3HBase配置3.4HBase Shell習(xí)題3.5HBase模式設(shè)計3.6HBase安全大數(shù)據(jù)應(yīng)用人才培養(yǎng)系列教材第49頁,共63頁。3.6 HBase安全在每臺服務(wù)器的hbase-site.xml配置文件中設(shè)置hbase.security.authentication、hbase.security.authorization、hbase.coprocessor.region.classes等屬性來要求客戶端必須通過Kerberos認(rèn)證才能訪問HBase。

45、配置修改之后必須關(guān)閉整個HBase集群再重新啟動才能生效??蛻舳艘残枰趆base-site.xml中將hbase.security.authentication設(shè)置為kerberos才能訪問集群,如果客戶端和服務(wù)器端該參數(shù)配置不一致,它們之間將無法進(jìn)行通信。第三章 Hadoop數(shù)據(jù)庫HBase1安全訪問配置1)客戶端安全訪問第50頁,共63頁。3.6 HBase安全客戶端簡單訪問控制并不能阻止黑客攻擊,只是一種很方便的通過設(shè)置用戶權(quán)限來進(jìn)行訪問控制的方法,可防止誤操作。在每臺服務(wù)器的hbase-site.xml配置文件中設(shè)置hbase.security.authentication為simp

46、le,以及hbase.security.authorization、hbase.coprocessor.master.classes、hbase.coprocessor.region.classes、hbase.coprocessor.regionserver.classes等參數(shù)。配置修改之后關(guān)閉整個HBase集群再重新啟動讓其生效??蛻舳薶base-site.xml中也將hbase.security.authentication設(shè)置為simple。第三章 Hadoop數(shù)據(jù)庫HBase2)客戶端簡單訪問控制第51頁,共63頁。3.6 HBase安全客戶端簡單訪問控制并不能阻止黑客攻擊,只是一

47、種很方便的通過設(shè)置用戶權(quán)限來進(jìn)行訪問控制的方法,可防止誤操作。在每臺服務(wù)器的hbase-site.xml配置文件中設(shè)置hbase.security.authentication為simple,以及hbase.security.authorization、hbase.coprocessor.master.classes、hbase.coprocessor.region.classes、hbase.coprocessor.regionserver.classes等參數(shù)。配置修改之后關(guān)閉整個HBase集群再重新啟動讓其生效??蛻舳薶base-site.xml中也將hbase.security.authentication設(shè)置為simple。第三章 Hadoop數(shù)據(jù)庫HBase2)客戶端簡單訪問控制第52頁,共63頁。3.6 HBase安全第三章 Hadoop數(shù)據(jù)庫HBase2數(shù)據(jù)訪問權(quán)限控制Read(R):讀權(quán)限,可以讀取指定范圍內(nèi)的數(shù)據(jù)。Write(W):寫權(quán)限,可以

溫馨提示

  • 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

提交評論