实时数仓:Lambda架构
在某些场景中,数据的价值随着时间的推移而逐渐减少。所以在传统大数据离线数仓的基础上,逐渐对数据的实时性提出了更高的要求。
于是随之诞生了大数据实时数仓,并且衍生出了两种技术架构Lambda和Kappa。
Lambda架构
其中Lambda架构是较早的解决方案,使用流处理和批处理两种架构进行数据处理。其中流处理部分负责实时数据的处理,但流处理因为数据可靠性并不高,所以需要批处理部分定期进行运算稽查。
流处理相当于作为临时视图存在,满足数据实时性要求。而准确数据以批处理计算为主。
在这种架构中,分为流处理层:Speed Layer,批处理层:Batch Layer,这两层处理后的数据存储到Server Layer中。数据应用访问Server Layer获取数据。
技术选型方面,这里以主流技术选型为主,一般新增数据进入到吞吐量大、实时性高的Kafka数据队列中。
批处理服务定期将数据抽取到分布式文件系统HDFS中,然后交由分布式计算引擎Hive进行处理。处理后的精准结果由Impala快速查询引擎提供服务。
实时处理服务实时从Kafka中获取数据,交由Flink、Spark Streaming等实时计算引擎进行实时处理。
处理结果会存储到支持实时读写的数据库中,如HBase、Druid。
应用方面,离线和实时处理互相补充,实时处理可以快速获取最新数据,而对于精准的历史数据,则由离线处理提供。
应用场景
这里有两个典型的应用场景:广告投放、智能停车。
在广告投放场景中,用户的实时访问数据由实时处理进行处理,进行实时推荐,但推荐内容也需要考虑用户的历史访问记录,这些离线的历史记录则由离线处理进行处理提供。
而智能停车中,实时系统对进入停车场的车辆数据进行实时分析,但如果多辆车进入,系统可能会给多辆车提供同一个车位,系统体验会很差。但如果通过历史数据,根据拥挤程度,和停车场车位的使用率,来建立模型。这样,实时系统与离线系统的结合,会给出更为出色的方案。
但Lmabda架构也有很明显的不足,首先同时维护两套系统,资源占用率高,其次这两套系统的数据处理逻辑相同,代码重复开发。能否有一种架构,只需要维护一套系统,就可以同时完成流处理、批处理任务呢?当然,那就是Kappa架构。