目录
1.什么是HBase?
2.HBase的优点
3.HBASE与传统数据库对比
ps: 行级数据库 vs 列式数据库
4.HBase角色
5.HBase与zookeeper的关系
1.什么是HBase?
HBase是一个高可用、高性能、可伸缩的列式分布式存储系统。说白了,HBase就是一种在HDFS上运行的的列式数据库。
HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBase是Google Bigtable的开源实现,但是与之相比也有很多不同点。但是无论怎样HBase都是利用Hadoop MapReduce来处理其中的海量数据,并且HBase利用zookeeper协同服务程序。
2.HBase的优点
1)具有良好的横向扩展性能(线性扩展),随着数据量增多可以通过增加节点的方式进行横向支撑;
2)数据存储在HDFS上,使得HBase不再需要另外的备份模式,而是直接使用HDFS上的备份模式保证了数据安全;
3)通过zookeeper协调查找数据,访问速度快;
4)具备列式数据库所有优点,在查询非结构化数据速度方面优越于行级数据库;
5)高可用性能非常完备,不用担心单点故障;
6)擅长处理小型数据和hadoop集群进行很好的互补。
3.HBASE与传统数据库对比
1)当数据量达到一定级别以后,没有办法通过传统的文件系统进行存储。
2)当数据量达到一定级别以后,数据库对数据操作将会变得非常缓慢。比如说原来的CRUD(增删改查)语句将会变得异常缓慢。计算是加了索引也没有很好的办法解决,并且索引开销也将大大升高。
3)传统数据库自身缺乏对数据异常庞大以后的一种备份机制。只能依靠外部方法进行备份。
4)传统数据库严重依赖操作系统和文件系统性能,并且传统数据库在横向扩展方面都做的不是尽如人意,不如分布式系统在横向扩展方面解决方案做的优秀。
ps: 行级数据库 vs 列式数据库
传统数据库,如Oracle、MySQL、msSQL、sybase等等,是行级数据库,存储密集型数据库;
而HBASE、Redis、NONGODB等,是NOSQL(NOT ONLY SQL),列式数据库,内存密集型数据库。
行级数据库是如何读取数据的?
比如说有一张表格info:
id name sex age
1 张三 男 23
select name from info; 行级数据库是在数据库中每行每行的寻找,虽然只找到了张三这条数据,其实它也是把张三所在的整行数据都读取出来后,把张三进行筛选出来然后进行结果的显示。而列式数据库不是用行去找数据,而是直接用列去找数据并把它拿出来,大大提高了效率。
4.HBase角色
一个或者多个主节点,HMaster
1)管理用户对Table的增删改查操作;
2)记录Region在哪台HRegion Server上;
3)在Region Split后,负责新Region的分配;
4)新机器加入时,管理HRegion Server的负载均衡,调整Region分布;
5)在HRegion Server宕机后,负责失效HRegion Server上的Regions迁移。
多个从节点,HRegionServer
1)HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块;
2)HRegion Server管理了很多table的分区,也就是Region。
HBase的client
HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信。
管理类操作:Client与HMaster进行RPC;
数据读写类操作:Client与HRegionServer进行RPC。
5.HBase与zookeeper的关系
1)保存在HMaster的地址和backup-master地址
HMaster:
a)管理HRegionServer
b)做增删改查表的节点
c)管理HRegionServer中的表分配
2)保存表-ROOT-的地址
HBase默认的根表,检索表。
3)HRegionServer列表
表的增删改查数据。
和HDFS交互,存取数据。