【问题标题】:Suggestions for noSQL selection for mass data export海量数据导出的noSQL选择建议
【发布时间】:2016-12-21 07:54:59
【问题描述】:

我们有数十亿条用关系数据格式格式化的记录(例如事务 id、用户名、用户 id 和其他一些字段),我的要求是创建用户可以从该数据存储请求数据导出的系统(用户将提供一些过滤器,如用户 ID、日期等),通常导出的文件将根据所选过滤器包含数千到数万到数百万条记录(输出文件将是 CSV 或类似格式)

除了原始数据,我还在数据导出期间寻找一些字段的动态聚合。

用户提交请求和导出数据文件可用之间的典型时间应在 2-3 分钟内(最长可以为 4-5 分钟)。

我正在为这个用例寻求关于后端 noSQL 的建议,到目前为止,我一直在使用 Hadoop map-reduce,但在我看来,使用典型 HDFS 数据 map-reduce 执行 hadoop 批处理作业可能无法提供预期的 SLA。

另一种选择是使用我从未使用过的 Spark map-reduce,但它应该比典型的 Hadoop map-reduce 批处理作业快得多。

我们已经尝试过生产级 RDBMS/OLTP 实例,但由于我们要导出的数据大小和动态聚合,这显然不是一个正确的选择。

关于在这里使用 Spark 有什么建议吗?还是其他更好的 noSQL?

总结 SLA,动态聚合和原始数据(百万)是这里的需求考虑因素。

【问题讨论】:

    标签: hadoop apache-spark nosql


    【解决方案1】:

    如果系统只需要在执行一些 ETL 后导出数据 - 聚合、过滤和转换,那么答案非常简单。 Apache Spark 是最好的。您必须对系统进行微调并决定是仅使用内存还是内存+磁盘或序列化等。但是,大多数时候还需要考虑其他方面;我也在考虑。

    这是一个广泛的讨论主题,它涉及许多方面,例如所涉及的聚合、搜索相关查询(如果有)、开发时间。根据描述,它似乎是一个交互式/近实时交互式系统。另一个方面是是否涉及任何分析?另一个重点是系统类型(OLTP/OLAP,仅报告等)。

    我看到有两个问题 -

    1. 使用哪种计算/数据处理引擎?
    2. 哪种数据存储/NoSQL?

    - 数据处理-

    Apache Spark 将是计算的最佳选择。我们出于相同的目的使用,除了过滤之外,我们还需要执行 xml 转换,这些转换也在 Spark 中完成。与 Hadoop MapReduce 相比,它的速度超快。 Spark 可以独立运行,也可以在 Hadoop 之上运行。

    - 存储-

    有许多可用的 noSQL 解决方案。选择取决于许多因素,例如数量、涉及的聚合、搜索相关查询等。

    • Hadoop - 您可以使用 Hadoop 和 HDFS 作为存储系统。当您获得整个 Hadoop 生态系统时,它有很多好处。如果您有分析师/数据科学家需要深入了解数据/使用数据,那么这将是一个更好的选择,因为您将获得不同的工具,例如 Hive/Impala。此外,资源管理也很容易。但对于某些应用程序来说,它可能太多了。

    • Cassandra - Cassandra 作为一种存储引擎,解决了分布和可用性问题,同时保持了规模和性能。当与 Spark 一起使用时,它会带来奇迹。例如,执行复杂的聚合。顺便说一句,我们正在使用它。对于可视化(查看数据进行分析),选项有 Apache Zeppelin、Tableau(很多选项)

    • Elastic Search - 如果您的存储空间只有几 TB 到 10 TB,那么 Elastic Search 也是一个合适的选择。它带有 Kibana (UI),它提供了有限的分析功能,包括聚合。开发时间最短,实施起来非常快。

    因此,根据您的要求,我建议使用 Apache Spark 进行数据处理(转换/过滤/聚合),您可能还需要考虑其他技术来进行存储和数据可视化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      相关资源
      最近更新 更多