选择正确的工具

q9yhzks0  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(353)

我目前正在研究如何存储和分析每行多达1000列的丰富的基于时间的数据。目前,cassandra和datastax enterprise提供的solr、hadoop或spark似乎基本上满足了我的要求。但关键在于细节。
在1000列中,大约60列用于实时查询(web前端,用户发送表单并期望快速响应)。这些查询或多或少都是groupby语句,在这些语句中计算出现的次数。
由于cassandra本身没有提供所需的分析能力(没有groupby),我只能选择以下几种方法:
通过cassandra粗略查询并在自编代码中过滤结果集
使用solr索引数据并运行facet.pivot查询
使用hadoop或spark并运行查询
第一种方法看起来很麻烦,而且容易出错…solr确实有一些分析功能,但是没有多字段分组,我只能用支点。我不知道这是否是一个好的或性能的方法,虽然…最后但并非最不重要的是有hadoop和spark,以前已知的不是最好的实时查询,后来相当新,可能还没有生产准备好。
那该走哪条路呢?这里没有一刀切的办法,但在我通过一个方法之前,我想得到一些反馈。可能是我的想法太复杂了,或者我的期望太高了
提前谢谢,
阿曼

7tofc5zh

7tofc5zh1#

在我现在工作的地方,我们有一套类似的技术要求,解决方案是CassandraSolrSpark,正是按照这个顺序。
因此,如果一个查询可以被cassandra索引“覆盖”——好的,如果不能——它就被solr覆盖了。对于测试&不太常见的查询-spark(scala,由于它的旧版本,没有sparksql——它是一个银行,从cognac到软件,一切都应该经过测试和成熟)。
总的来说,我同意这个解决方案,尽管有时我觉得有些客户的请求根本不应该被认真对待,这样我们就不会有太多奇怪的问题:)

woobm2wo

woobm2wo2#

我推荐spark,如果你在使用它的公司名单上抢走一笔,你会看到亚马逊、ebay和雅虎等名字!。另外,正如您在评论中所指出的,它正在成为一个成熟的工具。
您已经给出了反对cassandra和solr的论点,所以我将重点解释为什么hadoopmapreduce在实时查询方面不如spark。
hadoop和mapreduce是在假设大数据的io可以忽略不计的情况下,设计用来利用硬盘的。结果,在map阶段和reduce阶段,数据至少被读写两次。这允许您从失败中恢复,因为部分结果是安全的,但这并不是您在瞄准实时查询时想要的。
spark的目标不仅仅是修复mapreduce的缺点,它还专注于交互式数据分析,这正是您想要的。这一目标主要是利用ram实现的,其结果是惊人的。spark作业的速度通常是mapreduce同类作业的10-100倍。
唯一要注意的是你的记忆量。最有可能的是,您的数据可能会在您可以提供或依赖于采样的ram中发生变化。通常,当以交互方式处理数据时,实际上不需要使用mapreduce,在您的情况下似乎是这样。

相关问题