Hadoop / Cassandra - 如何存储和分析来自数千个传感器的数据?

时间:2016-08-24 09:20:57

标签: hadoop cassandra data-modeling sensor

我对“大数据”技术很新,特别是Cassandra,所以我需要你的建议来完成我必须完成的任务。我一直在寻找有关处理时间序列的Datastax示例,以及有关此主题的不同讨论,但如果您认为我可能错过了某些内容,请随时告诉我。 这是我的问题。

我需要存储和分析来自我们正在测试的大约100个传感器站的数据。在每个传感器站,我们有几千个传感器。因此,对于每个站,我们运行多个测试(大约10个,每个测试持续大约2小时30分钟),在此期间传感器每毫秒记录信息(可以是布尔,整数或浮点数)。每次测试的记录在测试期间保存在测试台上,然后在测试完成后发送给我。这意味着每个测试大约10 GB(每个参数大约是1 MB的信息)。

这是一个用于说明层次结构的模式: Hierarchy description

现在,我可以使用Spark和Cassandra访问一个小型Hadoop集群进行测试。我可以安装其他工具,但我真的很感激能继续使用Spark / Cassandra。

我的问题是:什么是最好的数据模型,用于存储然后分析来自这些传感器的信息?

通过“分析”,我的意思是:

  • 找到特定传感器在特定电台上记录的特定参数的最小值,最大值,平均值;或找到特定参数的值,但是对于所有站点;或找到特定参数的那些值,但是当同一站的其他参数(一个或两个)高于限制时

  • 绘制一个或多个参数的演变,以便直观地比较它们(不同站点上的相同参数,或同一站点上的不同参数)

  • 在参数或工作站之间进行一些相关性分析(例如,查找传感器是否工作)。

我在考虑将所有信息放在带有以下数据模型的Cassandra表中:

CREATE TABLE data_stations (
station text,           // station ID
test int,               // test ID
parameter text,         // name of recorded parameter/sensor
tps timestamp,          // timestamp
val float,              // measured value
PRIMARY KEY ((station, test, parameter), tps)
);

但是,我不知道一个表是否能够处理所有数据:根据先前的数据模型,快速计算得到10 ^ 14个不同的行(100个站点x 10个测试x 10 000个参数x 9,000,000ms (2h30毫秒)〜= 10 ^ 14),即使每个分区“仅”9,000,000行。

其他想法是将数据拆分到不同的表中(例如,每个站一个表,或每个站每个测试一个表等)。我不知道选择什么以及如何选择,所以欢迎任何建议!

非常感谢您的时间和帮助,如果您需要更多信息或详细信息,我很乐意告诉您更多信息。

Piar

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上,Cassandra可以处理这些数据。您可以存储列系列所需的所有数据,并使用 Apache Spark 而不是 Cassandra 来执行所需的聚合。

我认为Apache Spark适用于您的用例,因为它可用于聚合和计算相关性。

您也可以查看Apache Hive,因为它可以直接(通过外部表格)对HDFS中的数据进行工作/查询。

检查这些:

Cassandra - Max. size of wide rows?

Limitations of Cassandra