专栏首页坚毅的PHPHBase Cassandra Riak HyperTable

HBase Cassandra Riak HyperTable

Cassandra                                                              HBase

一致性

Quorum NRW策略 通过Gossip协议同步Merkle Tree,维护集群节点间的数据一致性

单节点,无复制,强一致性

可用性

1,基于Consistent Hash相邻节点复制数据,数据存在于多个节点,无单点故障。 2,某节点宕机,hash到该节点的新数据自动路由到下一节点做 hinted handoff,源节点恢复后,推送回源节点。 3,通过Gossip协议维护集群所有节点的健康状态,并发送同步请求,维护数据一致性。 4,SSTable,纯文件,单机可靠性一般。

1,存在单点故障,Region Server宕机后,短时间内该server维护的region无法访问,等待failover生效。 2,通过Master维护各Region Server健康状况和Region分布。 3,多个Master,Master宕机有zookeeper的paxos投票机制选取下一任Master。Master就算全宕机,也不影响Region读写。Master仅充当一个自动运维角色。 4,HDFS为分布式存储引擎,一备三,高可靠,0数据丢失。 5,HDFS的namenode是一个SPOF。

伸缩性

1,Consistent Hash,快速定位数据所在节点。 2,扩容需在Hash Ring上多个节点间调整数据分布。

1,通过Zookeeper定位目标Region Server,最后定位Region。 2,Region Server扩容,通过将自身发布到Master,Master均匀分布。

负载均 衡

请求Zookeeper取得整个集群地址,然后根据Consistent Hash选择合适的节点。client会缓存集群地址。

请求Zookeeper取读写数据路由表定位Region Server,Master会修改这个路由表。Client自身也会缓存一部分路由信息。

数据差异比较算法

Merkle Tree , Bloom Filter

Bloom Filter

锁与事务

Client Timestap(Dynamo使用vector lock)

Optimistic Concurrency Control

读写性能

数据读写定位非常快。

数据读写定位可能要通过最多6次的网络RPC,性能较低。

CAP点评

1,弱一致性,数据可能丢失。 2,可用性高。 3,扩容方便。

1,强一致性,0数据丢失。 2,可用性低。 3,扩容方便。

大方面对比 Riak 与 HBase 都是基于 Apache 2.0 licensed 发布 Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable Riak 主要用 Erlang 写成,包括一部分的C,而 HBase 是用 Java 写的。 功能性对比

>

功能点

Riak

HBase

数据模型

Riak 通过bucket作为命名空间,存储 Key-Value 信息 Buckets, Keys, and Values

HBase 按预先定义好的 column family 结构来存储数据(每一条数据有一个key以及若干个列属性值组成,每列的数据都有自己的版本信息)。HBase 中的数据是按列进行有序存储的(不像关系型数据库中按行存储)。 HBase Data Model Supported Data Types

存储引擎

Riak 采用模块化的思想,将存储层作为引擎挂到系统上。你可以根据自己的需要选择不同的存储引擎。 Riak 支持的存储引擎 你也可以甚至 Riak 的 backend API实现你自己的存储引擎。

HBase 是存在于 HDFS之上的,其数据文件存在HDFS中。与BigTable 类似,数据存储分为内存中的 MemStore 和落地存储的 StoreFiles。其数据文件称为HFile,基于BigTable 的SSTable。可以直接使用JVM的 文件系统IO操作来对数据文件进行操作。 HDFS Hadoop Uses HDFS

数据访问接口

除了直接使用 Erlang 之外,Riak 还提供了两种数据访问接口,REST方式和 Protocol Buffer : HTTP Protocol Buffers Riak 的客户端都是基于上面的API来实现,目前对主流的语言支持很好。 Client-Libraries Community Developed Libraries and Projects

HBase 的操作主要通过在JVM中直接执行代码。HBase 也提供了外部数据访问方式,包括REST方式以及Thrift协议的访问。 Java Interface REST Thrift

数据操作方式

Riak中支持下面四种方式的操作 对主键进行直接操作 (GET, PUT, DELETE,UPDATE) MapReduce 方式 Riak 还提供 Secondary Indexes Riak Search 插件 上面几种方式的对比文章

HBase 有两种方式的数据操作,通过对有序key值进行扫描查询,获取value值,或者借助强大的Hadoop来进行MapReduce查询 Scanning MapReduce Secondary Indexes

数据一致性问题

Riak 通过 vector clock的方式来维护数据版本,处理不一致的情况。同时你也可以不使用vector clock,而是采用基于时间戳的 “last-write-wins” 策略 Vector Clocks Why Vector Clocks Are Easy Why Vector Clocks Are Hard

HBase 采用了强一致性的读写保证。数据会在多个不同的region中进行保存。Column families 可以包含无限多个数据版本,每个版本可以有自己的TTL Consistent Architecture Time to Live

并发

Riak 集群中的所有节点都能同时进行读写操作,Riak只负责进行数据的写入操作(基于vector clock进行带版本控制的保存),在数据读取的时候再来定义数据冲突的处理逻辑。

HBase 通过行级锁来保证写操作的原子性,但是不支持多行写操作的事务性。数据扫描操作不保证一致性。 Consistency Guarantees

复制

Riak 的数据复制系统的理论来源主要是Dynamo 的论文和 Eric Brewer 博士的 CAP 理论。Riak 采用一致性hash对数据进行分片,同一份数据会在多个节点中保存备份。在一致性hash的理论支持下,Riak采用的是虚拟节点的方式来实现数据的复制并进行数据平衡分配的保证。引入虚拟节点使得数据与实际节点间能够保持松耦合 Replication Clustering Riak 的API 提供在一致性和可用性之间的自由选择,你可以根据自己的应用场景选择不同策略。在最初存储数据到Riak中时,可以按bucket为单位进行复制方式的配置。在后续的读写操作中,每次都能够再进行复制份数的设置。 Reading, Writing, and Updating Data

HBase 是典型的最终一致性实现,数据复制通过 master向slave的推送来实现。最近HBase也添加了master-master 的实现。 Replication

扩展性

Riak 支持动态添加我删除节点,所有节点都对等,不存在主从的区别。当向Riak 中添加一个节点后,集群会通过gossiping 发现节点并分配对应的数据范围并进行数据迁移。移除节点的过程相反。Riak提供了一系列工具来完成节点的增删操作。 Adding and Removing Nodes Command Line Tools

HBase 以regions为单位进行分片,region会分裂和合并,并自动在多个节点间分配。Regions Node Management HBase Architecture

多数据中心的数据同步

只有Riak的企业版才支持多数据中心的部署方案,通常用户仅支持单数据中心的部署。 Riak Enterprise

HBase通过region来进行分片,天然就支持多数据中心的部署。 Node Management

图形化的监控管理工具

从Riak 1.1.x 开始,Riak 发布了 Riak Control,这是一个针对Riak的开源的图形化管理工具。 Riak Control Introducing Riak Control

HBase 有一些开源社区开发的图形化工具,同时也有一个命令行的控制终端能用。 Admin Console Tools Eclipse Dev Plugin HBase Manager GUI Admin

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《HBase 权威指南》学习笔记一 引言

    解决数据库多写问题,同事推荐使用hbase,并做了HBase培训,也看到老大tim参会说淘宝用hbase替代部分mysql核心应用,学习研究下看是否适用 分布式...

    财主刀刀
  • node.js进阶学习

    简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?”尽管不是针对所有人的,但 Nod...

    财主刀刀
  • jersey处理支付宝异步回调通知的问题:java.lang.IllegalArgumentException: Error parsing media type 'application/x-www

    tcpflow以流为单位分析请求内容,非常适合服务器端接口类服务查问题 这次遇到的问题跟支付宝支付后的回调post结果有关 淘宝的代码例子: publi...

    财主刀刀
  • 新数仓系列:Hbase国内开发者生存现状(2)

    大数据前几年各种概念争论很多,NoSQL/NewSQL,CAP/BASE概念一堆堆的,现在这股热潮被AI接过去了。大数据真正落地到车联网,分控,各种数据分析等等...

    大数据和云计算技术
  • Linux操作(6)—— 查找文件及查看文件内容

    gzq大数据
  • Linux中文件系统注册及mount过程分析4

    这里就用到了最开始说的注册的文件系统,通过get_fs_type来查找是否支持fstype类型的文件系统,例如ext4支持的话就把前面注册的结构返回到这里,以后...

    用户3765803
  • 从尾到头打印链表

    用户3003813
  • 一个线程安全的单例模式测试

    单例模式,一般我喜欢这样实现 class SingleTest { public: static SingleTest *Instance(); p...

    良月柒
  • 从零学习:详解基于树形结构的ML建模——决策树篇

    来源:Analytics Vidhya 编译:Bot 编者按:通常,我们会把基于树形结构的学习算法认为是最好的、最常用的监督学习方法之一。树能使我们的预测模型集...

    企鹅号小编
  • 研究:企业过度采购严重 SAP、微软产品浪费率最高

    最近据国外最新的研究显示,英美企业投资的软件中,约有3成未曾使用,有8%属于少用,浪费的比例约有38%。若依闲置不用的比例及其授权价格来看比较,以拥有3万台计算...

    人称T客

扫码关注云+社区

领取腾讯云代金券