Riak对比HBase

标签: Hadoop&HBase hbase Riak | 发表时间:2012-07-08 13:12 | 作者:nosqlfan
出处:http://blog.nosqlfan.com

文章来自 Riak官方wiki,是一篇Riak与HBase的对比文章。Riak官方的对比通常都做得很中肯,并不刻意偏向自家产品。本文也是一样。

对比的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 有一些开源社区开发的图形化工具,同时也有一个命令行的控制终端能用。

来源: wiki.basho.com

42区 VPS
42qu.com 云主机 , 卖给创业的你 。 点击这里 , 查看详情
相关文章:
Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较
Riak系统介绍
Basho发布Riak CS,提供企业级云服务
Riak全方位介绍
Riak的最终一致性实现原理
无觅

相关 [riak hbase] 推荐:

Riak对比HBase

- - NoSQLFan
文章来自 Riak官方wiki,是一篇Riak与HBase的对比文章. Riak官方的对比通常都做得很中肯,并不刻意偏向自家产品. 对比的Riak版本是1.1.x,HBase是0.94.x. Riak 与 HBase 都是基于 Apache 2.0 licensed 发布. Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable.

[转][转]Cassandra、MongoDB、CouchDB、Redis、Riak、HBase比较

- - heiyeluren的blog(黑夜路人的开源世界)
来源: http://blog.nosqlfan.com/html/1845.html. 在NoSQL如日中天的今天,各种NoSQL产品可谓百花齐放,但每一个产品都有自己的特点,有长处也有不适合的场景. 本文对 Cassandra,  Mongodb,  CouchDB,  Redis,  Riak 以及  HBase 进行了多方面的特点分析,希望看完此文的您能够对这些NoSQL产品的特性有所了解.

NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase

- - 博客园_Ruby's Louvre
话说,尽管 SQL 数据库一直是我们IT行业中最有用的工具,然而,它们这样在行业中超过15年以上的“转正”终于就要寿终正寝了. 现在,虽然关系型数据库仍然无所不在,但它越来越不能满足我们的需要了. 但是,各种 "NoSQL" 数据库之间的差异比当年众多关系型数据库之间的差异要大许多. 这就加大了人们在建设自己的应用是选择合适的数据库的难度.

Riak与MongoDB的对比

- gOODiDEA - NoSQLFan
本文来自Riak所属的Basho公司的技术WiKi,文章从几个方面对Riak和MongoDB进行了对比,这不是一篇PK文章,NoSQLFan翻译给大家,希望本文能让您对Riak和MongoDB有更多的了解. 来源地址:wiki.basho.com. Riak和MongoDB在使用特性上有下面几个相同点:.

riak 1.0.2安装手记

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. git环境(看上去是非必须的):. 与0.1.42相比:. erlang环境要求R14B03及以上. 低版本会出现this emulator supports only up to 149的make错误. 使用leveldb为存储引擎:. 默认引擎还是bitcask,需要修改配置文件app.config.

Riak 2.0 技术预览版深度剖析

- - searchdatabase
Riak 2.0技术预览版已经开放下载,主版本添加了很多值得期待的特性,它的主要改进包括:. 在最终一致计数器(Riak 1.4中引入)基础之上,Riak 2.0 添加了set和map作为新的分布式数据类型. 这些Riak数据类型简化应用开发而不用牺牲Riak的可用性和分区耐受性的特性. 开发者根据数据需求可以选择哪个bucket应该拥有最终一致性(如今的默认Riak配置提供了高可用性)或强一致性.

hbase介绍

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
hbase是bigtable的开源山寨版本. 是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统. 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作). 主要用来存储非结构化和半结构化的松散数据.

[转]HBase简介

- - 小鸥的博客
   Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能. 其目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据,并且有数百万列元素组成的数据表. Hbase可以直接使用本地文件系统或者Hadoop作为数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥Hbase处理大数据量等功能,需要使用Hadoop作为文件系统.

HBase表设计

- - 互联网 - ITeye博客
默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据, 直到这 个region足够大了才进行切分. 一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按 照 region分区情况,在集群内做数据的负载均衡.