lambda体系结构建模问题

ccrfmcuu  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(239)

我正在考虑实现lambda体系结构,以便处理由多个设备传输的事件。在大多数情况下(平均值等),它似乎符合我的要求。然而,我一直在尝试建模一个特定的用例。总之。。。
每个设备都有一个设备id。每个设备每秒发出一个事件。每个事件都有一个范围为{0-->10}的事件标识。
事件id为0表示开始,事件id为10表示结束
开始和结束之间的所有事件应分组为一个组(事件组)。这将产生事件组的元组,即{0,2,2,2,5,10},(0,4,2,7,…5,10),(0,10)这个(事件组)可能很小,即10分钟或非常大,例如3小时。
根据lambda架构,每个设备传输的这些事件都是我的“主数据集”。目前,事件被发送到hdfs&storm使用Kafka(加缪,Kafka喷口)。
在流处理中,我按设备id分组,并使用redis在内存中维护一组传入事件,基于每次事件id=0到达时生成的密钥。问题在于hdfs。假设我每小时保存一个包含所有传入事件的文件。有没有办法区分这些(群体事件)?
使用hive,我可以用同样的方式对元组进行分组。但是,每个文件还将包含“断开的”事件组
(0,2,2,3)以前的计算(文件)
(4,3,)以前的计算(文件)
(5,6,7,8,10)电流计算(文件)
所以我需要根据设备id将它们合并到(0,2,2,3,4,3,5,6,7,8,10)(多个文件)
lambda架构是否适合此场景?还是流媒体过程应该是唯一的真相来源?i、 e.写入hbase,hdfs本身不会影响整体延迟。

j13ufse2

j13ufse21#

据我所知,您的流程没有任何问题,因为lambda架构的原则是在批处理模式下定期重新处理所有数据(顺便说一下,不是所有的数据,而是一个时间框架,通常比速度层窗口大)
如果为批处理模式选择足够大的时间窗口(假设聚合窗口+3小时,以便包括最长的事件组),那么map reduce程序将能够为所需的聚合窗口计算所有事件组,无论存储的是什么文件,distincts事件(hadoop shuffle magic!)
底层文件不是问题的一部分,但用于选择要处理的数据的时间窗口是。

相关问题