文章目錄
- 前言:
- 一、 HBASE來源
- 二、 HBASE介紹
- HBase定義
- HBase特性
- HBASE與RDBMS和NOSQL區別
- HBASE應用場景
- 三 HBASE表模型
- HBASE表模型的要點
- HBASE的表中能存盤資料型別
- HBASE表的物理存盤結構
- HBASE作業機制圖示
- 組件說明
前言:
第一次帶女友回家,媽媽好像特別喜歡女友,晚飯后留她在我家住
我小聲說道:媽,這樣不好吧?我們還沒到那步呀!
媽媽笑道:想什么呢,你身材好又那么漂亮,我不愁你娶不到媳婦,我等會想叫你弟弟來認識認識,這小姑娘人不錯,,,
一、 HBASE來源
- hbase是一個開源的、分布式的、多版本的、可擴展的、非關系型的資料庫,
- hbase是big table的開源的java版本,建立在hdfs基礎之上,提供高可靠性、高性能的、列式存盤、可伸縮、近實時讀寫的nosql的資料庫系統
- 資料量越來越大,傳統的關系型資料庫不能滿足存盤和查詢的需求,而hive雖然能夠滿足存盤的要求,但是hive的本質也是利用底層的mr程式,所以讀寫速度不快,而且hive不能滿足非結構化的、半結構化的存盤,hive的主要作用是做分析和統計,hive用于存盤是無意義的,
二、 HBASE介紹
HBase定義
HBASE是一個資料庫----可以提供資料的實時隨機讀寫
HBASE與mysql、oralce、db2、sqlserver等關系型資料庫不同,它是一個NoSQL資料庫(非關系型資料庫)

HBase特性
Hbase的表模型與關系型資料庫的表模型不同:
- Hbase的表沒有固定的欄位定義;
- Hbase的表中每行存盤的都是一些key-value對
- Hbase的表中有列簇的劃分,用戶可以指定將哪些kv插入哪個列族
- Hbase的表在物理存盤上,是按照列簇來分割的,不同列簇的資料一定存盤在不同的檔案中
- Hbase的表中的每一行都固定有一個行鍵,而且每一行的行鍵在表中不能重復
- Hbase中的資料,包含行鍵,包含key,包含value,都是byte[ ]型別,hbase不負責為用戶維護資料型別
- HBASE對事務的支持很差

HBASE與RDBMS和NOSQL區別
HBase的表資料存盤在HDFS檔案系統中, 從而,hbase具備如下特性:存盤容量可以線性擴展; 資料存盤的安全性可靠性極高!
- hbase的表模型跟mysql之類的關系型資料庫的表模型差別巨大
- hbase的表模型中有:行的概念;但沒有欄位的概念
- 行中存的都是key-value對,每行中的key-value對中的key可以是各種各樣,每行中的key-value對 的數量也可以是各種各樣
HBASE應用場景

三 HBASE表模型
HBASE表模型的要點
- 一個表可以分為多個列簇(不同列簇的資料會存盤在不同檔案中)
- 表中的每一行有一個“行鍵rowkey”,而且行鍵在表中不能重復 4、表中的每一對kv資料稱作一個cell
- hbase可以對資料存盤多個歷史版本(歷史版本數量可配置)
- 整張表由于資料量過大,會被橫向切分成若干個region(用rowkey范圍標識),不同region的資料也 存盤在不同檔案中
- hbase會對插入的資料按順序存盤:
5.1 要點一:首先會按行鍵排序
5.2 要點二:同一行里面的kv會按列簇排序,再按k排序
HBASE的表中能存盤資料型別
- hbase中只支持byte[]
- 此處的byte[] 包括了: rowkey,key,value,列簇名,表名
- HBase基于hadoop : HBase的存盤依賴于HDFS
HBASE表的物理存盤結構
HBASE的表結構圖示

HBASE作業機制圖示

組件說明
- Client : hbase客戶端
1.包含訪問hbase的介面,比如,linux shell,java api,
2.除此之外,它會維護快取來加速訪問hbase的速度,比如region的位置資訊,
- Zookeeper :
1.監控Hmaster的狀態,保證有且僅有一個活躍的Hmaster,達到高可用,
2.它可以存盤所有region的尋址入口,如:root表在哪一臺服務器上,
3.實時監控HregionServer的狀態,感知HRegionServer的上下線資訊,并實時通知給Hmaster,
4.存盤hbase的部分元資料,
- HMaster :
1.為HRegionServer分配Region(新建表等),
2.負責HRegionServer的負載均 衡,
3.負責Region的重新分配(HRegionServer宕機之后的Region分配,HRegion裂變:當Region過大之后的拆分),
4.Hdfs上的垃圾回收,
5.處理schema的更新請求
- HRegionServer :
1.維護HMaster分配給的Region(管理本機的Region),
2.處理client對這 些region的讀寫請求,并和HDFS進行互動,
3.負責切分在運行程序中組件變大的Region,
- HLog :
對HBase的操作進行記錄,使用WAL寫資料,優先寫入log(put操作:先寫日志再寫 memstore,這樣可以防止資料丟失,即使丟失也可以回滾),
- HRegion :
HBase中分布式存盤和負載均衡的最小單元,它是表或者表的一部分,
- Store :
相當于一個列簇
- Memstore :
記憶體緩沖區,用于將資料批量重繪到hdfs中,默認大小為128M
- HStoreFile :
和HFile概念意義,不過是一個邏輯概念,HBase中的資料是以HFile存盤在Hdfs 上,
組件之間的關系
hmaster:hregionserver=1:*
hregionserver:hregion=1:*
hregionserver:hlog=1:1
hregion:hstore=1:*
store:memstore=1:1
store:storefile=1:*
storefile:hfile=1:1

小結
rowkey:行鍵,和mysql的主鍵同理,不允許重復,
columnfamily: 列簇,列的集合之意,
column:列
timestamp:時間戳,默認顯示最新的時間戳,可用于控制k對應的多個版本值,默認查最新的資料 version:版本號,表示記錄資料的版本
cell:單元格,kv就是cell
模式:無
資料型別:只存盤byte[]
多版本:每個值都可以有多個版本
列式存盤:一個列簇存盤到一個目錄
稀疏存盤:如果一個kv為null,不占用存盤空間
有識訓?希望烙鐵們來個三連擊,讓更多的同學看到這篇文章
1、烙鐵們,關注我看完保證有所識訓,不信你打我,
2、點個贊唄,可以讓更多的人看到這篇文章,后續還會有很哇塞的產出,
本文章僅供學習及個人復習使用,如需轉載請標明轉載出處,如有錯漏歡迎指出
務必注明來源(注明: 來源:csdn , 作者:-馬什么梅-)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293555.html
標籤:其他
上一篇:又是這份很大的Java核心知識點,讓阿里面試官對我忍了一下
下一篇:idea開發工具初始化相關設定

