Hbase是NoSQL数据库,不像传统RDBMS数据库那样支持SQL查询,Hbase是分布式存储数据库。没有RDBMS系统的列属性、辅助索引、触发器、高级查询语言等。
Hbase支持:
1、强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合
2、自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配
3、自动的故障转移
4、Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接
5、丰富的“简洁,高效”API,Thrift/REST API,Java API
6、块缓存,布隆过滤器,可以高效的列查询优化
7、操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标
Hbase使用场景:
1)数据量足够多,十亿及百亿行数据可以选择Hbase,如果是几百万行不到数据量选择RDBMS。
2)不需要辅助索引、静态类型的列、事务等特性
3)硬件资源足够,每个HDFS集群少于5个节点表现不是很好,HDFS默认复制数量是3,再加上NameNode。

Hbaes架构Hbase_第1张图片
1)Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
2)HDFS是Hbase运行的底层文件系统
3)RegionServer,理解为数据节点,存储数据的。
4)Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和Region的切分。

Hbase_第2张图片
1)HMaster是Master Server的实现,负责监控集群中的RegionServer实例,同时是所有metadata改变的接口,在集群中,通常运行在NameNode上面,这里有一篇更细的HMaster介绍

2)HMasterInterface暴露的接口,Table(createTable, modifyTable, removeTable, enable, disable),ColumnFamily (addColumn, modifyColumn, removeColumn),Region (move, assign, unassign)
Master运行的后台线程:LoadBalancer线程,控制region来平衡集群的负载。CatalogJanitor线程,周期性的检查hbase:meta表。
HRegionServer是RegionServer的实现,服务和管理Regions,集群中RegionServer运行在DataNode

3)HRegionRegionInterface暴露接口:Data (get, put, delete, next, etc.),Region (splitRegion, compactRegion, etc.)
RegionServer后台线程:CompactSplitThread,MajorCompactionChecker,MemStoreFlusher,LogRoller
Regions,代表table,Region有多个Store(列簇),Store有一个Memstore和多个StoreFiles(HFiles),StoreFiles的底层是Block。
https://www.jianshu.com/p/b23800d9b227