Hive Lambda体系结构建模问题

Hive Lambda体系结构建模问题,hive,hdfs,apache-storm,lambda-architecture,Hive,Hdfs,Apache Storm,Lambda Architecture,我正在考虑实现Lambda体系结构,以便处理由多个设备传输的事件。 在大多数情况下(平均值等),它似乎符合我的要求。然而,我一直在尝试对一个特定的用例建模。简言之 每个设备都有一个设备id。每个设备每秒发出1个事件。每个事件都有一个事件id范围为{0-->10} 事件id为0表示开始,事件id为10表示结束 开始和结束之间的所有事件应分组为一个组(事件组)。 这将生成事件组的元组,即{0,2,2,2,5,10},(0,4,2,7,…5,10),(0,10) 该(事件组)可能很小,即10分钟或非常

我正在考虑实现Lambda体系结构,以便处理由多个设备传输的事件。 在大多数情况下(平均值等),它似乎符合我的要求。然而,我一直在尝试对一个特定的用例建模。简言之

每个设备都有一个设备id。每个设备每秒发出1个事件。每个事件都有一个事件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

在流式处理中,我按设备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体系结构是否适合此场景?还是流媒体过程应该是真相的唯一来源?例如,写入hbase,hdfs本身不会影响整体延迟。

据我所知,您的流程没有任何问题,因为Lambda Architecure的原则是以批处理模式定期重新处理所有数据。 (顺便说一句,不是所有的数据,而是一个时间范围,通常比速度层窗口大)

如果为批处理模式选择一个足够大的时间窗口(假设聚合窗口+3小时,以便包含最长的事件组),那么map reduce程序将能够为所需的聚合窗口计算所有事件组,无论存储的是什么文件(Hadoop shuffle magic!)


基础文件不是问题的一部分,但用于选择要处理的数据的时间窗口是。

您好,想知道您选择的方法。