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 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

HP-UX培训学习笔记

HP-UX操作系统全称为Hewlett Packard UniX,是惠普服务器上所有的操作系统。其发源自 AT & T SRV4系统,可以支持HP的PA-RIS...

17220
来自专栏草根博客站长有话说

Typecho 支持异步回调版的评论邮件插件 Mailer

Typecho 的评论邮件通知是个比较麻烦的问题, Handsome 主题使用文档里推荐的是 CommentToMail 插件不知道为啥在明月自己的阿里云ECS...

11560
来自专栏FreeBuf

NSA武器库之Eternalchampion(永恒冠军)复现

准备工作 攻击机1:带有漏洞利用工具集的XP,并且此次需要准备好WinHex, IP 172.26.97.35 攻击机2:Kali, IP 172.26.97....

28960
来自专栏SDNLAB

网络操作系统VyOS应用实践(一)

前言 本文在前面安装篇的基础上,对其功能进行应用实践。本文先介绍使用中的一些注意事项,后面介绍其网络接口相关的功能。 探索开始 这款操作系统目的是为了在x86平...

1.4K60
来自专栏雨过天晴

转 树莓派无显示器安装系统

18520
来自专栏落影的专栏

iOS开发笔记(五)

前言 社会的模式很多是重复的,当你做一样事情很擅长时,与之类似的事情也能触类旁通。 正文 Code开发 1、delegate的trick 很多人习惯在调用de...

52240
来自专栏FreeBuf

Kali 2.0 安装与使用指南

关于kali使用前的一些配置,网上有很多版本,但是几乎都很雷同,或者是不全,或者是根本就没有测试过,或者是有的方法是错的(换句话说是版本变化的差异),因此让很多...

1.1K50
来自专栏北京马哥教育

Python框架:Django写图书管理系统(LMS)

今天我会带大家真正写一个Django项目,对于入门来说是有点难度的,因为逻辑比较复杂,但是真正的知识就是函数与面向对象,这也是培养用Django思维写项目的开始

27400
来自专栏FreeBuf

利用Pentestbox打造MS17-010移动杀器

1、前言 前段时间Shadow Broker披露了 Windows大量漏洞,甚至爆出黑客组织 Equation Group 对于Windows 远程漏洞 MS1...

37770
来自专栏FreeBuf

CVE 2017-0199漏洞利用的新姿势

近日从客户处捕获一枚邮件附件中的可疑word样本,以下是扫描结果,检测率貌似不高。 ? ? 手动分析吧。 文件md5:0b16b255918264667a9f0...

25250

扫码关注云+社区

领取腾讯云代金券