海量数据导出nosql选择建议

gopyfrb3  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(411)

我们有数以十亿计的记录格式与关系数据格式(如交易id,用户名,用户id和其他一些领域),我的要求是建立一个系统,用户可以要求从这个数据存储数据导出(用户将提供一些过滤器,如用户id,日期等),根据选定的过滤器,导出的文件通常会有上千到100或上千到数百万条记录(输出文件将是csv或类似格式)
除了原始数据之外,我还希望在数据导出过程中对一些字段进行动态聚合。
用户提交请求和导出可用数据文件之间的典型时间应在2-3分钟内(最多4-5分钟)。
我正在为这个用例寻求关于后端nosqls的建议,到目前为止,我已经使用了hadoop map reduce,但是hadoop批处理作业执行典型的hdfs data map reduce在我看来可能不会给出预期的sla。
另一个选择是使用我从未使用过的spark map reduce,但它应该比典型的hadoop map reduce批处理作业快得多。
我们已经尝试了生产级rdbms/oltp示例,但由于我们导出的数据的大小和动态聚合,它显然不是一个正确的选择。
关于在这里使用spark有什么建议吗?或者其他更好的nosql?
总之,sla、动态聚合和原始数据(数百万)是这里的需求考虑因素。

enyaitl3

enyaitl31#

若系统只需要在完成一些etl聚合、过滤和转换之后导出数据,那个么答案非常简单。apache spark是最好的。您必须对系统进行微调,并决定是只使用内存还是内存+磁盘或序列化等。。然而,大多数时候一个人也需要考虑其他方面;我也在考虑。
这是一个广泛的讨论主题,它涉及到许多方面,如所涉及的聚合、与搜索相关的查询(如果有的话)、开发时间。根据描述,它似乎是一个交互式/近实时交互式系统。另一方面是是否涉及任何分析?另一个要点是系统的类型(oltp/olap、仅报告等)。
我知道有两个问题-
使用哪种计算/数据处理引擎?
哪个数据存储/nosql?
-数据处理-
apachespark将是计算的最佳选择。为了同样的目的,除了过滤之外,我们还需要执行xml转换,这些转换也是在spark中完成的。与hadoopmapreduce相比,它的速度非常快。spark可以独立运行,也可以在hadoop上运行。
-储存-
有许多nosql解决方案可用。选择取决于许多因素,如数量、所涉及的聚合、与搜索相关的查询等。。
hadoop—您可以将hadoop与hdfs一起用作存储系统。当你拥有整个hadoop生态系统时,它有很多好处。如果你有需要了解数据/玩数据的分析师/数据科学家,那么这将是一个更好的选择,因为你会得到不同的工具,比如hive/impala。而且,资源管理也很容易。但对于某些应用程序来说,它可能太多了。
cassendra—cassandra作为一个存储引擎,在保持规模和性能的同时解决了分发和可用性问题。它与Spark一起使用会带来奇迹。例如,执行复杂的聚合。顺便说一下,我们正在使用它。对于可视化(查看数据进行分析),选项有apachezeppelin、tableau(很多选项)
ElasticSearch-ElasticSearch也是一个合适的选择,如果你的存储是在几个TB到10 TB。它附带了kibana(ui),它提供了有限的分析功能,包括聚合。开发时间很短,实现起来很快。
因此,根据您的需求,我建议使用apachespark进行数据处理(转换/过滤/聚合),您可能还需要考虑其他存储和数据可视化技术。

相关问题