我有实时时间序列传感器数据。我的主要目标是保留原始数据。我应该这样做,以便存储成本最小。
我的情景是这样的;
所有传感器都会生成时间序列数据,我必须保存这些原始时间序列数据以进行批量分析。镶木地板格式非常适合降低存储成本。但是,如果每个传入的时间序列数据都写成镶木地板格式,这是否有意义?
另一方面,我想实时处理每个传入的时间序列数据。对于实时场景;我可以用卡夫卡。但是,Hbase或Cassandra可以用于批量和实时分析而不是Kafka吗?
如果我使用Cassandra,我该如何进行批量分析?
但是,Hbase或Cassandra可以用于批量和实时分析而不是Kafka吗?
把卡夫卡想象成这些商店的管道。它不是替代使用“而不是”。 HBase和Cassnadras是商店,您需要从中批量处理数据......您可以在这些系统之前使用Kafka Streams(或Spark,Flink或我个人最喜欢的NiFi)进行实际(近乎)实时处理。
我建议使用Kafka,而不是将点对点指标纳入Hadoop(或相关工具)。我还鼓励使用像CrateDB或InfluxDB这样的数据...你可以使用Kafka来摄取Hadoop和其他更好地调整以存储这些数据集的工具(这是“缓冲”数据的好处卡夫卡第一)
如果每个传入的时间序列数据都写成镶木地板格式,这是否有意义?
当然。如果要存储大量数据以进行大批量分析。但是,例如,如果您按小时数据点窗口,并执行总和和平均值,那么您真的需要存储每个数据点吗?
如果我使用Cassandra,我该如何进行批量分析?
好吧,我希望你现在以同样的方式做到这一点。为数据库安排查询?希望所有的数据都存在? (没有迟到的记录)
我有实时时间序列传感器数据。我的主要目标是保留原始数据。我应该这样做,以便存储成本最小。
如果您的要求是存储原始数据,您可以将它们写入hdfs压缩形式。在这里使用镶木地板格式可能不可行。格式可以改变。如果您在kafka中有传入数据,则可以使用kafka connect从主题批量写入hdfs。
所有传感器都会生成时间序列数据,我必须保存这些原始时间序列数据以进行批量分析。镶木地板格式非常适合降低存储成本。但是,如果每个传入的时间序列数据都写成镶木地板格式,这是否有意义?
不确定我是否理解正确,但将每个数据点存储在单独的镶木地板文件中没有任何意义。
另一方面,我想实时处理每个传入的时间序列数据。对于实时场景;我可以用卡夫卡。但是,Hbase或Cassandra可以用于批量和实时分析而不是Kafka吗?
根据您的使用情况,批处理可能很容易在原始数据上使用hive或spark sql。也许kafka-streams处理器足以满足您的实时需求。
这么多选择。这一切都取决于用例......