小编ani*_*ish的帖子

实时查询/汇总数百万条记录 - hadoop?HBase的?卡桑德拉?

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

这就是我所拥有的:

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

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

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

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

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

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

关于如何处理这个问题的任何建议?我当时正考虑尝试HBase以获得感觉.我应该看看Hive吗?卡桑德拉?伏地魔?

谢谢!

hadoop hbase hive cassandra nosql

7
推荐指数
1
解决办法
7721
查看次数

标签 统计

cassandra ×1

hadoop ×1

hbase ×1

hive ×1

nosql ×1