大数据应用的推荐设置

Recommended Setup for BigData Application

我目前正在进行一个需要支持的长期项目:

分析引擎的性能不受来自 API 调用的 Reads/Writes 量的影响至关重要。

因此,我认为我可能必须使用 "front-end" 数据库和某种 "back-end" 数据仓库。我还需要像 Elastic Search 或 Solr 这样的东西来索引存储在数据仓库中的数据。

问题:

  1. 这是推荐的设置吗?替代方案是什么?

如果是...

  1. 我正在考虑将 Hive 或 Pig 作为数据仓库,将 Elastic Search 或 Solr 作为搜索引擎。哪种组合在一起效果更好?

最后...

  1. 我正在认真考虑将 Cassandra 作为 "fron-end" 数据库。 Cassandra 和 Hadoop 之间的关系是什么,when/why 是否应该让它们一起工作而不是只有 Cassandra?

请注意,我的目的不是要开始争论哪一个更好,而是要了解如何才能更有效地更好地工作。如果它使有什么区别,主要代码是用 Scala 和 Java.

编写的

非常感谢您的帮助。我基本上是边学边学,所有评论都会很有帮助。

谢谢。

先说说Cassandra

这是一个具有最终一致性的 NoSQL 数据库,这对您来说基本上意味着在存在集群间 communication/availability 问题的情况下,Cassandra 集群中的不同节点可能具有不同的 'snapshots' 数据.然而,数据最终将是一致的。

既然您将其视为 'frontend' 数据库,那么您需要了解的是如何为数据建模。 Cassandra 可以利用索引,但是您仍然需要预先定义您的访问模式。

通常情况下,Cassandra 和 Hadoop 之间没有任何关系(除非两者都是用 Java 编写的)但是 Datastax 发行版(企业版)直接从 Cassandra 获得 Hadoop 支持。

作为一般工作流程,您将从您的 'small' 数据库中 read/write 最新数据(假设 - 过去 24 小时),以获得足够的性能(Cassandra 对其提供出色的支持)并且您将移动任何早于 X(早于 24 小时)到 'long term storage' 的东西,例如 Hadoop,在那里你可以 运行 各种 Map Reduce 等

关于文本搜索,它实际上取决于您的需要 - Elastic Search 是 Solr 和反向的竞争。你可以在这里看到他们的比较 http://solr-vs-elasticsearch.com/

关于你的第三个问题,

我觉得Cassandra更像是一个保存数据的数据库

Hadoop 负责提供一个计算模型让你分析你的大数据 卡桑德拉。 所以把Cassandra和Hadoop结合起来很有帮助。

还有其他方式可以考虑,比如结合mongo和hadoop, 因为 mongo 支持 mongo-hadoop 和它的数据之间的连接器。

另外如果你有一些搜索需求,你也可以使用solr,直接从mongo生成索引。