概念
Hbase是一个开源的、面向列的、稀疏的、适合存储海量非结构化和半结构化的、具备高性能、高可靠性、可灵活扩展的、支持实时数据读写的分布式数据储存系统。
典型特征:
- 大表:一个表可以有上亿行,上百万个列;
- 面向列:面向列(族)的存储、检索和权限控制;
- 稀疏:表中为空(null)的列不占用存储空间。
-
数据类型单一:HBase 中的数据类型只有一种String
-
无模式:每行数据对应的列可以不相同,创建表时不需要指定列,插入数据时列可以任意添加
-
数据多版本:列中的数据可以有多个版本,查询时可以通过指定版本号获取(版本号不同,获取到的数据不同)
Hadoop EcoSystem生态系统
图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。
此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
HBase访问接口
- Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据
- HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用
- Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据
- REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制
- Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计
- Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase
Hbase集群典型部署
- Master:又叫HMaster,负责Hbase中的Table和Region的管理,包括:表的增删改查、Region Server的负责均衡、Region的分布调整、Region的分裂以及分裂后Region的分配、Region Server失效后Region的迁移;
- zookeeper cluster:存储root表的地址和Master地址,Region Server 主动向zookeeper注册,使得master可以随时感知Region Server的健康状态,避免Master单点故障;
- Region Server:负责数据路由、数据读写和数据持久化,是Hbase的数据处理和计算单元,同时还负责区域分割。Region Server要求和HDFS的datanode一起部署。
- HDFS:代表HDFS集群,Hbase的数据最终存储在DataNode的块(block)上。
Hbase的系统架构
各个组件的作用如下:
- Client
Client 数量为一个或多个,HBase Client 使用 HBase 的 RPC 机制与HMaster和HRegionServer进行通信。
- 对于管理类操作Client与HMaster进行RPC通信
- 对于数据读写操作Client与HRegionServer进行RPC通信
- Zookeeper
- 保证集群中只有一个正在运行的HMaster,如果HMaster挂了,通过Zookeeper的选举机制保证集群中总有一个HMaster运行,避免单点问题
- 通过将集群各节点状态信息注册到Zookeeper中,使得HMaster可随时感知各个HRegionServer的健康状态
- HMaster
- 为HRegionServer分配Region,调整Region的分布,管理HRegionServer的负载均衡
- HMaster中记录了Region在哪台Hregion server上,它管理所有的HRegionServer并告诉HRegionServer维护那些Region
- 在HRegion Server宕机后,将失效HRegion Server 上的Regions迁移到其它的HR