溫馨提示×

溫馨提示×

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

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

hbase基本概念 hbase

發(fā)布時(shí)間:2020-07-10 14:29:55 來源:網(wǎng)絡(luò) 閱讀:479 作者:馬吉輝 欄目:大數(shù)據(jù)

2019/2/19 星期二
-------------------
hbase基本概念

hbase 數(shù)據(jù)庫介紹
hbase 是建立的hdfs 之上,提供高可靠性、高性能、列存儲、可伸縮、實(shí)時(shí)讀寫的數(shù)據(jù)庫系統(tǒng)。
它介于nosql 和RDBMS 之間,僅能通過主鍵(row key)和主鍵的range 來檢索數(shù)據(jù),僅支持單行事務(wù)(可通過hive 支持來實(shí)現(xiàn)多表join 等復(fù)雜操作)。主要用來
存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。
與hadoop 一樣,Hbase 目標(biāo)主要依靠橫向擴(kuò)展,通過不斷增加廉價(jià)的商用服務(wù)器,來增加計(jì)算和存儲能力。

hbase 表結(jié)構(gòu)

hbase基本概念  hbase

HBase 中的表一般有這樣的特點(diǎn):
1 大:一個(gè)表可以有上10 億行,上100 萬列
2 面向列:面向列(族)的存儲和權(quán)限控制,列(族)獨(dú)立檢索。 //傳統(tǒng)的mysql數(shù)據(jù)是面向行的存儲
3 稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設(shè)計(jì)的非常稀疏。

hbase集群結(jié)構(gòu) //見圖 各組件的作用

hbase基本概念  hbase

hbase表結(jié)構(gòu):建表的時(shí)候,不需要限定表中的字段,只需要指定若干個(gè)列族。
插入數(shù)據(jù)的時(shí)候,列族中可以存儲任意多個(gè)裂(kv對,列名&列值) //字段或者數(shù)量都可以任意
要查詢某個(gè)具體字段的值,需要指定坐標(biāo),表名--->行鍵---->列族:列名----->版本
時(shí)間戳 //一個(gè)value可以由多個(gè)版本,通過版本號來區(qū)分。默認(rèn)返回最新的版本

HBase 以表的形式存儲數(shù)據(jù)。表有行和列組成。列劃分為若干個(gè)列族(row family)
Row Key與nosql 數(shù)據(jù)庫們一樣,row key 是用來檢索記錄的主鍵。
訪問hbase table 中的行,只有三種方式:
1 通過單個(gè)row key 訪問
2 通過row key 的range(范圍)
3 全表掃描
由此可以看出rk的設(shè)計(jì)在hbase中極為重要,我們下一篇博客重點(diǎn)討論hbase 表 rk設(shè)計(jì)重點(diǎn)
Row key 行鍵(Row key)
可以是任意字符串(最大長度是64KB,實(shí)際應(yīng)用中長度一般為10-100bytes),在hbase 內(nèi)部,row key 保存為字節(jié)數(shù)組。存儲時(shí),數(shù)據(jù)按照Row key 的字典序(byte order)排序存儲。設(shè)計(jì)key 時(shí),要充分排序存儲這個(gè)特性,將經(jīng)常一起讀取的行存儲放到一起。(位置相關(guān)性)
注意:
字典序?qū)nt 排序的結(jié)果是
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 作左填充。行的一次讀寫是原子操作(不論一次讀寫多少列)。這個(gè)設(shè)計(jì)決策能夠使用戶很容易的理解程序在對同一個(gè)行進(jìn)行并發(fā)更新操作時(shí)的行為。

列族(column family)
hbase 表中的每個(gè)列,都?xì)w屬與某個(gè)列族。
列族是表的chema 的一部分(而列不是) , 必須在使用表之前定義。
列名都以列族作為前綴。例如 courses:history , courses:math 都屬于courses 這個(gè)列族。
訪問控制、磁盤和內(nèi)存的使用統(tǒng)計(jì)都是在列族層面進(jìn)行的。
實(shí)際應(yīng)用中,列族上的控制權(quán)限能幫助我們管理不同類型的應(yīng)用:我們允許一些應(yīng)用可以添加新的基本數(shù)據(jù)、一些應(yīng)用可以讀取基本數(shù)據(jù)并創(chuàng)建繼承的列族、一些應(yīng)用則只允許瀏覽數(shù)據(jù)(甚至可能因?yàn)殡[私的原因不能瀏覽所有數(shù)據(jù))。
//Hbase的列族不是越多越好,官方推薦的是列族最好小于或者等于3。我們使用的場景一般是1個(gè)列族。

時(shí)間戳 //一個(gè)value可以由多個(gè)版本,通過版本號來區(qū)分。
HBase 中通過row 和columns 確定的為一個(gè)存貯單元稱為cell。每個(gè)cell 都保存著同一份數(shù)據(jù)的多個(gè)版本。版本通過時(shí)間戳來索引。時(shí)間戳的類型是64 位整型。時(shí)間戳可以由hbase(在數(shù)據(jù)寫入時(shí)自動(dòng))賦值,此時(shí)時(shí)間戳是精確到毫秒的當(dāng)前系統(tǒng)時(shí)間。時(shí)間戳也可以由客戶顯式賦值。如果應(yīng)用程序要避免數(shù)據(jù)版本沖突,就必須自己生成具有唯一性的時(shí)間戳。每個(gè)cell 中,不同版本的數(shù)據(jù)按照時(shí)間倒序排序,即最新的數(shù)據(jù)排在最前面。為了避免數(shù)據(jù)存在過多版本造成的的管理(包括存貯和索引)負(fù)擔(dān),hbase 提供了兩種數(shù)據(jù)版本回收方式。一是保存數(shù)據(jù)的最后n 個(gè)版本,二是保存最近一段時(shí)間內(nèi)的版本(比如最近七天)。用戶可以針對每個(gè)列族進(jìn)行設(shè)置。

Cell //是由kv組從或者是kv+version組成 可以理解為excell表格中的一格
由{row key, column( =<family> + <label>), version} 唯一確定的單元。
cell 中的數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存貯。

hbase表結(jié)構(gòu)與傳統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu)的對比 //見圖
小結(jié):在關(guān)系型數(shù)據(jù)庫中不可以為單獨(dú)某一行加某一個(gè)字段,要加就得全部加

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. HBase安裝
  2. HBase入門

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI