我正在评估具有以下要求的传感器数据采集系统,
基本上是对存储的数百万次小写。
This data is write-once, so basically it never gets updated.
已经开始将Hive / HDFS视为一种选择。有人可以评论Hive在这种用例中的适用性吗?我担心虽然分布式存储需求可行,但它似乎比实时数据收集/存储更适合数据仓库应用程序。
HBase / Cassandra在这种情况下更有意义吗?
答案 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真的没有意义,因为它们更适合长时间运行的批处理作业。