目錄
基本概念
概念
數(shù)據(jù)模型
Name Space命名空間
Table
Row
Column
Time Stamp
Cell
邏輯結(jié)構(gòu)
json
物理存儲(chǔ)結(jié)構(gòu)
基礎(chǔ)架構(gòu)
Meta表架構(gòu)
RegionServer架構(gòu)
??寫流程
??讀流程
基本概念
Apache HBase – Apache HBase? Home
" This project's goal is the hosting of very large tables -- billions of rows X millions of columns --"
概念
- 海量數(shù)據(jù):10億行、100萬列
- 非關(guān)系型數(shù)據(jù)庫:kv結(jié)構(gòu)
- 稀疏的:不像關(guān)系型數(shù)據(jù)庫表,即使沒有數(shù)據(jù)也要留空
- 分布式的
- 持久的
- 多維的:hashmap是單維度的
- 排序的:排序后可以使用比如二分查找
- map映射:k:v
-
- key:行鍵、列鍵和時(shí)間戳索引作為key
- value:未解釋的字節(jié)數(shù)組,未解釋指即經(jīng)過序列化的
HBase使用與BigTable非常相似的數(shù)據(jù)模型,用戶將數(shù)據(jù)行存儲(chǔ)在帶標(biāo)簽的表中。數(shù)據(jù)行具有可排序的鍵和任意數(shù)量的列。該表存儲(chǔ)稀疏,因此如果用戶喜歡,同一表中的行可以具有瘋狂變化的列。
數(shù)據(jù)模型
Name Space命名空間
類似數(shù)據(jù)庫概念,其下有多個(gè)表,自帶兩個(gè):hbase和default
- hbase:系統(tǒng)使用,存放內(nèi)置表,不要操作
- default:用戶默認(rèn)使用的
Table
hbase在定義表時(shí)只需要聲明列族即可,不需要聲明具體的列。數(shù)據(jù)存儲(chǔ)是稀疏的,可以動(dòng)態(tài)、按需指定,可以輕松應(yīng)對(duì)字段變更
Row
行由RowKey和多個(gè)Column組成的,數(shù)據(jù)是按照RowKey字典順序存儲(chǔ)的,查詢時(shí)只能按照RowKey進(jìn)行檢索,所以RowKey的設(shè)計(jì)十分重要。
hbase不能寫sql,比如where name=xx不行,沒這個(gè)功能,只能按rowkey讀取,這也是hbase不太好用的原因。
Column
ColumnFamily列族+ColumnQualifier列名組成。
如info:name,info:age
建表時(shí)只需要指明列族,而列名無需預(yù)先定義。
Time Stamp
用來標(biāo)記版本
Cell
即k:v模型,key由{rowkey,column family: column qualifier, timestamp}組成來,唯一確定的單元。cell中的數(shù)據(jù)全部是字節(jié)碼形式存儲(chǔ)。
cell針對(duì)的是底層存儲(chǔ)StoreFile而言的,指的是底層存儲(chǔ)的一行數(shù)據(jù),其他是針對(duì)表而言的
邏輯結(jié)構(gòu)
json
- 列族:column family
- 列:column
- row key:行號(hào),用來排序和整理數(shù)據(jù),特點(diǎn):一定是按照字典序排序好的,字典序:row_key11在row_key2前面
橫向拆分:按行拆分region
豎向拆分:按列族拆分為store
物理存儲(chǔ)結(jié)構(gòu)
物理存儲(chǔ)結(jié)構(gòu)即為數(shù)據(jù)映射關(guān)系,而在概念視圖的空單元格,底層實(shí)際根本不存儲(chǔ)。
- Timestamp
-
- 時(shí)間戳用于標(biāo)記版本
- 不同版本version的數(shù)據(jù)根據(jù)timestamp進(jìn)行區(qū)分,讀取數(shù)據(jù)默認(rèn)讀取最新的版本
- HDFS存儲(chǔ)有一個(gè)標(biāo)志性的特點(diǎn):不能夠修改數(shù)據(jù)
- 在不能改數(shù)據(jù)的基礎(chǔ)上怎么實(shí)現(xiàn)改,以時(shí)間戳作為版本
- Type:標(biāo)記,寫入Put 刪除Delete
-
- 對(duì)于刪除操作,其類型為DeleteColumn
基礎(chǔ)架構(gòu)
Meta表架構(gòu)
警告:不要修改
System Table:hbase:meta
表名:[table],[region start key],[region id]
第一列:info:regioninfo 為region信息,存儲(chǔ)一個(gè)HRegionInfo對(duì)象
第二列:info:server 當(dāng)前region所處的RegionServer信息,包含端口號(hào)
第三列:info:serverstartcode 當(dāng)前region被分到RegionServer的起始時(shí)間
如果一個(gè)表處于切分的過程中,即region切分,還會(huì)多出兩列info:splitA和info:splitB,存儲(chǔ)值也是HRegionInfo對(duì)象,拆分結(jié)束后,刪除這兩列
RegionServer架構(gòu)
??寫流程
master只負(fù)責(zé)修改和寫hbase/meta表,讀找zk就可以了,zk會(huì)告訴你表在哪
僅能保證單文件HFile/storeFile有序
??讀流程
hash有個(gè)特點(diǎn):說沒有一定沒有,說有不一定有
文章來源:http://www.zghlxwxcb.cn/news/detail-821217.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-821217.html
到了這里,關(guān)于【大數(shù)據(jù)精講】HBase基本概念與讀寫流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!