摘要:ApacheFlink是一个分布式大数据处理引擎,可以对有限和无限数据流进行有状态计算。在本文中,北客地产高级工程师刘丽云将介绍ApacheFlink技术在北客地产业务中的应用,通过实时计算的分享帮助用户了解ApacheFlink的技术特点和应用场景企业开发的平台案例。业务规模及演进下图是可客地产的业务场景示意图。顶层是可客房屋的四大主营业务:二手房交易、新房交易、租赁业务和装修业务。四大业务操作会产生图中中间部分的四大数据,即房产字典、交易数据、用户行为日志和后台服务日志。图的底部代表了公司的实时数据采集和实时数据计算业务模块。本文案例将重点介绍数据实时计算部分的设计、实现和应用。发展历程2018年初,随着公司埋点治理规范的推进,我们构建了DP实时数据总线,统一承担各类埋点数据流的标准化处理,对外提供清洗后的实时数据世界。随着实时维护任务的增多,面对实时数据流量稳定性和任务管理的挑战,KEB大数据部着手开发Hermes实时计算平台,提供统一的实时任务管理平台。2018年10月,我们推出了SQLV1编辑器,方便用户开发实时计算任务。SQLV1基于SparkStructuredStreaming技术,用户可以使用SQL完成需求的开发,同时在界面上以拖拽的形式呈现给用户,让用户的操作更加方便。2019年5月,经过调研对比,我们引入了Flink技术栈,开发的SQLV2编辑器正式上线。SQLV2全面支持FlinkSQL的各种语法,并设计了大量自定义函数,兼容HiveUDF和用户常用函数。目前,我们已经在公司对实时数仓业务场景进行了探索和应用。应用规模下图是目前实时计算在客客寻房公司的应用规模。目前平台支持30多个业务项目,流计算任务数达到400个。随着数据仓库的不断扩容,实时流计算任务数将不断增加。每天处理的消息数量达到800亿条级别,效率非常可观。支持项目从下图企业实时计算支持项目可以看出,目前实时计算平台支持风控、租赁、策略搜索、新房等一系列业务项目交易,支持企业多维度运营产生数据,实时计算业务需求。任务增长趋势平台上线之初,支持的任务增长比较缓慢。2019年6月初,平台升级为Flink并全面支持SQL开发后,任务量开始大规模增加。2019年11月实时数仓完成后,平台支持的任务数有非常明显的增长趋势。平台统计下图是平台的每日统计。目前平台每天可处理1000亿条数据,一般数据任务处理时延在40毫秒左右。Hermes实时计算平台介绍平台概述Hermes平台目前支持公司实时任务的开发、编辑、部署、启停等管理功能,以及丰富的监控告警服务。平台支持Java、Scala、Python等多种语言开发的实时任务,支持自定义任务、模板任务、场景任务三种类型的任务。同时实现了每个项目的资源隔离,每个项目都有自己的项目专用队列,防止与其他项目竞争资源。同时,平台为资源需求小的项目提供公共队列,通过公共队列支持此类项目的方式,更方便的实现任务的开发。Hermes架构下图展示了Hermes平台的整体架构。该体系结构分为四个层次。图中最底部的深蓝色条目代表架构中的计算引擎。目前计算引擎支持Flink和SparkStreaming技术,使用消息队列和离线存储。等技术协助完成数据的实时存储。在引擎层方面,架构采用StreamSQL、DataStream、StreamCEP等技术构建。其中,StreamCEP技术很好地支持了券商平台业务的实时监控告警需求。功能组件层包括任务实例管理、项目管理和数据源管理。目前平台可以在同一个任务中切换不同的任务快照,在线任务出现问题时可以回滚到之前的快照。SQLV1编辑器下图是SQLV1编辑器的示意图。编辑器可以为大部分数据清洗和数据处理的业务场景实现简单高效的编辑处理。在编辑器的左侧,用户可以定义和编辑数据源、算子、目标源等数据信息。中央面板上显示的数据是SQLV1支持编辑的操作类型。选择面板中央的过滤器,在编辑器右侧添加相关过滤条件,实现数据相关过滤。在目标源层面,编辑器目前支持Kafka、Druid等多种目标源,大大提高了编辑器的兼容性。SQLV2编辑器下图是SQLV2编辑器的示意图。目前SQLV2是基于FlinkSQL技术的比较完善的编辑器。左侧是用户编辑代码的部分。用户可以在这里编辑大量的SQL语句,以帮助不同的业务场景。左下栏的数据是用户选择数据源自动生成的DDL,通过DDL编辑器将运行数据的样式更清晰的展示给用户。SQLV2支持源表、汇表和维表三种数据表,方便用户开发。编辑器右下角可以显示SQL语法的检测状态,提示用户在编辑时出现语法错误。SQLV2架构SQLV2工具的整体架构如下图所示。前端SQL编辑器模块包括语法语义检查、执行计划查看、DDL自动生成、任务调试等功能。用户可以通过任务调试功能查看任务执行结果。后台将引擎提交给Yarn集群执行。引擎通过任务id回调后台接口获取待执行的SQL,并对SQL进行语法校验和语法分析。如果有维表关联,SQL会多做一层转换。SQL引擎的整体架构下图展示了SQL引擎的整体架构。整体架构分为三层,最底层是FlinkTableAPI。在Flink层之上,公司设计了工厂形式的代码封装,方便顶层方法调用。最上面的核心层负责整个系统的SQL解析。维表关联在SQL解析的过程中,最复杂的就是维表的表关联。下图是维表关联系统的架构图。数据从数据源导入后,系统使用AsyncI/O技术访问后台,系统后台使用DataAccessor接口访问后台存储。系统后端存储支持HBase和Redis存储技术,后端会将数据缓存在LRUCache模块中。维表关联的数据支持各种大数据工具的存储,大大增加了系统的兼容性。丰富的内置函数系统也为用户提供了丰富的内置函数,包括时间函数、聚合函数、Json处理函数和字符串函数。丰富的内置功能可以方便用户的开发,节省用户自行开发的时间。实时数仓整体架构下图是实时数仓的整体架构,也是SQLV2系统实现的应用场景。每一层之间产生的数据存储在KafkaTopic中,数据也会同步到hive中备份。业务方可以查询实时备份数据,进行数据校验和分析。目前数据仓库的实时计算部分可以计算当天或过去几天的数据。实时计算平台正在协同其他组件开发实时和离线结合的分析查询,以扩大实时数据仓库的使用范围。实时数仓数据统计下图为企业实时数仓的数据统计。2019年8月起,SQLV2正式上线运行。到2019年10月,平台开始支持实时数仓开发,系统数据量开始快速增长。目前实时数仓有100多个任务,数据吞吐量已经达到每天21亿条的数据水平,数据规模比较可观。实时数仓案例下图列出了实时数仓平台已经实现的提供数据支持的应用案例。1、交易平台交易平台实时大屏实时显示区域内交易情况。在交易平台的搭建中,开发团队通过数据环回将未关联的数据返回存储模块重新关联,通过查看数据的生命周期来判断关联是否成功。这样,团队就让数据维度表和事实表的数据最终一致了。2、经纪人出差量经纪人出差量可以动态显示经纪人当前对客户的维护情况,便于企业掌握经纪人的实时工作状态。3、实时用户画像实时用户画像可以将各系统用户的数据信息实时呈现给企业,结合各平台用户行为信息,提供全面、准确的用户画像。公司算法策略部会根据用户的实时画像推荐相关信息和内容。监控告警下图是平台的监控告警页面截图。监控系统会实时监控平台任务处理延迟、Source写入量和Sink写入量三大指标。同时系统可以设置平台数据的非心跳时间。当超过设定的时间限制时,系统会发出警报。监控告警架构图下图是监控告警架构图。监控系统通过自定义的Listener监控Spark,Listener引入SDK收集Spark任务信息和运行日志数据。用户需要在这里手动导入SDK。在Flink应用模块中,系统设计支持获取自定义Report数据,通过自动加载直接加载到Flink中进行数据分析计算。信息。所有的监控信息都会统一发送到KafkaTopic,由Hermes平台进行分析处理,并触发相应的延时告警和心跳告警。未来发展规划总体架构实时计算平台总体架构如下图所示。在架构的中间部分,平台包括实时事件中心、事件处理平台等系统,以更好地应对未来企业的业务场景需求,以通用的形式为更多的业务方提供统一的业务支持。服务平台。在引擎方面,未来我们将深入研究Flink的状态管理、end-to-endexactlyonce等技术,提高数据处理的准确性和一致性。未来发展未来将构建平台的资源动态分配能力,根据任务的历史运行自动分配资源。用户可以在事件处理平台上定义各种事件,对事件进行实时分析,生成相关数据报表。用户使用实时规则引擎完成各种业务规则的配置,并在事件命中规则后触发相关业务操作。用户数据平台从各种产品和终端收集用户数据,提供用户行为的实时查询和分析,更高效地支撑营销、推荐等业务场景。在实时数仓建设方面,将探索KAPPA模型,推动流批一体化建设,提升历史数据的处理和查询能力。想上云,可以看云栖,点这里查看更多!本文为阿里云原创内容,未经许可不得转载。
