定義 非關係型分散式列式資料庫,支持大數據量查詢(百萬,上億行) 概要 數據存儲:HDFS 數據計算:MapReduce/Spark 服務協調:Zookeeper 特征 列式存儲(列只有一種類型byte[]) 分散式 大數據存儲(百萬,上億行; 上萬列) 伸縮性,擴展性(列根據業務隨意添加) 隨機快 ...
定義
非關係型分散式列式資料庫,支持大數據量查詢(百萬,上億行)
概要
- 數據存儲: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上