hbase基本介绍

Hbase介绍

hbase基本介绍


一、hbase基本介绍

1、基本概念

是大数据领域里的一个nosql的一个非关系型数据库。hbase是bigtable的开源java版本,是建立在hdfs之上,提供高可靠性,高性能、列存储、可伸缩、实时读写的nosql的数据库系统。他介于nosql和RDBMS之间,仅能通过主键rowkey和主键range来建索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。

主要用来存储结构化和半结构化的松散数据。
结构化数据:类似于mysql的一张表,字段个数确定了,类型也确定了
半结构化数据:类似与json或者xml数据
非结构化数据:类似于音频、视频
hbase查询功能很简单,不支持join等复杂操作,不支持复杂的事物(行级事务)。
hbase支持的数据类型:byte[]
hbase表一般有这样一个特点:

  • 大:一张表可以有上十亿行,上百万列
  • 面向列:面向列的存储和权限控制,列独立建索
  • 稀疏:对于为空(null)的列,并不占用存储空间,因此表可以设计的非常稀疏

2、hbase和hadoop的关系

hbase和hadoop是紧耦合的关系,hbase依赖于hadoop
hbase都是存储在hdfs上面的
hbase数据库适合频繁的读写操作
hdfs不适合频繁的写入操作,适合一次写入,多次读取
矛盾点:hbase是如何解决的?

3、RDBMS与Hbase的对比

mysql:
结构:

  • 以表的形式存在
  • 支持FAT、NTFS、EXT、文件系统
  • 使用commit log存储日志
  • 参考系统是坐标系统
  • 使用主键PK
  • 支持分区

功能:

  • 使用sql操作数据库
  • 面向行
  • 数据总量依赖于服务器配置
  • 具有acid支持
  • 适合结构化数据
  • 支持事务
  • 支持join

hbase:
结构:

  • 以region形式存在
  • 支持hdfs文件系统
  • 使用WAL存储日志
  • 使用行键rowkey

功能:

  • 使用api和mr来访问表数据
  • 数据总量不依赖于一台机器,而取决于机器数量
  • 不支持acid
  • 适合结构化和非结构化数据
  • 分布式的
  • 不支持事务,只支持单行数据的事务
  • 不支持join

4、hbase组件

hbase基本介绍
Client:
1)使用HBase RPC机制与HMaster和HRegionServer进行通信;
2)Client与HMaster进行通信进行管理类操作;
3)Client与HRegionServer进行数据读写类操作;

HMaster:NAMENODE RESOURCEMANAGER
HMaster 没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper保证总有一个Master在运行。
HMaster主要负责Table和Region的管理工作:
1)管理用户对表的增删改查操作;
2)管理HRegionServer的负载均衡,调整Region分布;
3)Region Split后,负责新Region的分布;
4)在HRegionServer停机后,负责失效HRegionServer上Region 的迁移;

HRegionServer:DATANODE NODEMANAGER
HBase中最核心的模块;
1)维护region,处理对这些region的IO请求;
2)Regionserver负责切分在运行过程中变得过大的region,数据在增删改的时候会越来越大;

HRegion:
HBase使用RowKey将表水平切割成多个HRegion,从HMaster的角度,每个HRegion都纪录了它的StartKey和EndKey(第一个HRegion的StartKey为空,最后一个HRegion的EndKey为空),由于RowKey是排序的,因而Client可以通过HMaster快速的定位每个RowKey在哪个HRegion中。

Zookeeper:
1)ZooKeeper为HBase集群提供协调服务,它管理着HMaster和HRegionServer的状态(available/alive等),并且保证集群中只有一个HMaster,会在它们宕机时通知给HMaster,从而HMaster可以实现HMaster之间的故障转移;
2)实时监控HRegionServer的上线和下线信息,并实时通知给HMaster;
3)存储HBase的Meta Table(hbase:meta)的位置,Meta Table表存储了集群中所有用户HRegion的位置信息,且不能split;
4)Zookeeper的引入使得Master不再是单点故障 HMaster虽然可以开启多个 但是不是越多越好

HRegionServer详解
一个HStore由一个MemStore 和0个或多个StoreFile组成。

MemStore:
是一个写缓存(In Memory Sorted Buffer),所有数据的写在完成WAL日志写后,会 写入MemStore中,由MemStore根据一定的算法将数据Flush到底层HDFS文件中(HFile),通常每个HRegion中的每个 Column Family有一个自己的MemStore。
StoreFile(Hfile):
用于存储HBase的数据(Cell/KeyValue)。在HFile中的数据是按RowKey、Column Family、Column排序,对相同的Cell(即这三个值都一样),则按timestamp倒序排列。
key:<rowkey ,列族,列,时间戳>
value:值

上一篇:信息的表示和处理之信息存储


下一篇:【赵强老师】HBase的过滤器