今天给大家带来的是大数据开发-HBase关系对比,相信大家也都发现了,有很多框架的用处都差不多,为什么只用这个而不用那个呢?这就是两者之间的一些不同之处的对比,然后选择一个最适用的,本期就是关系对比,为什么它最适用!
一、HBase基础知识
(1)HBase依赖和NoSQL
HBase 依赖于 HDFS 做底层的数据存储,BigTable 依赖 Google GFS 做数据存储
HBase 依赖于 MapReduce 做数据计算,BigTable 依赖 Google MapReduce 做数据计算
HBase 依赖于 ZooKeeper 做服务协调,BigTable 依赖 Google Chubby 做服务协调
NoSQL = NO SQL
NoSQL = Not Only SQL:会有一些把 NoSQL 数据的原生查询语句封装成 SQL,比如 HBase 就有 Phoenix 工具关系型数据库 和 非关系型数据库的典型代表
NoSQL:hbase, redis, mongodb
RDBMS:mysql,oracle,sql server,db2
(2)NoSQL 数据库的要点:
1.它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据
2. HBase 查询数据功能很简单,不支持 join 等复杂操作
3. 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。
4. HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)
5.主要用来存储结构化和半结构化的松散数据。
(3)结构化、半结构化和非结构化区别:
结构化:数据结构字段含义确定,清晰,典型的如数据库中的表结构
半结构化:具有一定结构,但语义不够确定,典型的如 HTML 网页,有些字段是确定的(title), 有些不确定(table)
非结构化:杂乱无章的数据,很难按照一个概念去进行抽取,无规律性与 Hadoop 一样,HBase 目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加 计算和存储能力。
二、HBase与Hadoop的关系
(1)HDFS
1.为分布式存储提供文件系统
2.针对存储大尺寸的文件进行优化,不需要对HDFS上的文件进行随机读写
3.直接使用文件
4.数据模型不灵活
5.使用文件系统和处理框架
6.优化一次写入,多次读取的方式
(2)HBase
1.提供表状的面向列的数据存储
2.针对表状数据的随机读写进行优化
3.使用key-value操作数据
4.提供灵活的数据模型
5.使用表状存储,支持MapReduce,依赖HDFS
6.优化了多次读,以及多次写
三、RDBMS与HBase的对比
关系型数据库
(1)结构:
1.数据库以表的形式存在
2.支持FAT、NTFS、EXT、文件系统
3.使用Commit log存储日志
4.参考系统是坐标系统
5.使用主键(PK)
6.支持分区
7.使用行、列、单元格
(2)功能:
1.支持向上扩展
2.使用SQL查询
3.面向行,即每一行都是一个连续单元
4.数据总量依赖于服务器配置
5.具有ACID支持
6.适合结构化数据
7.传统关系型数据库一般都是中心化的
8.支持事务
9.支持Join
HBase
(1)结构:
1.数据库以region的形式存在
2.支持HDFS文件系统
3.使用WAL(Write-Ahead Logs)存储日志
4.参考系统是Zookeeper
5.使用行键(row key)
6.支持分片
7.使用行、列、列族和单元格
(2)功能:
1.支持向外扩展
2.使用API和MapReduce来访问HBase表数据
3.面向列,即每一列都是一个连续的单元
4.数据总量不依赖具体某台机器,而取决于机器数量
5.HBase不支持ACID(Atomicity、Consistency、Isolation、Durability)
6.适合结构化数据和非结构化数据
7.一般都是分布式的
8.HBase不支持事务
9.不支持Join
好了以上就是本期的所有内容了,大数据开发的关系对比了解的清楚才能更好的选择适合自己的,知己知彼百战百胜。
希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。
有问题的欢迎在评论区留言,如有侵权请告知。