hbase 概念
在hbase里面有幾個(gè)通俗的名稱會(huì)經(jīng)常出現(xiàn)
1)Hregion = region
2)Hregionserver = regionserver
3)Hmaster = master
4)Hmamstore = memstore
5)Hfile = storeFile
?
1、什么是hbase?
1)它是基于稀疏的、分布式的、持久化的、多維有序映射,它基于行健、列簇、時(shí)間戳建立索引
2)構(gòu)建在hdfs之上的分布式列式鍵值存儲(chǔ)系統(tǒng),hbase內(nèi)部管理的文件存儲(chǔ)在hdfs中。
??
2、有什么特點(diǎn)?
1)不介意數(shù)據(jù)類型,允許動(dòng)態(tài)的、靈活的數(shù)據(jù)模型,并不限制存儲(chǔ)數(shù)據(jù)的種類。因此他可以自如的存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化的數(shù)據(jù)。
2)它不要sql語音,不強(qiáng)調(diào)數(shù)據(jù)之間的關(guān)系
3)它不允許跨行的事物,可以在一行的某一列存儲(chǔ)一個(gè)整數(shù),而在另一行的同一列存儲(chǔ)一個(gè)字符串
4)它被設(shè)計(jì)在一個(gè)服務(wù)器集群上運(yùn)行,而不是單臺(tái)服務(wù)器。這就意味著是一種強(qiáng)大的、可擴(kuò)展的數(shù)據(jù)使用方式。
?
3、列式存儲(chǔ)
列式存儲(chǔ)的基礎(chǔ):對(duì)于特定的查詢,不是所有的值都是必須的。
1)以列為單位聚合數(shù)據(jù),然后將列值順序的存入磁盤
2)數(shù)據(jù)類型一致,數(shù)據(jù)特征相似,更利于壓縮
3)大量降低系統(tǒng)I/O
?
?
4、HBASE特性
1)容量巨大:單表可以有百億行,百萬列
2)面向列
3)稀疏性:空值不占用存儲(chǔ)空間
4)擴(kuò)展性:由hdfs決定,熱擴(kuò)展
5)高可用性:WAL和Replication機(jī)制;hdfs;zookeeper
6)共性能:LSM數(shù)據(jù)結(jié)構(gòu);Rowkey有序排列
7)無模式
8)數(shù)據(jù)多版本
9)數(shù)據(jù)類型單一
10)TTL
?
5、client
1)包含訪問hbase的接口,并維護(hù)cache來加快對(duì)hbase的訪問
2)通過rpc機(jī)制和master,region server通信
?
6、zookeeper
1)保證任何時(shí)候,集群中只有一個(gè)master
2)存儲(chǔ)所有region的尋址入口
3)實(shí)時(shí)監(jiān)控region server的上下線信息。并通知給master
4)存儲(chǔ)hbase元數(shù)據(jù)信息
5)hbase中可以啟動(dòng)多個(gè)Hmaster,通過zookeeper的master election機(jī)制保證總有一個(gè)master運(yùn)行
?
7、HMaster主要負(fù)責(zé):table、region管理工作
1)管理用戶對(duì)table的增刪改查
2)管理regionserver的負(fù)載均衡,跳轉(zhuǎn)region分布
3)在region分裂后,負(fù)責(zé)新region的分配
4)在regionserver死機(jī)后,負(fù)責(zé)失效regionserver上的region遷移
?
(由于master只維護(hù)表和region的元數(shù)據(jù),而不參與表數(shù)據(jù)IO的過程,master下線僅導(dǎo)致所有元數(shù)據(jù)的修改被凍結(jié)(無法創(chuàng)建刪除表,無法修改表的schema,無法進(jìn)行region的負(fù)載均衡,無法處理region上下線,無法進(jìn)行region的合并,唯一例外的是region的split可以正常進(jìn)行,因?yàn)橹挥衦egion server參與),表的數(shù)據(jù)讀寫還可以正常進(jìn)行。
因此master下線短時(shí)間內(nèi)對(duì)整個(gè)hbase集群沒有影響。)
?
8、regionserver:主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,向hdfs文件系統(tǒng)中讀寫數(shù)據(jù)
1)管理了一系列Hregion對(duì)象,每個(gè)Hregion對(duì)應(yīng)了table中的region
2)Hregion由多個(gè)Hstore組成,每個(gè)Hstore對(duì)應(yīng)了table中的一個(gè)column Family的存儲(chǔ)
每個(gè)column Family其實(shí)就是一個(gè)集中的存儲(chǔ)單位,簡稱Hstore
3)regionserver維護(hù)region,處理對(duì)這些region的IO請(qǐng)求
4)regionserver負(fù)責(zé)切分在運(yùn)行過程中變得過大的region
5)regionserver提供行級(jí)鎖
?
注:
1)Hregionserver:Hregion:Hstore = Column Family
2)Hstore:
- memStore:用戶首先先寫入MemStore。(flush操作)
- StoreFile:Hfile(compact合并,split操作)
3)hbase只有增加數(shù)據(jù),所有更新和刪除都是在compact過程中進(jìn)行的。
4)用戶寫操作只要寫入內(nèi)存就可以立即返回,保證I/O高性能
5)同一臺(tái)rs上的所有region共享相同的Hlog Files
6)每個(gè)update(或者說edit)都會(huì)被寫到log,當(dāng)通知客戶端成功后,rs把數(shù)據(jù)再加載到內(nèi)存中。
?
9、region是什么?
1)region按大小分割的,每個(gè)表開始只有一個(gè)region,隨著數(shù)據(jù)增多,region不斷增大,當(dāng)增大到一個(gè)閥值的時(shí)候,region就會(huì)等分兩個(gè)新的region,只會(huì)就會(huì)越來越多。
2)本質(zhì)上是以行鍵排序的連續(xù)存儲(chǔ)的區(qū)間
3)region最佳大小:1GB~2GB
4)regionserver:10~1000個(gè)region
5)不同的region分布到不同regionserver上
6)每個(gè)Hregion保存某段連續(xù)的數(shù)據(jù),從開始主鍵(startRow)到結(jié)束主鍵(endRow),通過Hregion從Hadoop的分布式文件系統(tǒng)上數(shù)據(jù)
?
region雖然是分布存儲(chǔ)的最小單位,但并不是存儲(chǔ)的最小單位
1)一個(gè)region由一個(gè)或者多個(gè)store組成,每個(gè)store保存一個(gè) columns family
2)每個(gè)store又由一個(gè)memstore和0個(gè)至多個(gè)storeFile組成
3)memstore存儲(chǔ)在內(nèi)存中,storeFile存儲(chǔ)在hdfs上
?
?
10、Hstore是什么?
Hstore:Hstore存儲(chǔ)是Hbase存儲(chǔ)的核心,由memstore和storeFile組成。
1)Hmemcache:內(nèi)存中的緩存,保存著最近更新的數(shù)據(jù),如果Hmemcache沒有數(shù)據(jù),將從hstores獲取磁盤上的數(shù)據(jù),每個(gè)列簇會(huì)有一個(gè)hstore集合,每個(gè)集合包含多個(gè)Hstorefiles文件(b+數(shù)結(jié)構(gòu))
2)Hregion定期調(diào)用flushcache()緩存里的內(nèi)容寫入到文件中,每次調(diào)用產(chǎn)生一個(gè)新的文件Hstorefile文件,從一個(gè)hstore或數(shù)據(jù)會(huì)訪問所有的Hstotefile,很耗時(shí),hstore.compact可以完成小文件到達(dá)文件的合并
?
11、Hlog是什么?
磁盤上的操作記錄文件,記錄這所有的更新操作,數(shù)據(jù)寫入Hlog后,commit()調(diào)用才會(huì)返回給客戶端。
數(shù)據(jù)的更新操作最先被記錄在Hmemcache和Hlog中
?
12、Row key
行鍵,table的主鍵,Table中的記錄按照Row key排序。類型為Byte array
1)不宜過長
2)分布均勻
?
13、Column Family
列族,table水平方向有一個(gè)或者多個(gè)Column Family組成,一個(gè)Column Family中可以由任意多個(gè)Column組成
?
14、Cloumn
列 格式為:familyName:columnName
列名稱是編碼在cell中的
不同的cell可以擁有不同的列
?
15、Version Number
版本號(hào)。默認(rèn)值是時(shí)間戳。類型為long
?
16、Value(Cell)
具體的值。類型為Byte array
?
轉(zhuǎn)載于:https://www.cnblogs.com/gentlemanhai/p/10354550.html
總結(jié)
- 上一篇: quartz CronExpressio
- 下一篇: BZOJ 4710 [Jsoi2011