大数据架构建议:mongodb + spark
advice for big data architecture: mongodb + spark
我需要实现一个大数据存储+处理系统。
数据每天都在增加(大约最多 5000 万行/天),数据符合一个非常简单的 JSON 文档,大约有 10 个字段(日期、数字、文本、id)。
然后可以在线查询数据(如果可能的话)对文档的某些字段进行任意分组(日期范围查询、ID 等)。
我正在考虑使用 MongoDB 集群来存储所有这些数据并为我需要查询的字段构建索引,然后在 apache Spark 集群中处理数据(主要是简单的聚合+排序).也许使用 Spark-jobserver 围绕它构建一个 rest-api。
我担心 mongoDB 扩展可能性(即存储 10b+ 行)和吞吐量(快速发送 1b+ 行以进行处理)或在如此大的数据库中维护索引的能力。
相比之下,我考虑使用cassandra或hbase,我认为它们更适合存储大型数据集,但查询性能较低,如果我要提供在线查询,我最终需要这些。
1 - mongodb+spark 是适用于此类用例的经过验证的堆栈吗?
2 - mongodb(存储 + 查询性能)可扩展性是无限的吗?
提前致谢
几乎任何 NoSQL 数据库都可以满足您存储数据的需求。你是对的,MongoDB 在查询数据方面比 Hbase 和 Cassandra 提供了一些额外的功能。但是 elasticsearch 是一种经过验证的高速存储和 retrieval/querying 数据(指标)解决方案。
以下是有关将 elasticsearch 与 Spark 结合使用的更多信息:
https://www.elastic.co/guide/en/elasticsearch/hadoop/master/spark.html
我实际上会使用完整的 ELK 堆栈。由于 Kibana 将允许您使用可视化功能(图表等)轻松浏览数据。
我打赌你已经有 Spark,所以我建议在同一个 machine/cluster 上安装 ELK stack 来测试它是否适合你的需要。
如前所述,有许多 NoSQL 解决方案可以满足您的需求。我可以推荐 MongoDB 与 Spark* 一起使用,特别是如果您有大型 MongoDB 集群的操作经验。
关于 turning analytics into realtime queries from MongoDB. Perhaps more interesting is the blog post from Eastern Airlines 他们使用 MongoDB 和 Spark 以及它如何为他们每天 16 亿次航班搜索提供动力的白皮书。
关于数据大小,然后在 MongoDB 中管理具有那么多数据的集群是很正常的。任何解决方案的性能部分都是将 1b+ 文档快速发送到 Spark 进行处理。并行性和利用数据局部性是这里的关键。此外,您的 Spark 算法需要能够利用这种并行性 - 混洗大量数据非常耗时。
- 免责声明:我是 MongoDB Spark Connector 的作者并为 MongoDB 工作。
我需要实现一个大数据存储+处理系统。
数据每天都在增加(大约最多 5000 万行/天),数据符合一个非常简单的 JSON 文档,大约有 10 个字段(日期、数字、文本、id)。
然后可以在线查询数据(如果可能的话)对文档的某些字段进行任意分组(日期范围查询、ID 等)。
我正在考虑使用 MongoDB 集群来存储所有这些数据并为我需要查询的字段构建索引,然后在 apache Spark 集群中处理数据(主要是简单的聚合+排序).也许使用 Spark-jobserver 围绕它构建一个 rest-api。
我担心 mongoDB 扩展可能性(即存储 10b+ 行)和吞吐量(快速发送 1b+ 行以进行处理)或在如此大的数据库中维护索引的能力。
相比之下,我考虑使用cassandra或hbase,我认为它们更适合存储大型数据集,但查询性能较低,如果我要提供在线查询,我最终需要这些。
1 - mongodb+spark 是适用于此类用例的经过验证的堆栈吗?
2 - mongodb(存储 + 查询性能)可扩展性是无限的吗?
提前致谢
几乎任何 NoSQL 数据库都可以满足您存储数据的需求。你是对的,MongoDB 在查询数据方面比 Hbase 和 Cassandra 提供了一些额外的功能。但是 elasticsearch 是一种经过验证的高速存储和 retrieval/querying 数据(指标)解决方案。
以下是有关将 elasticsearch 与 Spark 结合使用的更多信息:
https://www.elastic.co/guide/en/elasticsearch/hadoop/master/spark.html
我实际上会使用完整的 ELK 堆栈。由于 Kibana 将允许您使用可视化功能(图表等)轻松浏览数据。
我打赌你已经有 Spark,所以我建议在同一个 machine/cluster 上安装 ELK stack 来测试它是否适合你的需要。
如前所述,有许多 NoSQL 解决方案可以满足您的需求。我可以推荐 MongoDB 与 Spark* 一起使用,特别是如果您有大型 MongoDB 集群的操作经验。
关于 turning analytics into realtime queries from MongoDB. Perhaps more interesting is the blog post from Eastern Airlines 他们使用 MongoDB 和 Spark 以及它如何为他们每天 16 亿次航班搜索提供动力的白皮书。
关于数据大小,然后在 MongoDB 中管理具有那么多数据的集群是很正常的。任何解决方案的性能部分都是将 1b+ 文档快速发送到 Spark 进行处理。并行性和利用数据局部性是这里的关键。此外,您的 Spark 算法需要能够利用这种并行性 - 混洗大量数据非常耗时。
- 免责声明:我是 MongoDB Spark Connector 的作者并为 MongoDB 工作。