Riak学习(3):Riak对比HBase(转)
对比的Riak版本是1.1.x,HBase是0.94.x。
大方面对比
- Riak 与 HBase 都是基于 Apache 2.0 licensed 发布
- Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable
- Riak 主要用 Erlang 写成,包括一部分的C,而 HBase 是用 Java 写的。
功能性对比
功能点 | Riak | HBase |
---|---|---|
数据模型 | Riak 通过bucket作为命名空间,存储 Key-Value 信息
| HBase 按预先定义好的 column family 结构来存储数据(每一条数据有一个key以及若干个列属性值组成,每列的数据都有自己的版本信息)。HBase 中的数据是按列进行有序存储的(不像关系型数据库中按行存储)。
|
存储引擎 | Riak 采用模块化的思想,将存储层作为引擎挂到系统上。你可以根据自己的需要选择不同的存储引擎。
你也可以甚至 Riak 的 backend API实现你自己的存储引擎。 | HBase 是存在于 HDFS之上的,其数据文件存在HDFS中。与BigTable 类似,数据存储分为内存中的 MemStore 和落地存储的 StoreFiles。其数据文件称为HFile,基于BigTable 的SSTable。可以直接使用JVM的 文件系统IO操作来对数据文件进行操作。
|
数据访问接口 | 除了直接使用 Erlang 之外,Riak 还提供了两种数据访问接口,REST方式和 Protocol Buffer :
Riak 的客户端都是基于上面的API来实现,目前对主流的语言支持很好。 | HBase 的操作主要通过在JVM中直接执行代码。HBase 也提供了外部数据访问方式,包括REST方式以及Thrift协议的访问。
|
数据操作方式 | Riak中支持下面四种方式的操作
| HBase 有两种方式的数据操作,通过对有序key值进行扫描查询,获取value值,或者借助强大的Hadoop来进行MapReduce查询
|
数据一致性问题 | Riak 通过 vector clock的方式来维护数据版本,处理不一致的情况。同时你也可以不使用vector clock,而是采用基于时间戳的 “last-write-wins” 策略
| HBase 采用了强一致性的读写保证。数据会在多个不同的region中进行保存。Column families 可以包含无限多个数据版本,每个版本可以有自己的TTL
|
并发 | Riak 集群中的所有节点都能同时进行读写操作,Riak只负责进行数据的写入操作(基于vector clock进行带版本控制的保存),在数据读取的时候再来定义数据冲突的处理逻辑。 | HBase 通过行级锁来保证写操作的原子性,但是不支持多行写操作的事务性。数据扫描操作不保证一致性。
|
复制 | Riak 的数据复制系统的理论来源主要是Dynamo 的论文和 Eric Brewer 博士的 CAP 理论。Riak 采用一致性hash对数据进行分片,同一份数据会在多个节点中保存备份。在一致性hash的理论支持下,Riak采用的是虚拟节点的方式来实现数据的复制并进行数据平衡分配的保证。引入虚拟节点使得数据与实际节点间能够保持松耦合
Riak 的API 提供在一致性和可用性之间的自由选择,你可以根据自己的应用场景选择不同策略。在最初存储数据到Riak中时,可以按bucket为单位进行复制方式的配置。在后续的读写操作中,每次都能够再进行复制份数的设置。 | HBase 是典型的最终一致性实现,数据复制通过 master向slave的推送来实现。最近HBase也添加了master-master 的实现。
|
扩展性 | Riak 支持动态添加我删除节点,所有节点都对等,不存在主从的区别。当向Riak 中添加一个节点后,集群会通过gossiping 发现节点并分配对应的数据范围并进行数据迁移。移除节点的过程相反。Riak提供了一系列工具来完成节点的增删操作。
| HBase 以regions为单位进行分片,region会分裂和合并,并自动在多个节点间分配。Regions
|
多数据中心的数据同步 | 只有Riak的企业版才支持多数据中心的部署方案,通常用户仅支持单数据中心的部署。
| HBase通过region来进行分片,天然就支持多数据中心的部署。
|
图形化的监控管理工具 | 从Riak 1.1.x 开始,Riak 发布了 Riak Control,这是一个针对Riak的开源的图形化管理工具。
| HBase 有一些开源社区开发的图形化工具,同时也有一个命令行的控制终端能用。
|

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
大数据应用之HBase数据插入性能优化之多线程并行插入测试案例
一、引言: 上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码。根据网友的反馈,基于单线程的模式实现的数据插入毕竟有限。通过个人实测,在我的虚拟机环境下,单线程插入数据的值约为4w/s。集群指标是:CPU双核1.83,虚拟机512M内存,集群部署单点模式。本文给出了基于多线程并发模式的,测试代码案例和实测结果,希望能给大家一些启示: 二、源程序: 1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.hbase.HBaseConfiguration; 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileNotFoundException; 6 import java.io.FileReader; 7 import java.io.IOException; 8 import java.util.ArrayList; 9 import j...
- 下一篇
Amazon DynamoDB 概览
1. 什么是Amazon DynamoDB DynamoDB 是一种快速、全面受管的 NoSQL 数据库服务,它能让用户以简单并且经济有效地方式存储和检索任何数据量,同时服务于任何程度的请求流量。所有的数据项都存储在固态驱动器 (SSD) 中,同时在 3 个可用区域间进行复制,确保达到较高的可用性和持久性。 通过 DynamoDB,您可以卸下由于运行和扩展高可用性的分布式集群而带来的管理负担,而且只需以较低的价格为您使用的部分付费。 服务亮点 可扩展 – Amazon DynamoDB 旨在实现吞吐量和存储容量高效无缝扩展。 配置吞吐量 – 创建表时,只需指定所需的请求容量即可。DynamoDB 会为您的表分配专用资源以满足性能要求,并自动将数据分区到足够多的服务器以满足请求容量。如果您的应用吞吐量需求发生变化,只需使用 AWS 管理控制台或 Amazon DynamoDB API 调用更新表的请求容量即可。在扩展过程,仍然能够保证之前的吞吐量水平没有下降。 自动存储扩展 – 您在 DynamoDB 表中可存储数据量没有限制,而且随着您使用 DynamoDB 写入 API 存储数据量...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19