大数据应用的推荐设置
Recommended Setup for BigData Application
我目前正在进行一个需要支持的长期项目:
- 通过 RESTful 服务
进行大量快速 Read/Write 操作
- 分析引擎不断读取和理解数据
分析引擎的性能不受来自 API 调用的 Reads/Writes 量的影响至关重要。
因此,我认为我可能必须使用 "front-end" 数据库和某种 "back-end" 数据仓库。我还需要像 Elastic Search 或 Solr 这样的东西来索引存储在数据仓库中的数据。
问题:
- 这是推荐的设置吗?替代方案是什么?
如果是...
- 我正在考虑将 Hive 或 Pig 作为数据仓库,将 Elastic Search 或 Solr 作为搜索引擎。哪种组合在一起效果更好?
最后...
- 我正在认真考虑将 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生成索引。
我目前正在进行一个需要支持的长期项目:
- 通过 RESTful 服务 进行大量快速 Read/Write 操作
- 分析引擎不断读取和理解数据
分析引擎的性能不受来自 API 调用的 Reads/Writes 量的影响至关重要。
因此,我认为我可能必须使用 "front-end" 数据库和某种 "back-end" 数据仓库。我还需要像 Elastic Search 或 Solr 这样的东西来索引存储在数据仓库中的数据。
问题:
- 这是推荐的设置吗?替代方案是什么?
如果是...
- 我正在考虑将 Hive 或 Pig 作为数据仓库,将 Elastic Search 或 Solr 作为搜索引擎。哪种组合在一起效果更好?
最后...
- 我正在认真考虑将 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生成索引。