Hbase學習筆記(三)

2021-08-11 21:26:20 字數 1802 閱讀 2327

交流學習**460570824

【hbase 設計】

hbase 中的每一張表就是所謂的 bigtable。bigtable 會儲存一系列的行記錄,行記錄有三個基本型別的定義:row key、time stamp、column。

row key 是行在 bigtable 中的唯一標識。

time stamp 是每次資料操作對應關聯的時間戳,可以看作 svn 的版本。

column 定義為< family>:< label>,通過這兩部分可以指定唯一的資料的儲存列,family 的定義和修改需要 對 hbase 進行類似於 db 的 ddl 操作,而 label,不需要定義直接可以使用,這也為動態定製列提供了一種手段。family 另乙個作用體現在物理儲存優化讀寫操作上,同 family 的資料物理上儲存的會比較臨近,因此在業務設計的過程中可以利用這個特性。

【資料模型】

hbase 以表的形式儲存資料。表由行和列組成,列劃分為若干個列族(row family)。

1. row key

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

通過單個 row key 訪問。

通過 row key 的 range 全表掃瞄。

row key 可以使任意字串(最大長度是64kb,實際應用中長度一  

般為 10~ 100bytes),在hbase 內部,row key 儲存為位元組陣列。

行鍵設計rowkey

不要將rowkey設計成有序的形式或集中在固定某個範圍內,因為這樣容易阻塞並行性,將負載壓都在一台機器上。

定位乙個單元,需要行,列名和時間戳。

倒序時間戳有助於找到找到最近版本值。

行鍵是在列族範圍內有效,不同列族中可以擁有同樣的行鍵。

行鍵永遠不能變

2. 列族

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

訪問控制、磁碟和記憶體的使用統計都是在列族層面進行的。在實際應用中,列族上的控制許可權能幫助我們管理不同型別的應用,例如,允許一些應用可以新增新的基本資料、一些應用可以讀取基本資料並建立繼承的列族、一些應用則只允許瀏覽資料(甚至可能因為隱私的原因不能瀏覽所有資料)。

列族數量:

列族數量越少越好,即使同時有兩個列族,查詢的時候總是訪問其中乙個列族,不會同時訪問。

當乙個表存在多個列族,當基數差距很大時,如a族有100萬行,b族10億行,a族可能會被分散到很多區域region,導致掃瞄a的效率降低。

多個列族在flush和compaction時,會造成很多i/o負擔。

3. 時間戳

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

為了避免資料存在過多版本造成的管理(包括儲存和索引)負擔,hbase 提供了兩種資料版本**方式。一是儲存資料的最後 n 個版本,二是儲存最近一段時間內的版本(比如最近七天)。使用者可以針對每個列族進行設定。

4. cell

cell 是由 唯一確定的單元。cell 中的資料是沒有型別的,全部是位元組碼形式儲存。

Hbase 學習筆記 Hbase 概覽

hbase構建在 hdfs 之上,hbase內部管理的檔案全部儲存在hdfs 中 行鍵,table的主鍵,table中的記錄按照row key排序。型別為byte array 列簇,table在水平方向有乙個或者多個column family組成,乙個column family中可以由任意多個col...

Hbase學習筆記

1.table中行是按照row key的字典序排列的 2.在行的方向上分隔為多個region 3.hregion是hbase 中分布式儲存和負載均衡的最小單位,這表示不同的region可以分布在不同的regionserver上 當乙個region足夠大時,現在是256m 就會split,乙個regi...

HBase學習筆記

hbase簡介 1 hbase定義 hbase是一種分布式 面向列的開源資料庫。具有良好的擴充套件性 低寫入 查詢延遲的特點。2 hbase與傳統的關聯式資料庫的區別 hbase rdb 資料型別 簡單的,儲存為未經解釋的字串 豐富的資料型別和儲存方式 資料操作 只有簡單的插入 查詢 刪除和清空等 ...