大规模数据处理11:Kappa架构
Lambda架构结合了批处理和流处理的架构思想,将进入系统的大规模数据同时送入这两套架构层中,分别是批处理层Batch Layer和速度层Speed Layer,同时产生两套数据结果并存入服务层。
Lambda架构具有很好的灵活性,你可以将现有开源生态圈中不同的平台套入到这个架构中。
Lambda架构的不足: 表现在它的维护很复杂。使用Lambda架构时,架构时需要维护两个复杂的分布式系统,并且保证他们逻辑上产生相同的结果输出到服务层中。
在架构中加入批处理层是因为从批处理层得到的结果具有高准确性,而加入速度层是因为它在处理大规模数据时具有低延时性。
Kappa架构就是在改进批处理层系统,使其具有低延时性,改进速度层系统,使其数据视图具有准确性和更加接近历史数据的背景下产生的。
以Kafka为例,讲解Kappa架构:
1.部署Apache Kafka 并设置数据日志的保留期,这里的保留期指的是你希望能够重新处理的历史数据的时间区间
2.如果我们需要改进现有的逻辑算法,那就表示我们需要对历史数据进行重新处理。
我们需要做的就是重新启动一个Kafka作业实例,这个作业实例将重头开始,重新计算保留好的历史数据,并将结果输出到一个新的数据视图中,我们知道kafka的底层使用Log Offset来判断现在已经处理到的哪个数据块了,所以只需要将Log offset设置为0,新的作业实例就会重头开始处理历史数据。
3.当这个新的数据视图处理过的数据进度赶上了旧的数据视图时,我们的应用便可以切换到从新的数据视图中读取。
4.停止旧版本的作业实例,并删除旧的数据视图
因为Kappa架构只保留了速度层而缺少批处理层,在速度层上处理大规模数据可能会有数据更新出错的情况发生,这就需要我们花费更多的时间在处理这些错误异常上面。Kappa架构并不适合于批处理和流处理代码逻辑不一致的场景。


雷达卡




京公网安备 11010802022788号







