大数据对决:Cassandra vs. HBase

Bigtable的启发开源项目采取不同的路线的高度可扩展的,高度灵活的,分布式的,宽的列的数据存储

在这个美好的大数据新世界中,一项名为“Bigtable”的数据库技术似乎值得考虑——尤其是如果这项技术是谷歌的工程师们创造的,这家公司应该对管理大量数据有所了解。如果你相信,两个Apache数据库项目卡珊德拉HBase的- 有你覆盖。

Bigtable最初是在2006年描述的谷歌公布的研究。有趣的是,那篇论文并没有将Bigtable描述为一个数据库,而是将其描述为一个“稀疏的、分布式的、持久的多维映射”,用于存储pb级的数据并在商用硬件上运行。行被唯一地索引,Bigtable使用行键对数据进行分区,以便在集群中分布。可以动态地在行中定义列,这使得Bigtable在很大程度上没有模式。

[阅读全文评论:HBase具有大规模可伸缩性——而且非常复杂|卡桑德拉降低了大数据的门槛|Bossie奖2013:最佳的开源大数据工具|得到每一天的消化键的故事InfoWorld的每日简讯。]

Cassandra和HBase从最初的Bigtable定义中借鉴了很多东西。事实上,Cassandra是从Bigtable和Amazon的Dynamo继承而来的,而HBase将自己描述为“开源的Bigtable实现”。As such, the two share many characteristics, but there are also important differences.

为大数据而生无论卡桑德拉和HBase的是NoSQL数据库,一个术语,你可以找到无数的定义。一般情况下,这意味着你不能操纵与SQL数据库。然而,卡桑德拉已实施CQL(Cassandra的查询语言),它的语法SQL后明显建模。

两者都是为管理超大数据集而设计的。HBase文档宣称,一个HBase数据库应该有数亿甚至数十亿行。如果有任何不足,建议您坚持使用RDBMS。

两者都是分布式数据库,不仅在数据存储方式上,而且在数据访问方式上。客户端可以连接到集群中的任何节点并访问任何数据。

这两个要求近乎线性的可扩展性。需要管理两倍的数据?然后在您的集群节点一倍的数量。

两者都可以通过复制防止群集节点故障导致数据丢失。写入数据库的行主要由单个集群节点负责(行到节点的映射由所使用的分区模式决定)。但是数据被镜像到称为副本节点的其他集群成员(用户可配置的复制因子指定了数量)。如果主节点发生故障,仍然可以从一个复制节点获取其数据。

两者都被称为面向列的数据库,其可被混淆,因为它听起来像这一直概念性地旋转90度的关系数据库。什么是更令人困惑的是,数据显然是排初步安排,并表的主键是该行的关键。然而,与关系数据库中,在面向列的数据库需要两行都不能具有相同的列。正如上面提到的,你可以添加列到行上飞(表已经创建之后)。事实上,你可以添加许多列到行。确切的上限是很难计算,但它不太可能,你会打,即使你加列数以万计的极限。

除了源自Bigtable定义的特性外,Cassandra和HBase还有其他相似之处。

这两种实现与记录写操作日志文件,以确保耐久性开始类似的写入路径。即使写的剩余部分失败,保存在日志中的操作可以重播。该数据通过一个大的,顺序写入(基本上是内存缓存的副本),旁边有一个内存缓存写入,然后终于到磁盘。通过既卡桑德拉和HBase的使用的总存储器和磁盘数据结构或多或少日志结构合并树。在卡桑德拉盘组件是的SSTable;在HBase的它是HFILE。

两者都提供了用JRuby实现的命令行shell。两者都主要是用Java编写的,Java是用于访问两者的主要编程语言——尽管在许多其他编程语言中都可以使用客户端库。

当然,卡桑德拉和HBase的都是基于Apache软件基金会管理的开源项目,都是免费提供在Apache版本2许可。

集群和对比然而,尽管有这些相似之处,你会发现一些关键的差异。

虽然HBase中两个Cassandra中的节点都是对称的——这意味着客户端可以连接到集群中的任何节点——但这种对称并不完全。Cassandra要求您将一些节点标识为种子节点,作为集群间通信的集中点。同时,在HBase上,必须让一些节点成为主节点,主节点的任务是监控和协调区域服务器的动作。因此,Cassandra通过允许集群中有多个种子节点来保证高可用性,而HBase通过备用主节点来保证高可用性——如果当前主节点失败,其中一个将成为新的主节点。

Cassandra使用八卦协议进行节点间通信,八卦服务与Cassandra软件集成。HBase依赖于Zookeeper——一个完全独立的分布式应用——来处理相应的任务。虽然HBase提供了一个Zookeeper安装,但没有什么可以阻止你使用一个已经存在的Zookeeper与HBase数据库集成。

虽然没有卡桑德拉也不HBase的支持实时交易,都提供一致性控制的某一水平。HBase的为您提供了强大的记录级(即,行级)的一致性。事实上,HBase的支持液位语义在每行的基础。此外,您还可以锁定在HBase的一排,虽然这是不鼓励,不只是因为它阻碍了并发性,而且还因为行锁将无法生存的区域分割操作。此外,HBase的具有“校验和放”操作,它提供了原子的“读 - 修改 - 写”语义的单个数据元素上。

DataStax OpsCenter中 - 包括在卡桑德拉的自由DataStax社区版 - 既提供集群监控和管理。这里一个数据库的架构进行检查。需要注意的是keyspaces可以编辑和列族添加或删除。

与此同时,尽管Cassandra被描述为具有“最终”一致性,但读写一致性都可以调优,不仅可以按级别调优,还可以在程度上调优。也就是说,您不仅可以配置在确认操作之前必须成功完成多少复制节点,还可以配置参与的复制节点是否跨越数据中心。2020欧洲杯预赛

此外,Cassandra还添加了轻量级事务。Cassandra的轻量级事务是一种“比较和设置”机制,与HBase的“检查和放置”功能大致相当;HBase还有一个“读取-检查-删除”操作,Cassandra没有对应的操作。最后,Cassandra的2.0版本增加了行级写隔离:如果一个客户端更新了一行中的多个列,那么其他客户端要么看不到任何更新,要么看不到所有更新。

在Cassandra和HBase中,主索引都是行键,但是数据存储在磁盘上,这样就使得列族成员之间保持着紧密的距离。因此,仔细计划列族的组织是很重要的。为了保持较高的查询性能,具有类似访问模式的列应该放在相同的列族中。Cassandra允许您在列值上创建额外的二级索引。这可以改进值具有高度重复的列中的数据访问,比如存储客户邮件地址的状态字段的列。HBase缺乏对二级索引的内置支持,但提供了许多提供二级索引功能的机制。这些在HBase的在线参考指南和HBase社区博客中都有描述。

如前所述,两个数据库都有用于发出数据操作命令的“命令行”外壳程序。HBase和Cassandra的shell都构建在JRuby shell上,所以您可以编写脚本,利用JRuby shell的所有资源与数据库提供的特定api交互。此外,Cassandra还根据SQL定义了CQL。CQL比HBase使用的查询语言要丰富得多,它可以直接在Cassandra的shell中执行。

事实上,Cassandra正在转向CQL作为数据库的主要编程接口,尽管Cassandra仍然支持Thrift API。(Thrift是独立于语言的,但是现在它被认为是一个遗留的API。)Cassandra文档列出了Java、c#和Python的驱动程序,所有这些都采用了CQL版本3。最后,Cassandra还可以使用JDBC驱动程序。它使用CQL代替SQL作为其数据定义和数据管理语言。

HBase的的原生的Java API提供了最丰富的功能给程序员,尽管HBase的还体育的语言无关节俭接口,以及一个RESTful Web服务接口。尽管HBase的数据操纵命令不一样丰富CQL,HBase的确实有一个“过滤器”功能,在会话的服务器端执行,提高了扫描(搜索)的吞吐量。

HBase还引入了“协同处理器”,它允许在HBase进程的上下文中执行用户代码。其结果与关系数据库中的触发器和存储过程大致相当。Cassandra目前还没有HBase的协同处理器。

Cassandra的文档明显优于HBase的年代,和良好的文档肯定变平的学习曲线。根据我的经验,建立一个发展卡桑德拉集群比建立一个HBase的集群简单。当然,这是用于开发和测试目的,唯一重要的。

HBase主节点在端口60010上托管一个Web接口。在这里,您可以浏览节点的执行历史、节点管理的表和主域中的区域服务器等信息。

赢得列真正的工作出现在必须针对特定应用程序调优集群时。考虑到所涉及的数据集的大小以及构建和管理多节点集群(通常跨越多个数据中心)的复杂性,调优并不容易。2020欧洲杯预赛它要求对集群的内存缓存、磁盘存储和节点间通信的相互作用有深入的理解,并且需要仔细监视集群行为。

这是真的,HBase的对动物园管理员的依赖 - 独立的应用程序 - 介绍额外增加一个故障点(和故障排除问题的根源服务员困难)是卡桑德拉避免。但它不是调谐卡桑德拉集群幅度那么困难的订单情况。最后,比较两个数据库的集群调整的辛苦,它可能是一个洗。

这意味着,一如既往,没有明确的赢家或输家。您将发现这两个数据库的狂热爱好者,并且每个阵营都将提供令人信服的证据来证明其系统的优越性。和往常一样,您将面临对每种工具进行测试并针对目标应用程序进行基准测试的繁琐工作。但是考虑到这些技术的范围,还有其他的方法吗?

  • 对称的架构使得创建和扩展大型集群相对容易
  • 类似sql的Cassandra查询语言简化了开发人员从RDBMS的转换
  • 允许您调整性能或一致或两者的平衡
  • 管理GUI的社区版可用
  • 良好的文档(由Datastax提供)
  • 内置版本控制
  • 在记录水平上的强烈一致性
  • 通过协处理器提供类似rdbms的触发器和存储过程
  • 基于可靠的Hadoop技术
  • 积极开发社区
  • 配置是复杂的
  • 当前的触发/存储过程机构实验
  • 管理GUI难以启动和运行
  • 缺乏友好的、类似sql的查询语言
  • 很多活动部件
  • 在单节点开发集群之外进行设置可能会很困难

,

本文, ”大数据对决:Cassandra vs. HBase”最初发表于InfoWorld.com。关注最新的发展应用程序开发数据管理云计算,开源在InfoWorld.com。有关最新的业务技术新闻,请在Twitter上InfoWorld.com

阅读更多关于大数据的文章在InfoWorld的大数据频道。

这个故事,“大数据摊牌:Cassandra vs. HBase”最初发表于InfoWorld的

加入网络世界社区足球竞猜app软件脸谱网LinkedIn对最重要的话题发表评论。

版权所有©2014足球竞彩网下载

工资调查:结果是