首页 文章

对大数据架构的建议:mongodb spark

提问于
浏览
1

我需要实现一个大数据存储处理系统 .

数据每天都在增加(大约每天最多5000万行),数据符合大约10个字段(日期,数字,文本,ID)的非常简单的JSON文档 .

然后可以在线查询数据(如果可能),在文档的某些字段(日期范围查询,ID等)上进行任意分组 .

我正在考虑使用MongoDB集群存储所有这些数据并为我需要查询的字段构建索引,然后在apache Spark集群中处理数据(主要是简单的聚合排序) . 也许使用Spark-jobserver围绕它构建一个rest-api .

我担心mongoDB扩展的可能性(即存储10b行)和吞吐量(快速发送1b值的行以进行处理)或能够在如此大的数据库中维护索引 .

相比之下,我考虑使用cassandra或hbase,我认为它更适合存储大型数据集,但在查询中提供的性能较低,如果我提供在线查询,我最终需要这些性能 .

1 - mongodb spark是否为这种用例提供了经过验证的堆栈?

2 - mongodb(存储查询性能)可扩展性无界限?

提前致谢

2 回答

  • 7

    如前所述,有许多NoSQL解决方案可以满足您的需求 . 我可以推荐MongoDB与Spark *一起使用,特别是如果你有大型MongoDB集群的操作经验 .

    有一篇关于MongoDB的turning analytics into realtime queries的白皮书 . 或许更有趣的是Eastern Airlines关于他们使用MongoDB和Spark以及它如何为每天16亿次航班搜索提供支持的博客文章 .

    关于数据大小,然后在MongoDB中管理具有那么多数据的集群是很正常的 . 任何解决方案的性能部分都是快速向Spark发送1b文档进行处理 . 并行和利用数据局部性是关键 . 此外,您的Spark算法需要利用这种并行性 - 大量数据的耗费时间非常昂贵 .

    • 免责声明:我是MongoDB Spark Connector的作者,并为MongoDB工作 .
  • 0

    几乎任何NoSQL数据库都可以满足您存储数据时的需求 . 你是对的,MongoDB在查询数据方面提供了一些额外的Hbase和Cassandra . 但elasticsearch是高速存储和检索/查询数据(指标)的成熟解决方案 .

    以下是有关在Spark中使用elasticsearch的更多信息:

    https://www.elastic.co/guide/en/elasticsearch/hadoop/master/spark.html

    我实际上会使用完整的ELK堆栈 . 由于Kibana将允许您通过可视化功能(图表等)轻松浏览数据 .

    我打赌你已经有了Spark,所以我建议在同一台机器/集群上安装ELK堆栈,以测试它是否符合你的需求 .

相关问题