HBase學習和使用

2021-09-29 17:30:09 字數 1503 閱讀 1073

最近專案中用到了hbase,使用的原因在於hbase可以提供高併發讀寫操作的支援,同時自動切分資料,使得資料儲存具有水平擴充套件性。

1 不能支援條件查詢,只支援按照row key來查詢.

2 暫時不能支援master server的故障切換,當master宕機後,整個儲存系統就會掛掉.

1.資料型別,hbase只有簡單的字元型別,所有的型別都是交由使用者自己處理,它只儲存字串。而關聯式資料庫有豐富的型別和儲存方式。在使用過程中,建立表的時候只感知到了建立列簇,指定過期時間等等,沒有感知到指定資料型別等操作。 

2.資料操作:hbase只有很簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有複雜的表和表之間的關係。 

3.儲存模式:hbase是基於列儲存的,每個列族都由幾個檔案儲存,不同的列族的檔案時分離的。而傳統的關係型資料庫是基於**結構和行模式儲存的。 

4.資料維護,hbase的更新操作不應該叫更新,它實際上是插入了新的資料,而傳統資料庫是替換修改 。這裡理解是乙個rowkey實際對應多份資料,按照插入資料的時間倒序,查詢時返回最後插入的乙份資料。

split負載均衡。hbase會將資料split到一定數量的region中來實現負載均衡。乙個table會被分到乙個或者多個region中。這些region會被分配到乙個或者多個regionserver中。在自動split策略中,每個region達到一定大小就會被自動split。split根據rowkey,同乙個rowkey對應的行只會在乙個region中。

如果沒有presplit,table剛剛建立的時候,所有的讀寫操作都會訪問到同乙個regionserver的同乙個region中。無法達到負載均衡的目的。同時,好像region自動split也是需要更多的效能和時間的(待確認,需要詳細看下split的過程)。通過**rowkey,確定需要pre-split的節點。

目前讀寫操作都需要通過rowkey,rowkey也決定了split的節點。

rowkey是乙個二進位製碼流,可以是任意字串,最大長度64kb,實際應用中一般為10-100bytes,以byte形式儲存,一般設計成定長。建議越短越好,不要超過16個位元組,原因如下:

資料的持久化檔案hfile中是按照keyvalue儲存的,如果rowkey過長,比如超過100位元組,1000w行資料,光rowkey就要占用100*1000w=10億個位元組,將近1g資料,這樣會極大影響hfile的儲存效率; 

memstore將快取部分資料到記憶體,如果rowkey欄位過長,記憶體的有效利用率就會降低,系統不能快取更多的資料,這樣會降低檢索效率。 

目前作業系統都是64位系統,記憶體8位元組對齊,控制在16個位元組,8位元組的整數倍利用了作業系統的最佳特性。

hbase與mysql的區別

對比mysql,一文看透hbase的能力及使用場景

mysql和hbase應用場景對比

hbase split的三種方式和split的過程

兩次hbase丟失資料的故障及原因分析

hbase split 簡介

hbase的rowkey的設計原則

mysql和hbase對比學習

關聯式資料庫大家都不陌生,使用乙個rdbms和hbase例子來說明。rdbms例子 資料 對比 那hbase是什麼樣的了?表設計 資料 hbase表的基本概念 row key 行主鍵,hbase不支援條件查詢和order by等查詢,讀取記錄只能按row key 及其range 或全表掃瞄,因此ro...

Hbase 學習筆記 Hbase 概覽

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

HBase學習筆記(一) 《HBase簡介》

hbase簡介 1 hbase表的結構 hbase以表 table 的形式儲存資料 row key 行鍵 與nosql資料庫們一樣,row key是用來檢索記錄的主鍵。row key行鍵 row key 可以是任意字串 最大長度是 64kb,實際應用中長度一般為 10 100bytes 在hbase...