濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Hbase列式存儲(chǔ)入門(mén)教程

Hbase列式存儲(chǔ)入門(mén)教程

熱門(mén)標(biāo)簽:杭州400電話如何申請(qǐng)的 機(jī)器人電話機(jī)創(chuàng)意繪畫(huà) 隨州營(yíng)銷(xiāo)電話機(jī)器人怎么樣 高德地圖標(biāo)注商家在哪 hbuilder地圖標(biāo)注 江西南昌百應(yīng)電話機(jī)器人 400電話從哪里申請(qǐng)濱州 400電話申請(qǐng)?jiān)趺纯?/a> 天音通信電話機(jī)器人

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

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

1)Name Space

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

2)Region

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

3)Row

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

4)Column

HBase 中的每個(gè)列都由 Column Family(列族)和 Column Qualifier(列限定符)進(jìn)行限定,例如 info:name,info:age。建表時(shí),只需指明列族,而列限定符無(wú)需預(yù)先定義。

5)Time Stamp

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

6)Cell

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

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

1)Region Server

Region Server 為 Region 的管理者,其實(shí)現(xiàn)類(lèi)為 HRegionServer,主要作用如下:對(duì)于數(shù)據(jù)的操作:get, put, delete;對(duì)于 Region 的操作:splitRegion、compactRegion。

2)Master

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

3)Zookeeper

HBase 通過(guò) Zookeeper 來(lái)做 Master 的高可用、RegionServer 的監(jiān)控、元數(shù)據(jù)的入口以及集群配置的維護(hù)等工作。

4)HDFS

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

3、增刪改查

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

(1)創(chuàng)建表

create 'test','cf'

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

(2)查看表屬性

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

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

(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ù)

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

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

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

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命令類(lèi)似于Mysql中的select * from test。

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

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

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

由于HBase底層使用鍵值對(duì)存儲(chǔ)數(shù)據(jù),查詢(xún)一個(gè)單元格的數(shù)據(jù)非??欤@和Mysql也完全不同。

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

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

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

(8)停用表

disable 'test'

表刪除之前要停用表

(9)刪除表

drop 'test'

4、應(yīng)用場(chǎng)景

HBase采用的是Key/Value的存儲(chǔ)方式,這意味著,即使隨著數(shù)據(jù)量增大,也幾乎不會(huì)導(dǎo)致查詢(xún)的性能下降。凡事都不可能只有優(yōu)點(diǎn)而沒(méi)有缺點(diǎn)。數(shù)據(jù)分析是HBase的弱項(xiàng),因?yàn)閷?duì)于HBase乃至整個(gè)NoSQL生態(tài)圈來(lái)說(shuō),基本上都是不支持表關(guān)聯(lián)的。

不適用的場(chǎng)景:主要需求是數(shù)據(jù)分析,比如做報(bào)表。單表數(shù)據(jù)量不超過(guò)千萬(wàn)。建議使用MySQL或者Oracle數(shù)據(jù)庫(kù)。

適用的場(chǎng)景:?jiǎn)伪頂?shù)據(jù)量超千萬(wàn),而且并發(fā)還挺高。數(shù)據(jù)分析需求較弱,或者不需要那么靈活或者實(shí)時(shí)。

5、參考資料

《HBase不睡覺(jué)書(shū)》

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

B站視頻《尚硅谷HBase教程(hbase框架快速入門(mén))》

到此這篇關(guān)于Hbase列式存儲(chǔ)入門(mén)的文章就介紹到這了,更多相關(guān)Hbase列式存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用Java對(duì)Hbase操作總結(jié)及示例代碼
  • python利用thrift服務(wù)讀取hbase數(shù)據(jù)的方法
  • HBASE 常用shell命令,增刪改查方法
  • hbase-shell批量命令執(zhí)行腳本的方法

標(biāo)簽:招商 石嘴山 葫蘆島 保定 沈陽(yáng) 昆明 鶴崗 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Hbase列式存儲(chǔ)入門(mén)教程》,本文關(guān)鍵詞  Hbase,列式,存儲(chǔ),入門(mén)教程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Hbase列式存儲(chǔ)入門(mén)教程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Hbase列式存儲(chǔ)入門(mén)教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    建水县| 北宁市| 大余县| 波密县| 华安县| 浦东新区| 西充县| 尤溪县| 武义县| 独山县| 工布江达县| 泊头市| 巴林左旗| 大余县| 景泰县| 玉溪市| 蓬莱市| 大名县| 乐昌市| 乌鲁木齐市| 盐亭县| 土默特右旗| 荥阳市| 理塘县| 老河口市| 象州县| 信丰县| 定结县| 梧州市| 江安县| 磐安县| 香港 | 昆明市| 开远市| 辰溪县| 微博| 九寨沟县| 修文县| 原平市| 仪陇县| 和政县|