我们目前有一个写入量很大的网络分析应用程序,它从大量网站和商店收集大量实时事件,用于后续分析和报告。
我们最初计划的架构涉及处理请求的 Web 服务器集群,并将所有数据写入 Cassandra 集群,同时更新大量计数器以获取实时汇总报告。我们还计划在 CassandraFS 上直接使用 hadoop(作为 HDFS 的替代品 - 由 datastax 提供)在 Cassandra 中的数据上本地运行 Map Reduce 作业,以进行更多相关分析。MapR 作业的输出将被本地写回 Cassandra 中的 ColumnFamilies。Hadoop map reduce 运行在写繁重的主 cassandra 集群的只读副本上。这个想法是为了避免多个数据跳跃,并将所有用于分析的数据放在一个存储库中。
最近,我们听说并面临着管理和发展 cassandra 集群的第一手问题,该集群经常出现节点中断和糟糕的响应时间。Couchbase 在响应时间以及动态增长和管理集群方面似乎要好得多。所以我们正在考虑用 Couchbase 替换 Cassandra。
然而,这带来了一些问题。
Couchbase 在大多数顺序写入繁重的场景中是否可以很好地扩展?我没有看到我们的场景大量使用内存缓存,因为写入的原始数据很少被读回,只有聚合指标。另外,当 Couchbase 需要非常频繁地(或一直)写回数据时,我还没有读到太多关于会发生什么的信息。它最终会表现得比 Cassandra 差吗?
Hadoop 接口会发生什么?Couchbase 有自己的 map reduce 功能,但我知道它们的范围有限。我是否需要在 CouchbaseDB 和 HDFS 之间来回传输数据才能支持我在单个数据库中的所有分析和报告?