四、HBase 數據結構

一、RowKey

與 nosql 數據庫們一樣,RowKey 是用來檢索記錄的主鍵。訪問 HBASE table 中的行,只有三種方式:
1、通過單個 RowKey 訪問

2、通過 RowKey 的 range(正則)

3、全表掃描
RowKey 行鍵可以是任意字符串(最大長度是 64KB,實際應用中長度一般為10-100bytes),在 HBASE 內部,RowKey 保存為字節數組。
存儲時,數據按照 RowKey 的字典序(byte order)排序存儲。設計 RowKey 時,要充分利用排序存儲這個特性,將經常一起讀取的行存儲在一起。

二、Column Family

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

三、Cell

由{rowkey, column Family:columu, version} 唯一確定的單元。cell 中的數據是沒有類型的,全部是字節碼形式存貯。

關鍵字:無類型、字節碼

四、Time Stamp

1、HBASE 中通過rowkey和columns確定的一個存貯單元稱為cell。每個 cell都保存著同一份數據的多個版本。

2、版本通過時間戳來索引。時間戳的類型是 64 位整型。時間戳可以由 HBASE(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒的當前系統時間。
   時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版本沖突,就必須自己生成具有唯一性的時間戳。

3、每個cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。

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

五、 命名空間


命名空間的結構.png
1)、 Table:所有的表都是命名空間的成員,即表必屬于某個命名空間,如果沒有指定,則在 default 默認的命名空間中。

2) 、RegionServer group :一個命名空間包含了默認的 RegionServer Group。

3) 、Permission :權限,命名空間能夠讓我們來定義訪問控制列表 ACL( Access Control List )。
      例如,創建表,讀取表,刪除,更新等等操作。

4) 、Quota :限額,可以強制一個命名空間可包含的 region 的數量。

(5)、查看命名空間:
hbase(main):083:0> list_namespace
NAMESPACE                                                                                                    
default                                                                                                      
hbase                                                                                                        
2 row(s) in 0.0460 seconds

(6)、創建命名空間:
hbase(main):084:0> create_namespace 'bigdata'
0 row(s) in 0.8850 seconds

hbase(main):085:0> list_namespace
NAMESPACE                                                                            
bigdata                                                                              
default                                                                              
hbase                                                                                
3 row(s) in 0.0140 seconds

(7)、創建表在指定命名空間:
hbase(main):086:0> create 'bigdata:test', 'info'
0 row(s) in 1.2730 seconds

=> Hbase::Table - bigdata:test

(8)、刪除指定命名空間:注意刪除之前必須清空該命名空間,否則會報錯
hbase(main):087:0> drop_namespace 'bigdata'

ERROR: org.apache.hadoop.hbase.constraint.ConstraintException: Only empty namespaces can be removed. Namespace bigdata has 1 tables
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
    at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)
    at org.apache.hadoop.hbase.util.ForeignExceptionUtil.toIOException(ForeignExceptionUtil.java:45)
    at org.apache.hadoop.hbase.procedure2.RemoteProcedureException.fromProto(RemoteProcedureException.java:114)
    at org.apache.hadoop.hbase.master.procedure.ProcedureSyncWait.waitForProcedureToComplete(ProcedureSyncWait.java:85)
    at org.apache.hadoop.hbase.master.HMaster$15.run(HMaster.java:2941)
    at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:133)
    at org.apache.hadoop.hbase.master.HMaster.deleteNamespace(HMaster.java:2929)
    at org.apache.hadoop.hbase.master.MasterRpcServices.deleteNamespace(MasterRpcServices.java:508)
    at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:63460)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2369)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:297)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:277)
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hbase.constraint.ConstraintException): Only empty namespaces can be removed. Namespace bigdata has 1 tables
    at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.prepareDelete(DeleteNamespaceProcedure.java:256)
    at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:83)
    at org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure.executeFromState(DeleteNamespaceProcedure.java:49)
    at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:139)
    at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:506)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1167)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:955)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execLoop(ProcedureExecutor.java:908)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$400(ProcedureExecutor.java:77)
    at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$2.run(ProcedureExecutor.java:482)

Here is some help for this command:
Drop the named namespace. The namespace must be empty.


hbase(main):088:0> 

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • RowKey 與nosql數據庫們一樣,RowKey是用來檢索記錄的主鍵。訪問HBASE table中的行,只有三...
    ZFH__ZJ閱讀 1,411評論 0 2
  • 本文首先簡單介紹了HBase,然后重點講述了HBase的高并發和實時處理數據 、HBase數據模型、HBase物理...
    達微閱讀 2,748評論 1 13
  • 一、簡介 Hbase:全名Hadoop DataBase,是一種開源的,可伸縮的,嚴格一致性(并非最終一致性)的分...
    菜鳥小玄閱讀 2,406評論 0 12
  • (本文源自摘抄或整理,轉自https://github.com/hanc00l/wooyun_public ,版權...
    JackyTsuuuy閱讀 10,712評論 0 4
  • 媽媽說,送我去學芭蕾,只是為了培養氣質,將來好嫁人。在我決定要做手術時,她反反復復這么跟我說,她還說,現在我的氣質...
    風如天閱讀 1,588評論 1 2