一、HBase 基础
HBase -- Hadoop Database ,是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。Hbase来源于Google的论文“Bigtable: 一个结构化数据的分布式存储系统”。HBase实际上是Hadoop的一个数据库系统,它的主要作用和传统数据库系统一样存储数据和检索数据。
传统关系型数据库的一些问题:
Hbase和传统数据库的表结构的差异(Hbase不同于传统RDBMS,是面向列的):
1) 传统的RDBMS关系型数据库存储一定量数据时没有问题,但是在存储海量数据(PB、TB级别),传统数据库无法支撑。
2) 性能差(数据量很大时)。
3) 面向行的,架构不够弹性,不能任意增加列。
HBase仅能通过行键(row key)和行键序列来检索数据,仅支持单行事务(可通过hive支持来实现多表联合等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与hadoop一样,HBase目标主要依靠横向扩展,通过不断增加商用服务器,来增加计算和存储能力。HBase表一般有这样的特点:
l 大:一个表可以有上亿行,上百万列
l 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
l 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
1.1 hbase 体系结构
HBase的服务器体系结构遵循简单的主从服务器架构。它由HRegion Server和HMaster组成,HMaster负责管理所有的HRegion Server,HBase中所有的服务器都通过ZooKeeper来协调。HBase的体系结构如下图所示。
1.1.1 客户端(Client)
Client用RPC与HMaster和HRegionServer通信。对于管理类操作,Client与HMaster通信,对于数据读写类操作,与HRegionServer通信。Client访问HBase上数据的过程并不需要HMaster参与(寻址访问Zookeeper和HRegion Server,数据读写访问HRegionServer),HMaster仅仅维护表和HRegion的元数据信息,负载很低。
客户端的作用:
1.整个HBase集群的访问入口;
2.使用HBase RPC机制与HMaster 和 HRegionServer通信。
3.与HMaser通信进行管理类操作。
4.与HRegionServer通信进行数据读写类操作。
1.1.2 Zookeeper作用
1.实现HMaster的HA,保证集群中只有一个HMaster。
2.保存root region的位置(meta表),Region的寻址入口:客户端在访问表时,需要找到表的每个region对应的RegionServer(管理Region的角色)。Root(新版本是meta)表存储了Region的分布情况以及每个Region的详细信息。
3.实时监控RegionServer的上下线信息,并及时通知Master。
4.存储HBase的schema和table元数据(有哪些表、每个表有哪些列族)。
1..1.3 HMaster作用和特点
1.HMaster作用:
(1). HMaster负责Table和Region的管理工作,为RegionServer分配Region。
(2). 管理Region Server的负载均衡(为每一个Region Server分配多少Region),调整Region分布。
(3). 当某一个Region Server停机下线后,负责失效Region Server上的Region的迁移。
(4). 监听zookeeper,基于zookeeper来得知Region Server上下线。
(5). 监听zookeeper,基于zookeeper来保证Master的HA
2.HMaster的特点:
(1)HMaster没有单点故障问题(SPOF:Single Point Of Failure)。HBase可以启动多个HMaster,Zookeeper保证只有一个HMaster运行。
启动backup master节点方法:在conf下修改配置文件backup-masters,通过hbase-daemons.sh脚本启动backup master。
$bin/hbase-daemons.sh start master-backup
(2)不参与客户端数据读写
(3)HMaster的负载很低(在同一个主机上可以和NN、SNN等服务共同运行)。
1.1.4 Region Server的作用
- 维护Region(HMaster分配的),响应客户端的IO访问请求(读写),向HDFS读写数据。
- 负责处理region的 flush、compact、split 几个过程。
- 维护region的cache
1.2 Hbase 表结构逻辑视图
参考文章:http://www.jianshu.com/p/d6ec3301cba3
http://www.jianshu.com/p/e4e67dfaafd8
http://www.jianshu.com/p/479bc6308381