HIVE / HDFS可以大规模实时存储传感器数据?

时间:2011-12-16 18:44:49

标签: cassandra hbase hive hdfs opentsdb

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

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

    This data is write-once, so basically it never gets updated.
    
  3. 访问要求
    一个。需要定期访问(不太频繁)用户的完整数据 湾用户的部分数据需要定期访问(更频繁)。例如,我需要在过去一小时/每天/每周/每月收集的传感器数据进行分析/报告。
  4. 已经开始将Hive / HDFS视为一种选择。有人可以评论Hive在这种用例中的适用性吗?我担心虽然分布式存储需求可行,但它似乎比实时数据收集/存储更适合数据仓库应用程序。

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

2 个答案:

答案 0 :(得分:6)

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

  

OpenTSDB是一个分布式,可扩展的时间序列数据库(TSDB)   写在HBase之上。编写OpenTSDB是为了解决一个常见问题   需求:存储,索引和提供从计算机系统收集的指标   (网络设备,操作系统,应用程序)大规模,和   使这些数据易于访问和潦草。感谢HBase的   可扩展性,OpenTSDB允许您收集数千个指标   来自成千上万的主机和应用程序,速度很快(每隔几个   秒)。 OpenTSDB永远不会删除或下采样数据,而且很容易   存储数十亿个数据点。事实上,StumbleUpon使用   它可以跟踪数十万个时间序列并收集   主要生产中每天有超过6亿个数据点   数据中心。

答案 1 :(得分:4)

实际上有很多人以Cassandra的时间序列方式收集传感器数据。这非常合适。我建议您阅读此article on basic time series in Cassandra,了解您的数据模型是什么样的。

Cassandra写的非常便宜,所以即使是中等大小的群集也可以轻松处理每分钟100万次写入。

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

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