试比较hadoop中的数据库hbase和传统关系数据库的不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试比较hadoop中的数据库hbase和传统关系数据库的不同相关的知识,希望对你有一定的参考价值。
答:主要体现在以下几个方面:1.数据类型。关系数据库采用关系模型,具有丰富的数据类型和储存方式。HBase则采用了更加简单的数据模型,它把数据储存为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化成字符串保存到HBase中,用户需要自己编写程序把字符串解析成不同的数据类型。2.数据操作。关系数据库中包含了丰富的操作,如插入、删除、更新、查询等,其中会涉及复杂的多表连接,通常是借助多个表之间的主外键关联来实现的。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表与表之间的关系,通常只采用单表的主键查询,所以它无法实现像关系数据库中那样的表与表之间的连接操作。
3.存储模式。关系数据库是基于行模式存储的,元祖或行会被连续地存储在磁盘页中。在读取数据时,需要顺序扫描每个元组,然后从中筛选出查询所需要的属性。如果每个元组只有少量属性的值对于查询是有用的,那么基于行模式存储就会浪费许多磁盘空间和内存带宽。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,它的优点是:可以降低I/O开销,支持大量并发用户查询,因为仅需要处理可以回答这些查询的列,而不是处理与查询无关的大量数据行;同一个列族中的数据会被一起进行压缩,由于同一列族内的数据相似度较高,因此可以获得较高的数据压缩比。
4.数据索引。关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。与关系数据库不同的是,HBase只有一个索引——行键,通过巧妙的设计,HBase中所有访问方法,或者通过行键访问,或者通过行键扫描,从而使整个系统不会慢下来。由于HBase位于Hadoop框架之上,因此可以使用Hadoop MapReduce来快速、高效地生成索引表。
6.数据维护。在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍旧保留。
7.可伸缩性。关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,因此能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
但是,相对于关系数据库来说,HBase也有自身的局限性,如HBase不支持事务,因此无法实现跨行的原子性。
注:本来也想来问这个问题,然后复制一下的。结果找不到,只好自己手打了,麻烦复制拿去用的同学点下赞呗。
2019.3.27-16:40 参考技术A 1.hadoop是分布式平台,就把计算和存储都由hadoop自动调节分布到接入的计算机单元中
2.hbase是hadoop上实现的kv数据库
3.hbase+hadoop无需再与mysql搭配了, 而且kv数据库与传统关系数据库区别很大
4.hadoop+hbase是分布式计算与分布式数据库存储的组合
5.增删查改都是真的hbase的,
Hadoop之关键技术: HBase
数云大数据
bigdatafamily
传统的关系型数据库很好地满足了以银行交易为代表的事务性业务环境。当人们迈入需要面对非结构化数据构成的数据洪流的全新时代是,传统的关系型数据库已经不能满足需求。在这样的背景下,一HBase为代表的NoSQL数据库成为大数据处理领域的新秀。这里的NoSQL并不是摒弃传统关系型数据库以及SQL,其含义更多是指Not only SQL,即超越传统的关系型数据库。NoSQL的主要思路是在阻碍关系型数据库适应新需求的两个方面做了主要改进:
(1)放松事物一致性的要求。传统的关系型数据库的读写操作都是以事物为基础的,其具有四个典型的特性ACID(Atomicity-原子性,Consistency-一致性,Isolation-隔离性,Durability-持久性)。在这四个特性中,一致性是核心,其他三个特性都是围绕一致性构建的。一致性最典型的表现就是,当完成向一张表写入一条记录后,对该表的查询操作是一定可以获得这条记录的。为了满足这一特性,关系型数据库付出了很大的性能代价。这种一致性在很多要求严格的场景是必须的,但是在NoSQL针对的应用场合中,一致性要求并没有那么高。例如一个用户的动态,被他的好友晚些看到,并不会有什么致命的影响。而放松一些要求,能为NoSQL数据库带来极大的性能提升和构架灵活的好处。
(2)改变固定的表结构。关系型数据库采用了严格的面向行的表结构对数据进行存储,这种方式对以结构化数据为主的情况比较合适,但在业务需求的变化要求数据结构和系统架构发生变化是,就会面临问题。因此NoSQL数据库并没有沿用面向行的表结构,而采用了一些新的形式,例如key-value数据库、列存储数据库等。
HBase架构图:
HBase在整个Hadoop体系中位于结构化存储层,其底层存储支撑位HDFS文件系统,使用MapReduce框架对存储在其中的数据进行处理,利用Zookeeper作为协同服务。
HBase Client
Client是HBase功能的使用者,HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC。
Zookeeper
Zookeeper是HBase体系中的协同管理节点,提供分布式协作,分布式同步,配置管理等功能。ZookeeperQuorum中存储的信息包括:
存储所有HRegionServer的状态,HRegionServer会把自己以短暂的(Ephemeral)方式注册到 Zookeeper中:/hbase/rs
HMaster
HMaster是整个框架中的控制机节点,他负责管理用户对数据表的增删改和查询操作,调整HRegionServer的负载均衡和Region分布,并确保某个HRegionServer失效后次节点上Region的迁移。HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个HMaster运行,HMaster在功能上主要负责table和region的管理工作:
管理用户对table的增、删、改、查操作
管理HRegionServer的负载均衡,调整region分布
在region split后,负责新region的分配
在HRegionServer停机后,负责失效HRegionServer上的region迁移
HDFS的垃圾文件回收
处理schema更新请求
HRegionServer
HRegionServer维护HMaster分配给它的region,并负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了table中的一个region,HRegion中由多 个HStore组成。每个HStore对应了Table中的一个columnfamily的存储,可以看出每个columnfamily其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个column family中,这样最高效。
HStore存储是HBase存储的核心,由两部分组成,一部分是MemStore,一部分是StoreFile。MemStore是 Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile。
关注“数云大数据”,更多干货,客官自取勿谢!
数据驱动 云领未来 www.bigdatafamily.com
以上是关于试比较hadoop中的数据库hbase和传统关系数据库的不同的主要内容,如果未能解决你的问题,请参考以下文章
hadoop与传统的关系型数据库(如oracle)相比,有啥优势及劣势?