HBase基础入门
HBase的名称,来自于:Hadoop DataBase,取出来了H和Base叫做HBase
HBase就是一个数据库,运行在Hadoop之上。
HBase基础简介
HBase的引出
前提:在大数据时代,很多公司使用HDFS + MapReduce的组合来完成大数据的2个基础需求:
海量数据的存储(HDFS)
海量数据的计算(MapReduce)
问题:HDFS没有办法高效的完成 随机数据的访问和写入
比如,在1TB数据内,想要准确的找到某一条数据,需要对数据进行扫描,一条条的判断。效率很低。
因为这个问题,HBase应运而生。
HBase是一款构建在HDFS之上的数据库系统,有极佳的:随机访问能力、海量的吞吐能力
HBase的应用场景
HBase的应用场景是非常广泛的。总结一下场景需求:
数据量很大
有随机访问的需求
只要满足如上2个要求,就非常合适使用HBase
HBase的发展
HBase不是一个新技术,而是一个老将 尽管HBase已经诞生很久了,但是目前在市面上,依旧是非常火的:分布式NoSQL数据库
HBase的特点
HBase和RMDBS、HDFS、Hive的对比
HBase VS RDBMS(MySQL)
架构上:
HBase是分布式,扩展性能是水平扩展(加机器)
RDBMS多数是单机系统,扩展性能是竖向扩展(加配置)
事务上:
HBase基本不支持,很难做到
RDBMS支持的非常好
场景上:
HBase:海量数据下的:随机访问 + 海量吞吐
RDBMS:关系型数据库,业务数据的CRUD(增删改查)
数据量:
HBase:海量级别
RDBMS:少量级别(只针对业务数据)
注:随机访问 在数据集内,随机的查询某一部分,或者随机的插入到某一部分 比如:SELECT * FROM XXX WHERE id = 5; 这就是随机查询 INSERT INTO XXX VALUES(1, 2, 3); 这就是随机插入
HBase VS HDFS
架构上:
都是分布式系统,主从模式(master + slaves)
事务上:都不怎么支持
场景上:
HDFS:海量数据的存储,存储的是文件(可以认为就是一个分布式的硬盘)
HBase:海量数据的存储 + 海量数据下的随机访问(构建在分布式硬盘上的数据库)
数据量:都支持海量数据的存储
HBase 和 HDFS 都是用于分布式海量数据存储 方向不同,HDFS只存储,HBase存+随机访问
HBase VS Hive
架构上:
HBase是一个分布式的系统,主从模式
Hive是一个单机的系统(Hive底层运行的MapReduce是分布式的
事务上:都不怎么支持
事务就是指对数据进行操作的一种保险 如果不支持事务,比如银行转账记录要存储到数据库中,如果出现问题 这一条数据就是丢失了 如果有事务,会经过多个步骤:
开启事务
插入SQL语句
插入SQL语句2
更新表SQL语句
删除数据SQL语句
关闭(提交)事务
在事务的开启 和 关闭的中间的所有操作,是整体性的;要么全部成功 要么全部失败 不会出现,成功一半 失败一半。
场景上:
HBase 海量数据存储 + 随机访问能力
Hive 海量数据批处理(分析) 也就是HBase和Hive都提供查询能力 HBase的查询能力在于:随机查询 + 高吞吐输出(一批数据的输出) Hive的查询能力在于:对海量数据进行全量计算,得到结果
总体总结:
RDBMS:小量数据下供业务数据走:CRUD(增删改查)
HDFS:海量数据下的文件系统(存储)
Hive:海量数据下的批处理(全量计算)
HBase:海量数据下的随机访问
HBase这么好,为什么还要HDFS:
HBase底层是基于HDFS
哪怕HBase和HDFS没有联系,它们的出发点也不一一样,HDFS依旧有用
HBase存储是用于随机访问的
HDFS存储是单纯的存数据 如果是存储文件,有必要用HBase?没必要,用HDFS就可以 如果要存储需要随机访问的数据,用HBase才合适
简介的总结
HBase是数据库
HBase基于HDFS之上
HBase可以存数据
HBase支持随机访问(随机查询和随机插入)
HBase的场景在于:海量数据存储的需求 和 随机访问需求