最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hbase列式存儲入門教程

 更新時間:2021年07月12日 10:23:38   作者:yestolife123  
HBase是一種分布式、可擴展、支持海量數(shù)據(jù)存儲的NoSQL數(shù)據(jù)庫。本文通過應(yīng)用場景,性質(zhì)特點給大家介紹Hbase列式存儲入門教程,感興趣的朋友一起看看吧

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

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

在這里插入圖片描述

1)Name Space

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

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 進行檢索,所以 RowKey 的設(shè)計十分重要。

4)Column

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

5)Time Stamp

用于標識數(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)

在這里插入圖片描述

1)Region Server

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

2)Master

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

3)Zookeeper

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

4)HDFS

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

3、增刪改查

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

(1)創(chuàng)建表

create 'test','cf'

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

可以看出對表的描述不多,大量的是對列族的描述,列族更像是傳統(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ù)

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

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

在這里插入圖片描述

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

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

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

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

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

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

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

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

(8)停用表

disable 'test'

表刪除之前要停用表

(9)刪除表

drop 'test'

4、應(yīng)用場景

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

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

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

5、參考資料

《HBase不睡覺書》

《HBase原理與實踐》

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

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

相關(guān)文章

  • 解決Navicat Premium 12連接Oracle時提示oracle library is not loaded的問題

    解決Navicat Premium 12連接Oracle時提示oracle library is not loaded的

    這篇文章主要介紹了解決Navicat Premium 12連接Oracle時提示oracle library is not loaded的問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 關(guān)于hive中SQL的執(zhí)行原理解析

    關(guān)于hive中SQL的執(zhí)行原理解析

    這篇文章主要介紹了關(guān)于hive中SQL的執(zhí)行原理解析,Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供類SQL查詢功能,需要的朋友可以參考下
    2023-07-07
  • 數(shù)據(jù)庫查詢性能需注意幾點經(jīng)驗

    數(shù)據(jù)庫查詢性能需注意幾點經(jīng)驗

    這篇文章主要介紹在程序編程中,需要注意數(shù)據(jù)庫的性能問題,否則會導(dǎo)致數(shù)據(jù)庫與頁面打開都很慢
    2013-05-05
  • 你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù)

    你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù)

    這篇文章主要為大家詳細介紹了你應(yīng)該知道的區(qū)塊鏈運作7個核心技術(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 如何讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

    如何讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大

    這篇文章主要介紹了如何讓Birt報表腳本數(shù)據(jù)源變得既簡單又強大,需要的朋友可以參考下
    2018-11-11
  • Dbeaver如何從一個數(shù)據(jù)庫復(fù)制表到另外一個數(shù)據(jù)庫

    Dbeaver如何從一個數(shù)據(jù)庫復(fù)制表到另外一個數(shù)據(jù)庫

    在數(shù)據(jù)庫管理中,導(dǎo)出表是一項常見操作,可以通過特定的工具或數(shù)據(jù)庫自帶的功能實現(xiàn),步驟包括:1.在數(shù)據(jù)庫管理軟件中找到需導(dǎo)出的表,右鍵選擇導(dǎo)出數(shù)據(jù),2.選擇目標數(shù)據(jù)庫,并進行表映射設(shè)置,3.根據(jù)需求調(diào)整導(dǎo)出參數(shù),4.執(zhí)行操作完成數(shù)據(jù)導(dǎo)出
    2024-10-10
  • 使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法

    使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法

    這篇文章主要介紹了使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Navicat添加外鍵詳細操作步驟

    Navicat添加外鍵詳細操作步驟

    這篇文章主要介紹了Navicat添加外鍵詳細操作步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Linux系統(tǒng)下Navicat 激活教程詳解

    Linux系統(tǒng)下Navicat 激活教程詳解

    Navicat 是香港卓軟數(shù)字科技有限公司生產(chǎn)的一系列 MySQL、MariaDB、MongoDB、Oracle、SQLite、PostgreSQL 及 Microsoft SQL Server 的圖形化數(shù)據(jù)庫管理及發(fā)展軟件。這篇文章主要介紹了Linux系統(tǒng)下Navicat 激活教程詳解,需要的朋友可以參考下
    2021-08-08
  • SQL Update多表聯(lián)合更新的方法

    SQL Update多表聯(lián)合更新的方法

    這篇文章主要介紹了SQL Update多表聯(lián)合更新的方法,需要的朋友可以參考下
    2014-08-08

最新評論

罗山县| 盐山县| 鹤壁市| 阿坝县| 昭觉县| 兴城市| 肥西县| 龙川县| 桃源县| 津市市| 台前县| 武宁县| 连云港市| 黔西县| 美姑县| 淮滨县| 分宜县| 通辽市| 库尔勒市| 临沭县| 抚松县| 张家川| 盐亭县| 湘潭县| 开鲁县| 焉耆| 通辽市| 镇安县| 宜宾市| 巨野县| 若羌县| 东平县| 凤翔县| 丹江口市| 收藏| 象山县| 正蓝旗| 筠连县| 巴里| 富裕县| 绵竹市|