时间:2024-05-04
曹云柯
(上海久誉软件系统有限公司 上海市 200233)
随着分布式技术研究的不断深入和该技术应用范围的进一步拓宽,智能工业、信息技术、生物科技等不同产业对分布式计算方式的应用程度进一步加深,数据信息处理也从以往的单一的离线处理模式转变为多角度的实时在线处理方式,数据信息处理量进一步加大。因此,实时数据信息处理能力也就逐步衍变为企业或者其他主体市场竞争能力的一种。但在传统模式下的实时数据信息处理过程中,实时处理功能的发挥主要依托一致性的内部程度的接口和针对性程度的编制,将参数整合到某一具体平台后进行处理,该类处理方式要求开发人员具备较强的程度开发能力,且硬件设备配置要求较高。因此,本文提出以Flink以及Flink SQL实时计算框架为理论基础,在此框架上构建实时数仓计算平台,简化针对性程序处理难度,进而为Flink实时数仓的系统设计及功能实现提供更多的经验参考。
随着社会迈入数字经济时代,数据已成为不容忽视的生产要素。互联网平台和移动产业在全行业普及,企业信息化在提升生产效率的同时也产生了大量的数据。由于企业的信息化往往是逐步开展,最初没有整体规划,在建设企业内部数据平台时往往面临的底层数据架构和系统架构的巨大差异。离线数据仓库的时效性存在一定延迟,较难满足实时性要求高的数据需求。各系统在开发后期及运营过程中,定制化报表的需求多,定制化程度高。因此建设一套实时数据抽取转换平台,支持基于日志文件、数据库表等数据源进行数据抽取转换,并进行实时、离线的数据汇总及图表呈现,可满足数据整合展现需要,对现有系统侵入性小,具有良好的拓展性。
在大数据信息时代,企业的市场竞争优劣往往体现在大体量数据信息的处理质量和处理效率上,越来越多的企业需要将海量参数中蕴含的信息计算后得出数据和数据背后蕴藏的价值,进而指导企业战略方案的制定。本文分析了Flink这一现代企业中应用广泛的计算方式,在充分了解该算法引擎具备的商业价值和经济价值的基础上,也看到了该引擎应用的诸多劣势,其局限性主要体现在以下方面:
(1)Flink Job的部署依赖于其本身的操作命令,对开发和运维人员功能实现所具备的要求较高;
(2)Flink虽然在1.10版本集成了Blink,在1.13.2版本对SQL做了2次语法更新,但是对一些复杂的业务支持依然不好,且SQL本身的执行依赖SQL客户端或者Table的API,对开发人员并不友好;
(3)Flink在不同环境下的部署,其本身自带的UI管理平台并不适用,以Hadoop为例,该环境下更是各自job管理各自的内容、实现各自目的,缺少统一的监管平台。
同时,以实时计算引擎对比参数为例分析各不同软件之间的性能,具体对比示意如表1所示。由表1可知,Flink支撑下各项参数信息能够得到较好的把控,各功能也能得到圆满的实现与完成,因此,针对以上实际应用中存在的问题,笔者基于Flink实时数仓进行系统设计及功能分析,设计出一套完整的实时计算系统来解决现实问题。
表1:实时计算引擎对比参数统计表
Apache Flink是以分布式数据流处理和批量数据信息挖掘为目标的计算平台,属于开源性平台之一,能够在Flink正常运行时提供上述两种数据信息挖掘的技术支撑,计算方案的开源性设计,有利于系统运行时冗余度的增大,系统针对流处理和批处理两种不同的应用类型,借助系统内不同的功能模块实现参数信息获取的不同目标。在此过程中,流处理数据处理方式对时效性要求和处理容量要求较批处理方式更低,为节能系统设计,往往需要两套参数计算的运营方式。
Flink的核心计算架构如图1,图中Flink Runtime执行引擎是分布式系统,能够接受数据流程序并在一台或多台机器上以容错方式执行。Flink Runtime执行引擎可作为YARN(Yet Another Resource Negotiator)应用程序在集群上运行,也可以在Mesos集群上运行,还可以在单机上运行,为实现诸多功能奠定技术基础。
图1:Flink核心计算架构图
数据仓库作为面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。然而,随着数据时效性在企业运营中的重要性日益凸现,传统的离线数据仓库架构难以满足数据实时分析需求,同时Lambda架构存在开发效率低、维护成本高等瓶颈,因此,基于Flink引擎、Kappa架构实现的实时数据仓库已成为数据仓库应用的新趋势。
随着当前阶段网络信息技术的迅速发展,大数据处理呈现出非常明显的实时化趋势,各种各样的现实生活场景对大数据处理技术的使用信手拈来。例如,春晚直播实时大屏、“双11”购物节实时成交额统计和媒体汇报、智慧城市建设的实时监测交通、银行系统实时风控监测等。此外,当打开淘宝、天猫等应用软件时,会根据用户不同的习惯进行实时个性化推荐。由此可知,在未来社会的进步与经济繁荣发展中,实时化即未来,是当下大数据处理的主流趋势。
根据Flink原生的流处理系统,保证低延迟性、满足低延迟性场景要求、完善API和容错性、使用和部署相对简单和Flink社区响应速度非常快的基本前提下,设计出一种基于Flink实时数仓的系统,分为数仓体系和数仓管理平台两个部分,整体架构体系如图2。
图2:整体架构体系图
就数仓架构本身而言,由于数据仓库的运行是以各个模块之间相互配合为基础的,但各管理目标之间往往是相互独立的,各自完成自身的设计功能,能通过队列或者restFull进行数据交互,缺乏统一管理的平台。本文设计的数仓(ETL)管理平台就是为了解决该问题,使运营人员能够在数据采集、文件管理、任务创建和发布、任务监控等方面更方便地监听整个数仓体系。此外,基于Flink实时数仓的系统管理平台支持Fast-jar的方式创建Job,同时支持SQL的方式创建SQL-Job任务。
在该系统的应用中,主要包含数据采集层、实时计算层、数据存储层、数据展示层和服务监控层五部分。其中,数据采集层基于Debeziium、Flume等工具采集实时数据,将采集到的原始数据(ODS)放到消息队列Kafka中等待消费。
实时计算层基于Kafka消息队列及Flink实时计算引擎,针对所采集的数据进行数据清洗、数据解析、分析计算,并将计算结果。在此过程中,Flink本身支持SQL任务和Fast-Jar任务2种方式计算Job,但提交过程依赖Flink SQL Client所在客户端或Flink自带的UI界面,而杉树2种方式不统一且缺乏命令复杂,对开发者和运维人员都非常不友好。故本文在数仓管理平台界面对其进行了统一形式的创建和部署。除了原始的Fast-Jar任务以外,管理平台将SQL任务集成为UDF,通过动态连接器、动态依赖Jar等方式来灵活构建不同的SQL_Job,极大地方便了开发、运维人员创建新的计算任务。
数据存储层是平台利用分布式存储架构根据数据场景及应用需求进行个性化存储,通过 Hive、HBase、HDFS、Redis、RDBMS等存储模型,为结构化数据、半结构化数据、实时数据等不同类型的数据提供存储支持。就整个数仓平台而言,针对不同阶段的数据会采用不同的存储方案存储数据,如Kafa用来存储ODS、DWS、DWD等数据,HBase存储维表数据、DWD、DWS等数据,Hive存放ODS数据;Apache Driud存储ADS等数据。
在数据展示层中,操作人员可通过Web界面进行交互,实现对实时监控、观察报警统计数据,同时支持状态在线分析、设备能耗分析等功能。系统使用Apache Suerset作为可视化界面的实现方案,借助其快速直观、轻量级、具有丰富的功能选项等优势,使各种用户都可以轻松地以可视化的方式浏览数据,实现简单的折线图到高度详细的地理空间图的阅览过程。
下文以某城市交通卡监控指标实时分析为例分析Flink实时数仓系统的测试运行效果,通过Debezium工具监听交通卡数据库,获取相应的CDC行级别数据变动,写入Kafka给后续任务分析计算。然后选择地铁人流量(分钟)、站点人流量(分钟)、站点人流TOP_N(分钟级别)、站点人流TOP_N(天累计)、用户上下站点线路图等为统计指标,按照图3所示的数据分析过程,探究最终实现结果,图4即为地铁各线路人流趋势图,由此分析可知,Flink实时数仓系统能够在采集实时数据信息的基础上,实现实时数据存储、实时数据分析、实时监控告警和实时数据报表生成等诸多功能,实现参数信息的提取和后续决策的指导。以下给出部分系统中的性能数据举例:
图3:交通卡数据分析过程
图4:地铁各线路人流趋势图
- 读取Kafka主题中1000w数据,分发给6个不同主题
- 处理速率约为27000/s
开窗计算
- 事件时间开窗计算730w条数据行,统计总人流和个线路人流量
- 处理速率35000/s
CEP
- 使用CEP计算进站后6小时内人员进出站情况
- 在测试YARN环境下运行速度约为17500/s
总之,本文基于流批一体计算引擎Flink设计大数据实时分析平台,对实际生产过程中产生的海量数据进行实时采集、处理、分析与存储,面向不同格式的数据进行定制化存储,从而提供实时化、自动化的分析决策,可以实现支撑监测大屏、看板系统、报表系统、分析报警系统等多种场景的实时数据分析。在实时数据处理框架中,借助Flink工具在容错性、实时性、反压方面相较于其他框架悠着较大的优势,提出基于Flink实时计算框架,构建实时计算平台,让用户通过SQL语句来创建任务,并通过可视化页面监控任务的执行,实现了基于Flink实时数仓的系统设计及功能实现。
在该系统的后续应用和优化设计创新中,可在以下方面进行优化:首先,尽管SQL语句能在任务创建上更加方便简洁,但是对于一些负责和细节上的操作首选方案还是原生API。其次,就可视化视图方面,本次设计方案中使用的是Apache superset,该工具是一种开源的框架,其提供的Dashboard种类有限,需要有用户自扩展Dashboard,或者重新搭建大屏展示界面。最后,Flink实时数仓系统在当前框架中缺少血缘分析,且目前只能从Flink作业监控页面,查看每个算子输入和输出的数据量大小,无法从交互页面进行查看。未来,基于Flink实时数仓的系统设计可在上述三个方面进行进一步的优化设计,保证其功能实现过程更加优良。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!