HBase是个啥子?
生活随笔
收集整理的這篇文章主要介紹了
HBase是个啥子?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.1 HBase的是個啥子?
是建立的HDFS之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的分布式數據庫系統。
- 在需要實時讀寫隨機訪問超大規模數據集時,可以使用HBase。
1.2 HBase的特點
- 海量存儲
- 可以存儲大批量的數據
- 列式存儲
- HBase表的數據是基于列族進行存儲的,列族是在列的方向上的劃分。
- 極易擴展
- 底層依賴HDFS,當磁盤空間不足的時候,只需要動態增加datanode節點就可以了
- 可以通過增加服務器來對集群的存儲進行擴容
- 高并發
- 支持高并發的讀寫請求
- 稀疏
- 稀疏主要是針對HBase列的靈活性,在列族中,你可以指定任意多的列,在列數據為空的情況下,是不會占用存儲空間的。
- 數據的多版本
- HBase表中的數據可以有多個版本值,默認情況下是根據版本號去區分,版本號就是插入數據的時間戳
- 數據類型單一
- 所有的數據在HBase中是以字節數組進行存儲
2. HBase表的數據模型
2.1 rowkey行鍵
- table的主鍵,table中的記錄按照rowkey 的字典序進行排序
- Row key行鍵可以是任意字符串(最大長度是 64KB,實際應用中長度一般為 10-100bytes)
2.2 Column Family列族
- 列族或列簇
- HBase表中的每個列,都歸屬與某個列族
- 列族是表的schema的一部分(而列不是),即建表時至少指定一個列族
- 比如創建一張表,名為user,有兩個列族,分別是info和data,建表語句create 'user', 'info', 'data'
2.3 Column列
- 列肯定是表的某一列族下的一個列,用列族名:列名表示,如info列族下的name列,表示為info:name
- 屬于某一個ColumnFamily,類似于我們mysql當中創建的具體的列
2.4 cell單元格
-
指定row key行鍵、列族、列,可以確定的一個cell單元格
-
cell中的數據是沒有類型的,全部是以字節數組進行存儲
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2dAIG3PB-1613899803638)(assets/Image201911072218.png)]
2.5 Timestamp時間戳
- 可以對表中的Cell多次賦值,每次賦值操作時的時間戳timestamp,可看成Cell值的版本號version number
- 即一個Cell可以有多個版本的值
3. HBase整體架構
3.1 Client客戶端
- Client是操作HBase集群的入口
- 對于管理類的操作,如表的增、刪、改操縱,Client通過RPC與HMaster通信完成
- 對于表數據的讀寫操作,Client通過RPC與RegionServer交互,讀寫數據
- Client類型:
- HBase shell
- Java編程接口
- Thrift、Avro、Rest等等
3.2 ZooKeeper集群
- 作用
-
實現了HMaster的高可用,多HMaster間進行主備選舉
-
保存了HBase的元數據信息meta表,提供了HBase表中region的尋址入口的線索數據
-
對HMaster和HRegionServer實現了監控
-
3.3 HMaster
- HBase集群也是主從架構,HMaster是主的角色,是老大
- 主要負責Table表和Region的相關管理工作:
- 關于Table
- 管理Client對Table的增刪改的操作
- 關于Region
- 在Region分裂后,負責新Region分配到指定的HRegionServer上
- 管理HRegionServer間的負載均衡,遷移region分布
- 當HRegionServer宕機后,負責其上的region的遷移
3.4 HRegionServer
-
HBase集群中從的角色,是小弟
-
作用
- 響應客戶端的讀寫數據請求
- 負責管理一系列的Region
- 切分在運行過程中變大的region
3.5 Region
- HBase集群中分布式存儲的最小單元
- 一個Region對應一個Table表的部分數據
HBase使用,主要有兩種形式:①命令;②Java編程
總結
以上是生活随笔為你收集整理的HBase是个啥子?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言挑选小白鼠健康指数,2014级下学
- 下一篇: 行人重识别(ReID)概述