hadoop - Cassandra 和 Couchbase 之间此用例的潜在权衡

标签 hadoop cassandra couchbase

我们目前有一个写入量非常大的网络分析应用程序,它从大量网站和商店收集大量实时事件,用于后续分析和报告。

我们最初计划的架构涉及一组网络服务器处理请求,并将所有数据写入 Cassandra 集群,同时更新大量计数器以获取实时聚合报告。我们还计划直接在 CassandraFS 上使用 hadoop(作为 HDFS 的替代品 - 由 datastax 提供)在 Cassandra 中驻留的数据上本地运行 Map Reduce 作业以进行更多相关分析。 MapR 作业的输出将被写回 Cassandra 中的 ColumnFamilies。 Hadoop map reduce 在写入密集型主 cassandra 集群的只读副本上运行。这个想法是为了避免多个数据跃点,并将所有用于分析的数据放在一个存储库中。

最近我们听说并遇到了​​管理和发展具有频繁节点中断和糟糕响应时间的 cassandra 集群的第一手问题。 Couchbase 似乎在响应时间以及动态增长和管理集群方面要好得多。所以我们正在考虑用 Couchbase 替换 Cassandra。

然而,这带来了一些问题。

  1. Couchbase 在主要是顺序写入的场景中是否可以很好地扩展?我没有看到我们的场景大量使用内存缓存,因为很少读回正在写入的原始数据,只有聚合指标。另外,当 Couchbase 需要非常频繁地(或一直?)访问磁盘以写回数据时,我还没有读到很多关于会发生什么的信息。它最终会比 Cassandra 表现差吗?

  2. Hadoop 界面发生了什么变化? Couchbase 有自己的 map reduce 功能,但我知道它们的范围有限。我是否需要在 CouchbaseDB 和 HDFS 之间来回传输数据,以便能够支持单个数据库的所有分析和报告?

最佳答案

我最近评估了 Cassandra 和 Couchbase 以及满足客户需求的其他选项,因此我可以对这两个数据存储有一些了解。

Couchbase 难以置信易于管理,一旦您在节点上安装了服务器,您就可以从仪表板完全管理集群。然而,随着数据量的增长,couchbase 的扩展性不如 Cassandra。我也没有找到将 Couchbase 和 HDFS/Hadoop 无缝集成的方法。

Cassandra 在超快速写入吞吐量方面表现非常出色,但它没有任何服务器端聚合功能。集群管理比 Couchbase 稍微困难一些,因为每次添加或删除节点时都必须重新平衡集群。除此之外,从性能的角度来看,只要您正确设计了架构,Cassandra 几乎可以无缝运行。

如果您负担得起 Hive 的 Datastax Enterprise 解决方案来为复杂的分析执行 map-reduce,我建议您继续使用 Cassandra,因为 couchbase map-reduce 支持并不是那么好,基准测试显示 Couchbase 性能开始下降随着簇大小的增长而恶化。

关于hadoop - Cassandra 和 Couchbase 之间此用例的潜在权衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18000652/

相关文章:

python - 当使用 hbase 作为数据源时,spark 是否利用 hbase 键的排序顺序

casting - 在Pig中将字段强制转换为Bag数据类型

spring - Spring Data Couchbase 使用 _class 字段做什么?

java - 如何在 Dropwizard 项目中使用 Couchbase Java 客户端?

ruby-on-rails - Ruby Rack App - Couchbase DNS/主机名查找错误

hadoop - 为什么 Hadoop 需要那么大的 RAM?

ant - 使用Ant在子目录中运行PigUnit

java - Cassandra 客户端 Java API

Cassandra 基于时间的查询

cassandra - 使用 CQLSH 查看 Cassandra 分区