簡體   English   中英

大數據架構建議: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與Spark *一起使用,特別是如果您具有大型MongoDB集群的操作經驗。

有一份白皮書,涉及將分析轉化為來自MongoDB的實時查詢 也許更有趣的是東方航空的博客文章,內容涉及它們對MongoDB和Spark的使用以及它們如何為每天16億次的航班搜索提供支持。

關於數據大小,然后在MongoDB中管理包含這么多數據的集群是很正常的。 任何解決方案的性能部分都將是快速將1b +文檔發送到Spark進行處理。 並行和利用數據局部性是關鍵。 同樣,您的Spark算法也需要充分利用並行性-將大量數據混排非常耗時。

  • 免責聲明:我是MongoDB Spark Connector的作者,並且為MongoDB工作。

存儲數據時,幾乎任何NoSQL數據庫都可以滿足您的需求。 您是對的,在查詢數據時,MongoDB提供了一些Hbase和Cassandra之外的功能。 但是Elasticsearch是用於高速存儲和數據(度量)的檢索/查詢的行之有效的解決方案。

這是有關將Elasticsearch與Spark結合使用的更多信息:

https://www.elastic.co/guide/zh-CN/elasticsearch/hadoop/master/spark.html

我實際上會使用完整的ELK堆棧。 由於Kibana將允許您使用可視化功能(圖表等)輕松瀏覽數據。

我敢打賭,您已經有了Spark,因此建議您將ELK堆棧安裝在同一台機器/群集上,以測試它是否適合您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM