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

Hadoop/Cassandra-如何存储和分析来自数千个传感器的数据?,hadoop,cassandra,data-modeling,sensors,Hadoop,Cassandra,Data Modeling,Sensors,我对“大数据”技术非常陌生,尤其是卡桑德拉,所以我需要你的建议来完成我的任务。我一直在寻找有关处理timeseries的示例,以及关于此主题的不同讨论,但如果您认为我可能遗漏了什么,请随时告诉我。 这是我的问题 我需要存储和分析来自我们正在测试的大约100个传感器站的数据。在每个传感器站,我们有几千个传感器。因此,对于每个站点,我们运行几个测试(大约10个,每个测试持续约2h30),在此期间,传感器每毫秒记录一次信息(可以是布尔值、整数或浮点值)。测试期间,每个测试的记录都保存在工作站上,测试完

我对“大数据”技术非常陌生,尤其是卡桑德拉,所以我需要你的建议来完成我的任务。我一直在寻找有关处理timeseries的示例,以及关于此主题的不同讨论,但如果您认为我可能遗漏了什么,请随时告诉我。 这是我的问题

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

下面是一个模式来说明层次结构:

现在,我可以访问带有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)
);
但是,我不知道一个表是否能够处理所有数据:根据之前的数据模型(100个站点x 10个测试x 10000个参数x 9000000毫秒(2h30毫秒)~=10^14),即使每个分区“只有”9000000行,快速计算也会给出10^14个不同的行

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

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


皮亚尔

你的思路是正确的,卡桑德拉可以处理这些数据。您可以将所有需要的数据存储在列族中,并使用apachespark覆盖Cassandra进行所需的聚合

我觉得ApacheSpark适合您的用例,因为它可以用于聚合和计算相关性

您也可以签出,因为它可以直接(通过外部表)处理/查询HDFS中的数据

检查以下各项:


谢谢您的快速回答。我很高兴听到Spark和Cassandra是解决我问题的好选择!我已经检查了你发送的链接,它确实很有趣。然而,“每个分区20亿个单元”的限制是否意味着只要我的分区少于20亿个单元,我就可以在同一个表中放置任意数量的数据,而不受任何限制?在这种情况下,我可以使用我在第一条信息中给出的第一个数据模型,这也是你的感受吗?再次感谢你的回答!是的,您可以将不同分区中的所有数据(每个分区少于20亿个单元格)放入表/列族中。但是一定要记住所有的好,谢谢你的精确性和链接。这真的很有用,那我就试试吧!