Cassandra vs HBase
By Vaibhav Puranik Translated By Jametong
我们是一家广告网络公司.我们需要存储展示与点击信息.我们在为我们的新项目评估多个不同的大批量数据(或nosql,或任何你喜欢的称呼)系统.过去8个月中,我们一直在一个测试产品上使用HBase,并且满意它的表现,但是,最近Cassandra的风头很高,因此,我们决定对它做个测试.我认为,从某些角度讲,Cassandra团队的推广做的很不错.你将发现,在Santa Monica,哪怕是非技术人员(诸如风险投资商、CEO以及产品经理)也会相互推荐使用Cassandra.
Cassandra给人的第一印象很好.它们的首页看上去比HBase更加专业也更加友好.安装并运行它也很简单.这个网站的文档很丰富.说实在话,安装并让其工作只花费了我5分钟的时间.
真正的挑战是理解Cassandra的数据模型,并尝试在我们的使用场景中实现它.我们很清楚如何在HBase中实现它,因为我们对HBase有相当不错的使用经验.虽然Cassandra也是从BigTable出继承了同样的数据模型,Cassandra与HBase之间还是有一些根本性的不同的.我试图用表格整理了两个系统之间的差异,如下:
Cassandra
HBase
缺少类似于表的概念.所有的文档都告诉你,有多个Keyspace的情况不常见.这意味着你必须在一个集群中共享同一个key space.另外,新增keyspace需要重启集群才能生效. |
存在表相关的概念.每个表都有它自己的key space. 这一点对我们来说很重要.添加/删除表都很容易,跟在RDBMS中一样. |
使用字符串的Key.通常使用uuid作为Key.如果希望你的数据按照时间排序,可以使用TimeUUID. |
使用二进制Key.通常将三个不同的项目组合在一起来构建一个Key.这意味着你可以搜索一个给定表中的多个键. |
即使使用TimeUUID,也不会发生热点问题,因为Cassandra会对客户端请求做负载均衡. |
如果Key的第一部分是时间或者序列数,就会发生热点问题.所有新的Key都会被插入同一个区域,一直到此区域被塞满(因而导致出现热点问题). |
支持列排序 |
不支持列排序 |
超列(Super Column)概念使得你可以设计非常灵活也非常复杂的表结构. |
不支持超列.不过可以设计一个类似与超列的结构,不过列名称与值都是二进制的. |
没有便捷的方法来自增长一个列的值.实际上,最终一致性的不同特性使得更新/写入一条记录并在更新后立即读出非常困难.必须确保使用R+W>N来实现强一致性. |
由于设计上就是一致性.提供了一个非常便捷的方法来自增计数器.非常适合做数据汇总. |
刚开始支持Map Reduce接口.还需要有一个hadoop集群来运行它.需要将数据从Cassandra集群迁移到Hadoop集群.不适合对大型数据运行map reduce任务. |
对Map Reduce的支持是原生的.HBase构建在Hadoop集群上.数据不需要做迁移. |
如果不需要Hadoop的话,维护相对简单. |
由于包含多个诸如Zookeeperr、Hadoop以及HBase本身的可活动组件,维护相对复杂. |
到目前为止,还没有本地化的Java Api支持.没有Java文档.虽然是使用Java编写的,你还是必须用Thrift接口来与集群进行通讯. |
有友好的本地Java API.比Cassandra更像是Java系统.由于我们的应用是基于Java的,这一点对我们很重要. |
没有主节点,因此也没有单点故障. |
虽然在概念上有一个主节点服务,HBase本身对它的依赖并不严重.即使在主节点宕机的情况下,HBase集群仍然可以正常提供数据服务.Hadoop的Namenode是一个单点故障. |
在按照这种方式比较过数据模型与相关特性后,对我们来讲,HBase是明显的优胜者.我的看法是,如果你确实需要一致性,HBase是一个明显的选择.更进一步,本地化的Map Reduce支持、表概念以及可修改而且不用重启集群的简单的表结构是你不可忽略的加分项.HBase是一个更加成熟的平台.当人们说Twitter、Facebook在使用Cassandra时,他们忘记了这些公司同时也在使用HBase.实际上,Facebook最近雇用了一个HBase的代码提交者(Commiter),这清楚地表明Facebook对HBase的兴趣.
总之,我们全力支持HBase!!
分享到:
相关推荐
Cassandra与HBase系统架构比对 Cassandra与HBase是两种常用的NoSQL数据库管理系统,它们之间有着许多相似之处,但同时也存在着一些关键的差异。以下是对Cassandra与HBase系统架构的比对。 数据模型 Cassandra的...
### Cassandra与HBase系统架构比对 #### 一、引言 随着大数据技术的发展,分布式数据库因其出色的扩展性和高可用性而受到了广泛的关注。在众多的NoSQL数据库中,Cassandra 和 HBase 是两种非常流行的分布式数据库...
**Cassandra与HBase系统架构比对** Cassandra和HBase是两个广泛使用的分布式NoSQL数据库,它们在处理大规模数据存储和检索方面表现出色。两者都设计用于处理PB级的数据,支持高并发读写操作,并且是高度可扩展的。...
这个合集涵盖了四个关键的技术:Hadoop、Cassandra、HBase和NoSQL,这些都是构建大规模分布式数据存储和处理系统的基础。 **Hadoop** 是一个开源的框架,主要用于处理和存储大量数据。《Hadoop权威指南》是了解...
benchmark_hbase_cassandra 使用 YCSB 对 HBase 和 Cassandra 进行基准测试的脚本。 数据库 - HBase 和 Cassandra benchmark_report.pdf 该文件包含使用 YCSB 的 HBase 和 Cassandra 基准测试结果的报告和观察结果。...
这里提到了几个关键组件,如Hadoop、MapReduce、Cassandra、HBase、Hive、Pig、Spark以及Mahout,它们都是大数据生态系统的重要组成部分。 1. **Hadoop**:Hadoop是一个开源框架,主要用于分布式存储和计算大规模...
与Cassandra相比,HBase更注重实时查询和随机读写,而Cassandra更侧重于写入性能和最终一致性。两者都在大数据环境下有各自的适用场景。 关键概念包括: - **行键(RowKey)**:唯一标识一行,决定数据的物理存储...
大数据促进了 NoSQL 的迅速繁荣,出现了大量的技术多样的 NoSQL 系统,这些 NoSQL 系统主要可以分为三大类:即文档系统(MongoDB)、键值系统(Cassandra、Hbase)和图系统(Neo4J)。 1.2 Cassandra NoSQL 数据库...
- **列存储vs行存储**:HBase采用列存储方案,这种方式在查询相同列数据时更为高效。 - **LSM树(Log-Structured Merge Tree)**:这是一种数据结构,用于提高读取性能。通过将写入操作记录到磁盘上的日志文件中,...
非关系数据库(经常被称为NoSQL)的特点是弹性和可伸缩性。另外,它们可以存储大数据并与云计算系统协同工作。这些因素导致非关系数据库非常流行。在2013年,NoSQL数据库的种类达到了150多个,并且一直在增长,多种...
The HBase design patterns apply equally well to Cassandra, MongoDB, and so on. In Detail With the increasing use of NoSQL in general and HBase in particular, knowing how to build practical ...
特别是在Java、Java Enterprise Edition、SOA、Spring、Hibernate、Hadoop、Hive、Flume、Sqoop、Oozie、Spark、Shark、YARN、Impala、Kafka、Storm、Solr/Lucene以及NoSQL数据库如HBase、Cassandra、MongoDB、MPP...
Cassandra CQL 及其商业应用场景介绍 Cassandra 是一个分布式、支持类 SQL 的 NoSQL 数据库,具有高性能、高可用性和高可扩展性等特点。Cassandra 的核心能⼒力在于其分布式架构和高性能的读写能力。 CQL...
2. **非关系数据库模型的分布式列式数据库**:包括HBase、Cassandra和HyperTable等,这些数据库通常用于处理大规模非结构化或半结构化数据,具备高可扩展性和高可用性。 ##### 列式数据库的特点 - **高效的存储空间...
数据的存储模型是基于列族(Column Family),类似于Bigtable或HBase中的表,可以理解为宽行模式的表格。 分区和复制是Cassandra的关键特性。它使用一致性哈希来分配数据到不同的节点,确保数据的均匀分布。每个...