gpt4 book ai didi

nosql - 实时查询/聚合数百万条记录 - hadoop?数据库? Cassandra ?

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

我有一个可以并行化的解决方案,但我(还)没有使用 hadoop/nosql 的经验,而且我不确定哪个解决方案最适合我的需求。理论上,如果我有无限的 CPU,我的结果应该会立即返回。因此,任何帮助将不胜感激。谢谢!

这是我所拥有的:

  • 1000 多个数据集
  • 数据集键:
    • 所有数据集都有相同的键
    • 100 万个 key (以后可能是 10 或 2000 万个)
  • 数据集列:
    • 每个数据集都有相同的列
    • 10 到 20 列
    • 大多数列是我们需要聚合的数值(avg、stddev,并使用 R 来计算统计数据)
    • 有几列是“type_id”列,因为在特定查询中我们可能只想包含某些 type_ids
  • 网络应用程序
    • 用户可以选择他们感兴趣的数据集(15 到 1000 之间的任何一个)
    • 应用程序需要呈现:key,以及每列的聚合结果(avg,stddev)
  • 数据更新:
    • 可以添加、删除或替换/更新整个数据集
    • 能够添加列会很棒。但是,如果需要,可以只替换整个数据集。
    • 从不向数据集添加行/键 - 因此不需要具有大量快速写入的系统
  • 基础设施:
    • 目前有两台机器,每台 24 核
    • 最终,希望能够在亚马逊上运行它

我无法预先计算聚合值,但由于每个键都是独立的,因此应该可以轻松扩展。目前,我在 postgres 数据库中有这些数据,其中每个数据集都在其自己的分区中。

  • 分区很好,因为可以轻松添加/删除/替换分区
  • 数据库非常适合根据 type_id 进行过滤
  • 数据库不容易编写并行查询
  • 数据库适合结构化数据,而我的数据不是结构化的

作为概念证明,我试用了 hadoop:

  • 为特定 type_id 的每个数据集创建一个制表符分隔文件
  • 上传到hdfs
  • map:为每个键检索一个值/列
  • reduce:计算平均值和标准差

从我粗略的概念验证中,我可以看到这会很好地扩展,但我可以看到 hadoop/hdfs 有延迟我读过它通常不用于实时查询(即使我没问题并在 5 秒内将结果返回给用户)。

关于我应该如何处理这个问题有什么建议吗?我正在考虑接下来尝试使用 HBase 来感受一下。我应该看看 Hive 吗? Cassandra ?伏地魔?

谢谢!

最佳答案

Hive 或 Pig 似乎不会帮助您。基本上它们中的每一个都会编译成一个或多个 map/reduce 作业,因此响应不能在 5 秒内

HBase 可能会起作用,尽管您的基础架构对于最佳性能来说有点小。我不明白为什么您不能预先计算每列的汇总统计信息。您应该查看计算运行平均值,这样您就不必进行大量减重。

查看 http://en.wikipedia.org/wiki/Standard_deviation

stddev(X) = sqrt(E[X^2]- (E[X])^2)

这意味着您可以通过以下方式获得 AB 的 stddev

平方(E[AB^2]-(E[AB])^2)。 E[AB^2] 是 (sum(A^2) + sum(B^2))/(|A|+|B|)

关于nosql - 实时查询/聚合数百万条记录 - hadoop?数据库? Cassandra ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833892/

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