3

我正在评估具有以下要求的传感器数据收集系统,

  1. 100 万个端点每分钟发送 100 个字节的数据(作为时间序列)。
  2. 基本上数百万次对存储的小写入。

    This data is write-once, so basically it never gets updated.
    
  3. 访问要求
    a. 需要定期(不那么频繁)访问用户的完整数据
    b. 需要定期(更频繁地)访问用户的部分数据。例如,我需要在过去一小时/天/周/月收集的传感器数据用于分析/报告。

已开始将 Hive/HDFS 视为一种选择。有人可以评论 Hive 在这种用例中的适用性吗?我担心虽然分布式存储需求会起作用,但它似乎更适合数据仓库应用程序而不是实时数据收集/存储。

HBase/Cassandra 在这种情况下更有意义吗?

4

2 回答 2

6

我认为 HBase 对你来说是一个不错的选择。事实上,HBase 中已经有一个开源/源代码实现,可以解决您可能想要使用的类似问题。看看openTSB,它是一个用于解决类似问题的开源实现。这是他们的简介的简短摘录:

OpenTSDB 是一个分布式、可扩展的时序数据库(TSDB),写在 HBase 之上。OpenTSDB 的编写是为了解决一个共同的需求:存储、索引和服务从计算机系统(网络设备、操作系统、应用程序)大规模收集的指标,并使这些数据易于访问和图形化。由于 HBase 的可扩展性,OpenTSDB 允许您以高速率(每隔几秒)从数千个主机和应用程序收集数千个指标。OpenTSDB 永远不会删除或下采样数据,并且可以轻松存储数十亿个数据点。事实上,StumbleUpon 使用它来跟踪数十万个时间序列,并在其主要生产数据中心每天收集超过 6 亿个数据点。

于 2011-12-17T06:09:02.737 回答
4

实际上有不少人使用 Cassandra 以时间序列方式收集传感器数据。这是一个非常合适的。我建议你阅读这篇关于 Cassandra 基本时间序列的文章,以了解你的数据模型是什么样的。

Cassandra 中的写入非常便宜,因此即使是中等规模的集群也可以轻松处理每分钟一百万次写入。

您的两个阅读查询都可以得到非常有效的回答。对于第二种类型的查询,您正在为单个传感器读取一段时间的数据,您最终会从单行中读取连续的切片;完全冷读大约需要 10 毫秒。对于第一种类型的查询,您只需并行运行几个每个传感器的查询。假设您将用户的基本映射存储到传感器 ID,您将使用一个查询查找用户的所有传感器 ID,然后您的第二个查询将获取所有这些传感器的数据(尽管如果您可能会分解此查询,如果传感器的数量很多)。

当您谈论实时查询时,Hive 和 HDFS 并没有真正的意义,因为它们更适合长时间运行的批处理作业。

于 2011-12-17T03:43:06.093 回答