1.4.5 流批一体大数据架构
传统大数据架构和流式大数据架构各有其适用场景,但在企业实际应用功能中,可能同时需要进行批处理和流处理。流批一体大数据架构模式成为此类企业更好的选择。
流批一体大数据架构模式的数据采集和同步的技术路径是天然分离的,因此,流批一体的核心是数据处理架构的统一。如果将流数据处理的延迟性容忍度设定在秒级别以内,那么Spark Streaming和Flink都是流批一体大数据架构,其区别如表1-3所示。
表1-3 Spark Streaming和Flink在流批一体模式中的区别
在流批一体大数据架构的选型上,二者各有优势:Spark Streaming的最大优势在于其与Hadoop生态的集成,如果企业原来的数据应用基于Hadoop和Spark生态且能接受秒级别的数据延迟,那么Spark Streaming是最优选择;如果对数据延迟性有更高的要求,那么选择Flink。
流批一体大数据架构具有如下特征。
• 物理资源:与传统大数据架构和流式大数据架构类似,在此不再赘述。
• 功能逻辑:由于流、批处理的业务需求可能存在差异,因此,在功能逻辑上,需要将传统大数据架构和流式大数据架构合并起来,在数据同步上是两条路径,而在核心的数据存储、处理和计算环节则使用统一的大数据平台;同时,为了提升服务的统一性和复用性,可以额外增加一个数据服务模块,为所有的应用提供统一出口。
• 技术要求:综合了传统大数据架构和流式大数据架构的技术要求,在此不再赘述。
• 数据流模式:如果架构中同时包含流处理和批处理任务,那么包括两条数据流。
提示:能否实现全流程的流批一体大数据架构呢?在满足应用功能需求的基础上,可以考虑将数据采集和同步统一起来,即数据采集、同步、存储、处理和计算等均基于同一套大技术路径产生。这种方案适用于全新系统架构设计和系统开发,否则会涉及历史系统功能、系统部署、集群运维、业务分析、跨系统调用等逻辑重构、功能复写、系统升级等工作,改造难度较大。但无论是一套还是多套技术路径,在写功能逻辑时,仍然需要拆分为批处理和流处理,因为二者对于数据量级、模型需求、计算复杂度、数据窗口等方面的要求完全不同。
图1-8所示为流批一体大数据架构的核心逻辑,核心的存储和计算构建于Hadoop+Spark生态之上。
图1-8 流批一体大数据架构的核心逻辑
• 流处理:数据源主要是Log服务器,使用Flume做日志采集、KafKa做数据缓存、Spark Streaming做流式计算,数据结果输出到数据缓存Redis、消息队列RabbitMQ或支持实时存取服务的数据库HBase中。
• 批处理:数据源主要是业务数据库、数据文件、HTTP/API等,数据使用DataX、Sqoop同步到HDFS中,使用Spark(含Spark SQL、Spark DataFrame、Spark GraphX、Spark ML)实现批处理、计算和数据建模,数据结果输出到数据仓库(如Hive)、NoSQL数据库(如ES、MongoDB)中,或者将训练后的模型对象持久化到硬盘。
• 统一数据平台:流批一体中涉及数据处理和计算的核心复用Hadoop+Spark框架。
• 数据服务:单独创建统一的数据服务,为后端数据消费提供数据、功能、模型服务。
• 数据消费:包括Dashboard、实时监控或预警、在线实时推荐服务、基于Kylin等工具搭建的分析或报表平台、OLAP、文本检索和其他业务应用。
流批一体大数据架构的优势在于使用一套技术同时满足流处理和批处理,能够大大降低开发成本和技术复杂度、缩短开发周期;由于技术路线的统一,在技术人员能力要求上更加集中;同时能降低后期的系统部署、运维、监控和管理等方面的成本投入与复杂度,利于提升系统稳定性。因此,它主要适用于大中型企业,特别是业务场景广泛,同时涵盖批处理和流处理两类场景的企业。
除了上面介绍的常见的5种数据架构,还有一种数据架构也较常见——存算分离的流批一体大数据架构,下面进行介绍。