一、为什么需要Hbase
Hbase是BigTable的开源实现,是基于列的分布式数据库,具备高可靠、高性能、可伸缩等技术优势,主要用来存储非结构化和半结构化的松散数据。
Hadoop为什么要设计这么一个Hbase分布式数据库呢?
虽然Hadoop已经有了MapReduce和HDFS,但是Hadoop主要还是为了解决大规模数据离线批处理,因此Hadoop是没有办法满足大数据实时处理的需求。随着这些年数据的大规模爆炸式增长,传统关系型数据库的扩展能力有限,受到了非常大的挑战。
二、数据坐标概念
传统的关系型数据库的定位:
只要通过一个行一个列这两个维度就可以确定一个唯一的数据。excel表格就类似于关系型数据库。
Hbase对数据的定位:
1、采用四维坐标来对数据定位;
2、必须确定行键、列族、列限定符、时间戳,来对数据定位;
3、Hbase是一个键值(KV)数据库;
Hbase访问接口,提供了一个原生的Java API,可通过shell命令、thrift gateway方式、rest gateway方式来访问。可以通过PIG、hive来提供类似SQL类型的接口。
三、Hbase的功能组件
1、库函数,用于连接每个客户端;
2、Master 服务器,用来充当管家的作用;
3、Region服务器,负责存储不同的region。每个分区表会被分为多个region,每个region运行在region服务器上。
第一层:zookeeper文件,记录了-root表的位置信息,root表写死在zookeeper里面。
第二层:-root-表,记录了META表的region位置信息,-root表只能存在一个region里面,不会再分裂了。通过-root-表就可以访问meta表中的数据。
第三层:.meta.表,记录了用户数据表的region位置信息,meta表可以有多个region,保存了Hbase中所有用户数据表的region位置信息。
为了加快访问速度,.meta.表的全部region都会被保存在内存中。
Hbase并不直接跟磁盘打交道,而是通过HDFS进行数据存储:
Master服务器的作用:
1、对表增删改查;
2、负责不同region服务器的负载均衡;
3、负责调整分裂、合并后region的分布;
4、负责重新分配故障、失效的region服务器;