社交网络:Hadoop,HBase,Spark over MongoDB或Postgres?

A T*_*A T 7 postgresql hadoop bigdata mongodb apache-spark

我正在构建一个社交网络,包含各种功能,其中许多功能由大数据密集型工作负载(如机器学习)提供支持.例如:推荐系统,搜索引擎和时序序列匹配器.

鉴于我目前有5个<用户 - 但有意义的显着增长 - 我应该使用哪些指标来决定:

  • Spark(有/没有HBase over Hadoop)
  • MongoDB或Postgres

将Postgres看作是减少它与Spark之间移植压力的一种手段(使用一个适用于它们的SQL抽象层).Spark似乎很有趣,可以想象它可以快速回答各种ML,SQL和Graph问题.MongoDB是我通常使用的,但我发现它的缩放和map-reduce功能非常有限.

Pau*_* H. 5

我认为您正朝着寻找软件堆栈/架构的正确方向:

  • 处理不同类型的负载:批量,实时计算等
  • 规模和速度的规模以及业务增长
  • 是一个实时软件堆栈,维护和支持良好
  • 为域特定计算提供通用库支持,例如机器学习等.

为了这些优点,Hadoop + Spark可以为您提供所需的优势.Hadoop目前相对成熟,以批量方式处理大规模数据.它支持可靠和可扩展的存储(HDFS)和计算(Mapreduce/Yarn).通过添加Spark,您可以利用Spark添加的存储(HDFS)和实时计算(性能).

在开发方面,Java/Scala本身支持这两个系统.这些库的支持,性能调优在stackoverflow和其他地方都很丰富.至少有一些机器学习库(Mahout,Mlib)使用hadoop,spark.

对于部署,AWS和其他云提供商可以为hadoop/spark提供主机解决方案.也不是问题.


tgp*_*fer 1

我想你应该将数据存储和数据处理分开。特别是“Spark 还是 MongoDB?” 不是一个好问题,而是“Spark、Hadoop 还是 Storm?” 还有“MongoDB、Postgres 还是 HDFS?”

无论如何,我都会避免让数据库进行处理。