一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

Hbase列式存儲入門教程

2021-12-11 22:27yestolife123 數(shù)據(jù)庫技術(shù)

HBase是一種分布式、可擴(kuò)展、支持海量數(shù)據(jù)存儲的NoSQL數(shù)據(jù)庫。本文通過應(yīng)用場景,性質(zhì)特點(diǎn)給大家介紹Hbase列式存儲入門教程,感興趣的朋友一起看看吧

hbase是一種分布式、可擴(kuò)展、支持海量數(shù)據(jù)存儲的nosql數(shù)據(jù)庫。分布式是因?yàn)閔base底層使用hdfs存儲數(shù)據(jù),可擴(kuò)展也是基于hdfs的橫向擴(kuò)展能力,作為大數(shù)據(jù)的存儲當(dāng)然支持海量數(shù)據(jù)的存儲,nosql非關(guān)系型數(shù)據(jù)庫表結(jié)構(gòu)和關(guān)系型數(shù)據(jù)庫(如mysql)的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)很不一樣,性質(zhì)特點(diǎn)、應(yīng)用場景也不一樣。

1、邏輯結(jié)構(gòu)

Hbase列式存儲入門教程

1)name space

命名空間,類似于關(guān)系型數(shù)據(jù)庫的 databbase 概念,每個命名空間下有多個表。hbase有兩個自帶的命名空間,分別是 hbase 和 default,hbase 中存放的是 hbase 內(nèi)置的表,default 表是用戶默認(rèn)使用的命名空間。

2)region

類似于關(guān)系型數(shù)據(jù)庫的表概念。不同的是,hbase 定義表時只需要聲明列族即可,不需要聲明具體的列。這意味著,往 hbase 寫入數(shù)據(jù)時,字段可以動態(tài)、按需指定。因此,和關(guān)系型數(shù)據(jù)庫相比,hbase 能夠輕松應(yīng)對字段變更的場景。

3)row

hbase 表中的每行數(shù)據(jù)都由一個 rowkey 和多個 column(列)組成,數(shù)據(jù)是按照 rowkey的字典順序存儲的,并且查詢數(shù)據(jù)時只能根據(jù) rowkey 進(jìn)行檢索,所以 rowkey 的設(shè)計十分重要。

4)column

hbase 中的每個列都由 column family(列族)和 column qualifier(列限定符)進(jìn)行限定,例如 info:name,info:age。建表時,只需指明列族,而列限定符無需預(yù)先定義。

5)time stamp

用于標(biāo)識數(shù)據(jù)的不同版本(version),每條數(shù)據(jù)寫入時,如果不指定時間戳,系統(tǒng)會自動為其加上該字段,其值為寫入 hbase 的時間。

6)cell

由{rowkey, column family:column qualifier, time stamp} 唯一確定的單元。cell 中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。

2、物理結(jié)構(gòu)

Hbase列式存儲入門教程

1)region server

region server 為 region 的管理者,其實(shí)現(xiàn)類為 hregionserver,主要作用如下:對于數(shù)據(jù)的操作:get, put, delete;對于 region 的操作:splitregion、compactregion。

2)master

master 是所有 region server 的管理者,其實(shí)現(xiàn)類為 hmaster,主要作用如下:對于表的操作:create, delete, alter對于 regionserver的操作:分配 regions到每個regionserver,監(jiān)控每個 regionserver的狀態(tài),負(fù)載均衡和故障轉(zhuǎn)移。

3)zookeeper

hbase 通過 zookeeper 來做 master 的高可用、regionserver 的監(jiān)控、元數(shù)據(jù)的入口以及集群配置的維護(hù)等工作。

4)hdfs

hdfs 為 hbase 提供最終的底層數(shù)據(jù)存儲服務(wù),同時為 hbase 提供高可用的支持。

3、增刪改查

初學(xué)或者測試階段對hbase操作可以使用hbase shell。增刪改查等基本命令如下:

(1)創(chuàng)建表

?
1
create 'test','cf'

test是表名,cf是列族名,你會發(fā)現(xiàn)hbase的表在新建的時候并沒有地方讓你定義列(和關(guān)系型數(shù)據(jù)庫很不一樣吧)。這是因?yàn)閔base中的列全部都是靈活的,可以隨便定義的。列只有在你插入第一條數(shù)據(jù)的時候才會生成。那么表的屬性在哪里定義呢?其實(shí)hbase的所有數(shù)據(jù)屬性都是定義在列族上的。

(2)查看表屬性

?
1
describe 'test'

輸出:

hbase(main):002:0> desc 'test'
table test is enabled
test, {table_attributes => {durability => 'use_default', metadata => {'is_root'
=> 'false', 'lindorm_table_attrs' => '\x00\x08\x00\x00\x00\x16wal_edit_with_full
_row\x05false\x00\x00\x00\x0bconsistency\x08eventual\x00\x00\x00\x16leader_balan
ce_enabled\x01\xff\x00\x00\x00\x1ffull_row_edit_carry_latest_data\x04true\x00\x0
0\x00\x0fdynamic_columns\x04true\x00\x00\x00\x0fallow_filtering\x01\x00\x00\x00\
x00\x13leader_balance_type\x06single\x00\x00\x00\x12deferred_log_flush\x05false'
, 'tablemetaversion' => '`\xe4n\x0f'}}
column families description
{name => 'cf', versions => '1', evict_blocks_on_close => 'false', new_version_be
havior => 'false', keep_deleted_cells => 'false', cache_data_on_write => 'false'
, data_block_encoding => 'diff', ttl => 'forever', min_versions => '0', replicat
ion_scope => '0', bloomfilter => 'row', cache_index_on_write => 'false', in_memo
ry => 'false', cache_blooms_on_write => 'false', prefetch_blocks_on_open => 'fal
se', compression => 'zstd', blockcache => 'true', blocksize => '65536', metadata
 => {'storage_policy' => 'default', 'compress_tags' => 'true', 'dfs_replication'
 => '2', 'chs_promote_on_major' => 'true'}}
1 row(s)
took 0.2150 seconds

可以看出對表的描述不多,大量的是對列族的描述,列族更像是傳統(tǒng)關(guān)系數(shù)據(jù)庫中的表,而表本身反倒變成只是存放列族的空殼了。

(3)查看表

list

輸出:

hbase(main):001:0> list
table
test
test1
test2
test_ls
4 row(s)
took 0.6370 seconds
=> ["test", "test1", "test2", "test_ls"]

(4)插入數(shù)據(jù)

?
1
put 'test','row1','cf:name','jack'

這條語句的意思就是:往test表插入一個單元格。這個單元格的rowkey為row1,也就是說它是屬于row1這個行中的一個列。該單元格的列族為cf。該單元格的列名為name。數(shù)據(jù)值為jack。可見列是在插入數(shù)據(jù)的時候產(chǎn)生的,hbase中列可以自由擴(kuò)展。表的結(jié)構(gòu)中某一行可能沒有某個列,但數(shù)據(jù)并不以null替代,而是壓根沒有該單元格。這樣以稀疏k-v方式存儲數(shù)據(jù)可以大大壓縮數(shù)據(jù)存儲容量。

Hbase列式存儲入門教程

(5)掃描數(shù)據(jù)

?
1
scan 'test'

輸出:

hbase(main):011:0> scan 'test'
row                   column+cell
 row1                 column=cf:name, timestamp=1625911358767, value=jack
1 row(s)
took 0.5670 seconds

scan命令類似于mysql中的select * from test

(6)查看數(shù)據(jù)

scan命令是批量讀取數(shù)據(jù),查詢某個單元格的數(shù)據(jù)可以用get命令,

?
1
get 'test','row1','cf:name'

由于hbase底層使用鍵值對存儲數(shù)據(jù),查詢一個單元格的數(shù)據(jù)非常快,這和mysql也完全不同。

(7)刪除數(shù)據(jù)

?
1
delete 'test','row1','cf:name'

hbase刪除記錄并不是真的刪除了數(shù)據(jù),而是放置了一個墓碑標(biāo)記(tombstone marker),把這個版本連同之前的版本都標(biāo)記為不可見了。

(8)停用表

?
1
disable 'test'

表刪除之前要停用表

(9)刪除表

?
1
drop 'test'

4、應(yīng)用場景

hbase采用的是key/value的存儲方式,這意味著,即使隨著數(shù)據(jù)量增大,也幾乎不會導(dǎo)致查詢的性能下降。凡事都不可能只有優(yōu)點(diǎn)而沒有缺點(diǎn)。數(shù)據(jù)分析是hbase的弱項(xiàng),因?yàn)閷τ趆base乃至整個nosql生態(tài)圈來說,基本上都是不支持表關(guān)聯(lián)的。

不適用的場景:主要需求是數(shù)據(jù)分析,比如做報表。單表數(shù)據(jù)量不超過千萬。建議使用mysql或者oracle數(shù)據(jù)庫。

適用的場景:單表數(shù)據(jù)量超千萬,而且并發(fā)還挺高。數(shù)據(jù)分析需求較弱,或者不需要那么靈活或者實(shí)時。

5、參考資料

《hbase不睡覺書》

《hbase原理與實(shí)踐》

b站視頻《尚硅谷hbase教程(hbase框架快速入門)》

到此這篇關(guān)于hbase列式存儲入門的文章就介紹到這了,更多相關(guān)hbase列式存儲內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/Andytl/article/details/118638776

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 经典三级四虎在线观看 | 国产小视频免费看 | 国产成人a∨麻豆精品 | 白丝憋尿 | 久久视频在线视频观看精品15 | 99久久免费国产香蕉麻豆 | 26uuu成人人网图片 | 国产欧美日韩在线播放 | 国产精品二区高清在线 | 欧美成人免费观看的 | 国产老肥熟xxxx | 欧美高清milf在线播放 | 91精品国产免费久久 | 国产精品视频第一区二区三区 | 五月天婷婷网亚洲综合在线 | 亚洲免费视频一区二区三区 | 青青国产精品 | 婷婷在线成人免费观看搜索 | 欧美肥胖老妇做爰变态 | 久久一本综合 | 好大好硬好紧太深了受不了 | 成人免费在线视频网 | 亚洲免费闲人蜜桃 | 久久免费看少妇级毛片蜜臀 | 欧美爽妇 | 性色香蕉AV久久久天天网 | 91短视频在线观看2019 | 亚洲 综合 欧美在线视频 | 99久久99热久久精品免 | 特级非洲黑人一级毛片 | 国色天香视频完整版 | 30分钟的高清视频在线观看 | 美女69xx | 精品亚洲综合久久中文字幕 | 欧美一二区 | 亚洲成色www久久网站 | re99热 | 奶茶视频有容乃大 | 亚洲天堂色图 | 国产成人精品午夜免费 | 国产nv精品你懂得 |