gpt4 book ai didi

hadoop - 海量数据导出noSQL选型建议

转载 作者:可可西里 更新时间:2023-11-01 15:27:47 26 4
gpt4 key购买 nike

我们有数十亿条使用关系数据格式(例如交易 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、动态聚合和原始数据(百万)是此处的需求考虑因素。

最佳答案

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

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

我看到有两个问题 -

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

- 数据处理-

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

- 存储 -

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

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

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

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

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

关于hadoop - 海量数据导出noSQL选型建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com