HBase基礎概念
阿新 • • 發佈:2018-11-23
root rest api failover 全表掃描 足夠 大數 很慢 name 默認
定義
非關系型分布式列式數據庫,支持大數據量查詢(百萬,上億行)
概要
- 數據存儲:HDFS
- 數據計算:MapReduce/Spark
- 服務協調:Zookeeper
特征
- 列式存儲(列只有一種類型byte[])
- 分布式
- 大數據存儲(百萬,上億行; 上萬列)
- 伸縮性,擴展性(列根據業務隨意添加)
- 隨機快速訪問:歸功於region分區
- 強一致性(同一行的數據分布在同一個region)
- 自動分片(當storeFile達到閥值值,自動把一個region分裂成兩個,同時刷新hbase:meta表,以更新region信息)
- regionserver自動故障轉移(failover):當一個regionserver進程掛掉時,Master會自動將原先regionserver
下的reigon進行重新分配到其它regionserver - 支持mapreduce,hdfs: 數據導入,數據存儲
- java api
- thrift/rest api
- block cache
- web ui
不適用場景
- 關聯
- 事務
- 列類型設置
- 二級索引
- 高級查詢(存儲過程,觸發器等)
什麽時候選用HBase
結合二三即可
- 大數據
- 能夠承受丟失RDBMS的特征
- 有足夠的硬件資源
HBase與HDFS的區別
雖然HBase數據存儲在HDFS上,但查詢數據的速度區別很大
- HDFS:屬於全表掃描查詢,速度很慢
- HBase:根據rowKey分區,只選擇部分相應的region查詢,速度很快
HBase系統表
1.也叫目錄表(hbase:meta): 用於保存所有region信息
2.存放在zookeeper中,默認路徑是 /hbase/meta-region-server (終端執行zkCli.sh)
3.存放目錄由hbase-site.xml中zookeeper.znode.rootserver控制
Master節點
由於meta數據不是存儲在master節點,故當master掛掉時,hbase client can still run for a short time.
- 運行在namenode
- 管理regionserver
- 觸發meta表的更新
WAL(Write Ahead Log)
數據先已文件形式寫入HLog,再寫入memstore
RegionServer
管理region,部署在DataNode上
HBase基礎概念