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

Hadoop/Cassandra - how to store and analyse data from thousands of sensors?

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

我需要存储和分析来自我们正在测试的大约 100 个传感器站的数据。在每个传感器站中,我们都有数千个传感器。因此,对于每个站,我们 运行 进行了几次测试(大约 10 次,每次持续约 2 小时 30 秒),在此期间传感器每毫秒记录一次信息(可以是布尔值、整数或浮点数)。每次考试的记录在考试期间都保存在站台上,考试结束后发给我。即每次测试约10GB(每个参数约1MB的信息)。

以下是说明层次结构的架构: Hierarchy description

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

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

“分析”是指:

我正在考虑将所有信息放入具有以下数据模型的 Cassandra Table:

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)
);

但是,我不知道 table 是否能够处理所有数据:根据先前的数据模型(100 个站点 x 10 个测试 x 10 000 个参数 x 9,000,000 毫秒(2h30 毫秒)~= 10^14),即使每个分区“只有”9,000,000 行。

其他想法是将数据拆分为不同的 table(例如,每个站点一个 table,或者每个站点每个测试一个 table,等等)。不知道怎么选,欢迎大家指教!

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

皮尔

你走对了,Cassandra可以处理这样的数据。您可以将所需的所有数据存储在列族中,并使用 Apache Spark 而不是 Cassandra 来执行所需的聚合。

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

您还可以查看 Apache Hive,因为它可以 work/query 直接(通过外部表)处理 HDFS 中的数据。

检查这些:

Limitations of Cassandra