亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase基本概念和hbase shell常用命令用法

發布時間:2020-07-21 22:22:12 來源:網絡 閱讀:421 作者:IT達仁 欄目:關系型數據庫

1. 簡介


  HBase是一個分布式的、面向列的開源數據庫,源于google的一篇論文《bigtable:一個結構化數據的分布式存儲系統》。HBase是Google Bigtable的開源實現,它利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作為協同服務。


2. HBase的表結構


  HBase以表的形式存儲數據。表有行和列組成。列劃分為若干個列族/列簇(column family)。


Row Key


column-family1


column-family2


column-family3


column1


column2


column1


column2


column3


column1


key1


t1:abc


t2:gdxdf


 

t4:dfads


t3:hello


t2:world


   

key2


t3:abc


t1:gdxdf


 

t4:dfads


t3:hello


 

t2:dfdsfa


t3:dfdf


 

key3


 

t2:dfadfasd


t1:dfdasddsf


 

t2:dfxxdfasd


t1:taobao.com


  如上圖所示,key1,key2,key3是三條記錄的唯一的row key值,column-family1,column-family2,column-family3是三個列族,每個列族下又包括幾列。比如column-family1這個列族下包括兩列,名字是column1和column2,t1:abc,t2:gdxdf是由row key1和column-family1-column1唯一確定的一個單元cell。這個cell中有兩個數據,abc和gdxdf。兩個值的時間戳不一樣,分別是t1,t2, hbase會返回最新時間的值給請求者。


  這些名詞的具體含義如下:


  (1) Row Key


  與nosql數據庫們一樣,row key是用來檢索記錄的主鍵。訪問hbase table中的行,只有三種方式:


    (1.1) 通過單個row key訪問


    (1.2) 通過row key的range


    (1.3) 全表掃描


  Row key行鍵 (Row key)可以是任意字符串(最大長度是 64KB,實際應用中長度一般為 10-100bytes),在hbase內部,row key保存為字節數組。


  存儲時,數據按照Row key的字典序(byte order)排序存儲。設計key時,要充分排序存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性)


  注意:


  字典序對int排序的結果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持×××的自然序,行鍵必須用0作左填充。


  行的一次讀寫是原子操作 (不論一次讀寫多少列)。這個設計決策能夠使用戶很容易的理解程序在對同一個行進行并發更新操作時的行為。


  (2) 列族 column family


  hbase表中的每個列,都歸屬與某個列族。列族是表的chema的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴。例如courses:history , courses:math 都屬于 courses 這個列族。


  訪問控制、磁盤和內存的使用統計都是在列族層面進行的。實際應用中,列族上的控制權限能幫助我們管理不同類型的應用:我們允許一些應用可以添加新的基本數據、一些應用可以讀取基本數據并創建繼承的列族、一些應用則只允許瀏覽數據(甚至可能因為隱私的原因不能瀏覽所有數據)。


  (3) 單元 Cell


  HBase中通過row和columns確定的為一個存貯單元稱為cell。由{row key, column( =+), version} 唯一確定的單元。cell中的數據是沒有類型的,全部是字節碼形式存貯。


  (4) 時間戳 timestamp


  每個cell都保存著同一份數據的多個版本。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由hbase(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版本沖突,就必須自己生成具有唯一性的時間戳。每個cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。


  為了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔,hbase提供了兩種數據版本回收方式。一是保存數據的最后n個版本,二是保存最近一段時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。


3. HBase shell的基本用法


  hbase提供了一個shell的終端給用戶交互。通過執行 help get 可以看到命令的幫助信息。


  以網上的一個學生成績表的例子來演示hbase的用法。


name


grad


course


math


art


zkb


5


97


87


baoniu


4


89


80


  這里grad對于表來說是一個列,course對于表來說是一個列族,這個列族由兩個列組成math和art,當然我們可以根據我們的需要在course中建立更多的列族,如computer,physics等相應的列添加入course列族。圖中需要注意的是90這個值,列族下面的列也是可以沒有名字的。


  (1) 建立一個表格scores  具有兩個列族grad 和courese


hbase(main):001:0> create'scores','grade', 'course'

0 row(s) in 0.4780 seconds

  (2) 查看當前HBase中具有哪些表


hbase(main):002:0> list

TABLE                                                                                                                                                                                         

scores                                                                                                                                                                               

1 row(s) in 0.0270 seconds

  (3) 查看表的構造


hbase(main):004:0> describe'scores'

DESCRIPTION                                                 ENABLED                                               

 {NAME => 'scores', FAMILIES => [{NAME =>'course', BLOOMFILTER => 'NONE', REPLICATION_SCOPE =>'0',  true                                                  

 COMPRESSION => 'NONE', VERSIONS =>'3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'fal                                                       

 se', BLOCKCACHE => 'true'}, {NAME => 'grade', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPR                                                       

 ESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE =>'65536', IN_MEMORY => 'false',                                                        

 BLOCKCACHE => 'true'}]}                                                                                                                                    

1 row(s) in 0.0390 seconds

  (4) 加入一行數據,行名稱為zkb 列族grad的列名為”” 值位5


hbase(main):006:0> put'scores','zkb','grade:','5'       

0 row(s) in 0.0420 seconds

  (5) 給zkb這一行的數據的列族course添加一列,97>


hbase(main):007:0> put'scores','zkb','course:math','97'

0 row(s) in 0.0270 seconds

  (6) 給zkb這一行的數據的列族course添加一列,87>


hbase(main):008:0> put'scores','zkb','course:art','87'

0 row(s) in 0.0260 seconds

  (7) 加入一行數據,行名稱為baoniu 列族grad的列名為”” 值為4


hbase(main):009:0> put'scores','baoniu','grade:','4'    

0 row(s) in 0.0260 seconds

  (8) 給baoniu這一行的數據的列族course添加一列,89>


hbase(main):010:0> put'scores','baoniu','course:math','89'

0 row(s) in 0.0270 seconds

  (9) 給Jerry這一行的數據的列族course添加一列,80>


hbase(main):011:0> put'scores','baoniu','course:art','80'

0 row(s) in 0.0270 seconds

  (10) 查看scores表中zkb的相關數據


hbase(main):012:0> get'scores','zkb'

COLUMN                     CELL                                                                                                               

 course:art                              timestamp=1316100110921, value=87                                                                                  

 course:math                             timestamp=1316100025944, value=97                                                                                  

 grade:                                  timestamp=1316099975625, value=5                                                                                   

3 row(s) in 0.0480 seconds

  (11) 查看scores表中所有數據


  注意:scan命令可以指定startrow,stoprow來scan多個row,例如:scan 'user_test',{COLUMNS =>'info:username',LIMIT =>10, STARTROW => 'test',STOPROW=>'test2'}


hbase(main):013:0> scan'scores'

ROW                        COLUMN+CELL                                                                                                        

 baoniu                                  column=course:art, timestamp=1316100293784, value=80                                                               

 baoniu                                  column=course:math, timestamp=1316100234410, value=89                                                              

 baoniu                                  column=grade:, timestamp=1316100178609, value=4                                                                    

 zkb                                     column=course:art, timestamp=1316100110921, value=87                                                               

 zkb                                     column=course:math, timestamp=1316100025944, value=97                                                              

 zkb                                     column=grade:, timestamp=1316099975625, value=5                                                                    

2 row(s) in 0.0470 seconds

  (12) 查看scores表中所有數據courses列族的所有數據


hbase(main):017:0> scan'scores',{COLUMNS => 'course'}

ROW                        COLUMN+CELL                                                                                                        

 baoniu                                  column=course:art, timestamp=1316100293784, value=80                                                               

 baoniu                                  column=course:math, timestamp=1316100234410, value=89                                                              

 zkb                                     column=course:art, timestamp=1316100110921, value=87                                                               

 zkb                                     column=course:math, timestamp=1316100025944, value=97                                                              

2 row(s) in 0.0350 seconds

  (13) 刪除scores表


hbase(main):024:0> disable'scores'

0 row(s) in 0.0330 seconds

 

hbase(main):025:0> drop'scores'   

0 row(s) in 1.0840 seconds


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙城县| 上思县| 岱山县| 彰化市| 赣州市| 马龙县| 德安县| 岳池县| 南充市| 南乐县| 长汀县| 灵石县| 光泽县| 昭通市| 汤原县| 犍为县| 高雄市| 宝坻区| 东阳市| 舞阳县| 牟定县| 陇川县| 甘德县| 噶尔县| 青铜峡市| 突泉县| 周宁县| 永城市| 锦州市| 普格县| 双牌县| 贵州省| 安龙县| 青浦区| 泊头市| 皮山县| 中牟县| 清苑县| 西藏| 右玉县| 朝阳区|