一、hbase是什么?
首先hbase是一个在Hadoop的HDFS分布式存储系统上介于映射(key/value)的nosql的分布式数据库,有以下特性:
1、提供随机、实时读写查询,由hbase的架构和LSM—Tree数据结构保证;
2、高容错,该特性是由HDFS保证;
3、分布式和线性扩展;
4、面向列和存储松散数据;
5、存储的数据可以有多版本;
6、可配置的表的制动切分功能;
7、节点自动故障恢复和选举机制,由ZooKeeper提供该功能;
8、可以方便的为MapReduce、hive和pig等继承。
hbase是hadoop的整个生态系统上一个重要的组成部分,他弥补了hadoop只能提供高延时的批处理的MapReduce功能,他对app向下提供了存储,向上又提供实时运算和查询;另外又可以使用MapReduce的并行计算模型进行大规模的数据处理,hbase将数据存储和并行计算、实时与批处理几乎完美的结合了起来。
二、hbase集群中的节点分类和通信
hbase集群中的节点分为HMaster Server和HRegion Server两种,采用Master-Slave的模式,但是不像hadoop中的集群那样有单点故障的问题。
hbase cluster中的节点是通过ZooKeeper集群来通信的,由ZooKeeper来监听hbase集群中的节点的状态。
hbase集群可以设置多个HMaster Server节点,但是同一时刻只能有一个处于激活状态提供服务的节点,HMaster节点没有单点故障的问题,当ZooKeeper集群会在一个监听周期内监听到正处于服务状态的HMaster当机后,ZooKeeper集群会通过选举机制来选举出另外一个HMaster节点为整个hbase集群提供服务,ZooKeeper总能保证hbase集群中总有一个HMaster可用;ZooKeeper会监听HRegion Server的状态,并提供故障节点的自动故障恢复功能。
由于hbase集群中的节点状态及节点间的通信是有ZooKeeper提供的,故必须单独建立一个
ZooKeeper集群。
三、hbase集群中的节点的作用
hbase主要负责hbase table和HRegion Server的管理工作,包括一下几点:
1、管理HRegion Server服务器的负载均衡,调整HRegion中HRegion Server中的分别,以避免有hot HRegion;
2、在region分裂后,负责新的HRegion的分配;
3、当某个HRegion Server当机或停机后,负责失效HRegion服务器上的HRegion的迁移。
HRegion Server主要功能为以下几个方面:
1、负责响应用户请求(即对HTable的增、删、改查等操作);
2、负责HRegion Server中HFile的合并操作,包括Minor和major comparison两种策略;
3、HRegion的自动水平分割。
四、hbase和RDBMS传统数据库的区别
1、存储模式:hbase是基于列的存储模式,一个表可以有多个列组,创建HTable时必须保存列组——相当于传统数据库中的表结构,分列组保持数据,不同的列组的存储文件时分离的;RDBMS是基于行模式的表格存储结构;
2、可伸缩性:hbase天然具有高伸缩性,可以方便的在增减集群节点的同时,保证高容错性,而创痛的RDBMS数据库提高高伸缩性比较困难;
3、事务性:hbase不是具有事务性,而RDBMS是具有事务性的数据库;
4、存储数据量:hbase可以很容易的存储T或P级以上的数据,而RDBMS比价适合存储G及的数据;
5、数据操作:hbase只能处理很简单的增删改查操作,表和表是分离的,没有复杂的表和表之间的关系,也不能做表之间的关联操作;而传统的RDBMS数据库通常有丰富的表间连接操作和各种函数;
6、数据类型:hbase只能存储简单的字符串类型,所有的类型转换都交由用户端处理,而hbase只存储字符串;而关系型数据库有丰富的数据类型;
7、数据存储的多版本机制:hbase中存储的数据可以有多个版本;而关系型数据库则没有;
8、数据维护:确切的说,hbase没有更新操作,由于其可以维护多个版本的机制,他的更新操作实际上是插入新的数据,而就得版本还会存在;而RDBMS传统数据库的修改操作是直接修改了数据本身。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。