金融资管数据中台体系探索实践
编辑整理:王建新
出品平台:DataFunTalk
导读:数据中台是熵简科技数据智能业务的核心部分。引入数据中台可以打破数据与数据的界限、技术与业务的界限,为业务层的迭代提供更快的数据响应,真正做到业务数据化、数据资产化。熵简科技在长期的实践过程中总结出了一套适用于资管机构的数据中台架构方案。本文将从熵简数据中台体系和行业落地案例两方面展开详细介绍。
主要内容包括:
熵简科技及其数据中台的总体架构
数据接入:多源异构数据采集平台
数据中台:AirWorks 数据智能平台
实践案例:金融资管数据中台体系
1. 熵简科技简介
熵简科技是一家toB的金融科技企业,定位于以技术和业务导向为核心的数据智能服务商,熵简科技中的熵是热力学中描述系统混沌程度的度量,熵简寓意着希望利用大数据人工智能的技术去帮助客户简化业务决策、投资研究中的复杂度。
2. 数据中台总体架构
在公司的数据中台部分,其整体架构自下而上分为三层,分别是数据层、中台层和应用层。在数据层,基于公司起家的另类数据,既提供了数据采集的工具集,也提供了包括宏观数据、另类数据和资讯数据的数据集。平台还可以为金融机构客户提供采集配置服务和结构化定制等定制化数据服务。
在中台层构建了数据中台、算法中台和知识中台三大中台,在这三个中台的基础上,为给客户提供聚合搜索,舆情监控,知识管理等商品面向业务的应用系统。本次分享主要介绍的是数据层的工具集部分和中台层的数据中台部分。产品比较独特的核心优势是一方面提供了从数据采集到存储、处理和展示的一站式解决方案,另一方面,可以依托公司内部业务专家和技术专家的紧密配合,实现技术对业务的整体赋能。同时,参考海外的成熟架构和国内金融托管机构,量身定制了一套原厂架构。为了满足金融机构的私有化部署需求,产品的技术组件采用开源架构,支持公有云和私有云两种部署方式。
上图为中台的架构图,其中的数据平台包含三个部分,从下而上分别是数据开发,数据中心和数据应用。在数据开发部分,统一了批量任务、实时任务和信息查询,进行了统一封装;在数据中心部分,以hive做为元数据存储,进行了中心化的数仓建设;在数据应用部分,提供交互性探索的编译工具和供上层应用调用的API服务,技术实现也经历了从关系数据库到druid再到clickhouse的转变。
1. 海量异构数据采集
金融竞争的本质是来源于信息不对称,因此有参考价值的数据都需要纳入到系统中。针对这样的需求,熵简科技自研了一套数据生产平台,实现海量异构数据源的采集和监控,能够采集研究资讯,宏观经济数据,互联网公开等数据。该工具目前在内部目前已经监控了2000多个数据源,每天新增的数据量超过了数个TB。数据生成平台中最核心的任务是构建一个可以兼容数千种不同数据源类型,并且每日处处理数量在TB量级的一个大数据采集系统。实际应用中需要解决三方面的挑战,一方面是如何能够实现一个来源异构网站的数据抓取,二是如何能够以比较低的成本快速拓展新的数据源,三是在数千个数据源的情况下,如何保证数据采集的实时性和稳定性。
为了解决海量数据异构来源的问题,平台采用了云原生架构来构建大数据采集系统,整个系统是以Kafka作为消息中心,采用事件驱动的模型构建在k8s集群上。整个系统分为四个大模块,分别是用户控制台,数据采集引擎,数据存储服务和监控与认证服务。云原生架构有两个非常重要的特点,一个是微服务化,一个是容器化。上图右下角可以看出平台将采集系统中的所有服务和组件相互结耦进行了独立部署,涵盖了从任务配置、调度、数据下载再到解析、校验入库的全部的服务流程。平台的容器化体现在整个服务都是以容器的形式运行在k8s上的,通过容器编排引擎的快速动态伸缩扩容,可以满足海量数据的采集需求。
为了能够保证系统能够稳定、高质量的进行数据的采集和监控,系统也构建了一套完备的监控和报警体系,从三个层面对系统进行监控,包括基础设施/内存、组件和数据层。平台也有自己的数据交易规则,很多数据交易规则综合起来,成为监控异常报警的来源,在任何一层发现问题之后,都会第一时间向采集负责人进行报警,以保证系统的稳定性。
2. 数据源快速拓展
关于数据源的快速拓展部分,熵简科技的采集团队和算法团队一起合作,研发了一套智能化的网页抽取系统,这一套信息抽取引擎能够从网页中抽取出特定的区域、特定含义的文本片段。比如对于资讯数据来说,通常会关心哪一部分是新闻正文,哪一部分是新闻标题。对这个系统,提供了网页的url后,能够自动识别出网页中哪个字段是标题,哪个字段是正文,哪个字段是日期等,不需要一个页面一个面的去配置。其背后的实现原理也比较简单,每一个网页都是一个HTML文档,可以将它等价为一棵树,网页中的这些文本、图片链接都是树上各个节点和所携带的信息,所以想从原始网页提取核心字段,第一步将不属于提取内容的节点进行删除操作,第二步是根据这各个节点在树上的位置将节点中的信息序列化。
这里重点看一下第一步怎么样高精度的去剔除数上面的无用节点。这一步解决的其实是如何将网页上的标签和属性进行数字化表示的一个问题。公司算法团队word2vec的Skip-gram模型思想的启发,提出了tag embedding的模型.它的关键思想就是用当前节点的一个tag去预测HTML文档中父节点的tag和子节点的tag。上图中右上角展示了算法的函数。该算法的优势是可以在构建的大规模数据集上进行无监督的训练,学习出tag与tag之间的语义关系。通过这个方法可以不依赖于人工标注就可以实现HTML标签的分布式展示。
基于上述数据结果,算法人员利用基于三层前馈神经网络的二分类器,用来判断这个节点是否需要保留,输入的节点信息主要包括三大类,第一类是父节点的标签信息,第二类是子节点的标签信息,第三类是当前节点的标签信息以及当前节点其他特征。实际应用中整个模型在来自于50多个咨询网站十万的标注数据上进行训练,标题的准确率能够达到97%左右,正文的准确率能够达到95%左右。
1. AirWorks简介
熵简科技在资管数据中台中实践中用到的核心组件在内部称为AirWorks,数据中台本身和所使用的工具技术是解耦的,但是在实践过程中会发现自研的核心组件对于自己和客户进行数据中台的建设都起到了很关键的一个作用。熵简对于数据平台的定义是面向于资管场景的业务数据平台,其本质是让前台人员都能够高效的、低成本的、更全面的用到业务数据。数据中台的价值主要体现在一方面可以提高数据管理和利用的效率,方便数据治理;另外一方面,通过数据分层,能够作为相对稳定的IT后台架构和快速迭代的前台业务需求之间的变速齿轮,使业务人员的需求能够更及时的被响应。其中的核心环节就是将数据层多源异构的数据进行融合,形成投研可用的知识。
熵简内部对AirWorks的定位即是一个低代码、可视化的数据ETL平台,同时也是一个科学建模系统和一个中心化的数据仓库和统一分发的数据服务。该工具集的目标是帮助编程经验较少或没有编程经验的用户完成数据清洗和数据分析工作。
2. AirWorks功能架构
AirWorks的功能架构自下而上分为四个部分,别是数据源接入、数据开发运维、数据资产管理和数据服务。在数据源接入部分既会接入数据采集系统采集的互联网公开数据,也会接入数据服务商提供三方数据,同时还会接入内部业务系统产生的数据。数据开发运维部分,统一了离线开发和实时开发,同时把算法团队提供的算法能力封装在整个平台中,使人人都可以成为算法工程师。数据资产管理相对于整个体系来说,是相对比较核心的部分,产品在中心化的数据仓库中提供了数据治理的功能。对外的数据服务部分一方面提供了一个BI可视化分析,另一方面提供了对接上层应用的API服务。
3. AirWorks技术架构
AirWorks的技术架构在底层是数据持久化,上层是数据计算。数据持久化是深度依赖了对象存储,不管是批量任务的中间数据还是结构化和非结构化数据。构建数据中台的工具集面临的核心技术挑战包括五点,第一点是通过资源的计算引擎,把主流的这种开源框架都纳入进来,然后包括spark、python和R等对用户来说其实是透明的,用户在界面上进行可视化的数据配置的时候,不需要关心底层资源引擎是什么;第二点是对于异构数据量级,实现智能调度和监控管理,实现小数据和大数据统一分配。第三点是基于底层的开源的分布式架构,支持突破单机限制,实现资源的横向扩容,第四点是平台中集成了NLP的算法中台,通过算法团队提供的这样一个算法能力,让数据分析师都能够利用到已经训练好的模型,第五点是将整个采集据中台应用打通成一个全链路统一的基础组件,能给客户提供一站式的原生体验。
4. AirWorks技术特点
对于用户透明下的异构任务处理这个问题,采用的是多引擎协同和多租户管理的方案,通过不同计算引擎的引入,让最合适的引擎去做最合适的任务。比如说在平台上,大部分的大数据相关的ETL操作是通过Spark批任务的引擎去处理的;对于科学建模的算子,其中的数据科学分析是通过R算子来进行的,背后的NLP的任务是通过tenserflow集群实现的。其中有两个核心点,第一个是各个算子之间是需要进行松耦合的,各自能够独立运行,第二个是算子本身是无状态的,算子之间只能通过数据进行驱动,这也就意味着在中间层组上,我们希望会将数据ETL的每一步都进行存储,所以背后也利用了对象存储这样相对稳定并且低成本的一个存储架构。在多租户管理方面,平台的核心目标是最大化资源的利用效率。
低代码化方面,整个系统提供了比较完备的原子化的算子支持,涵盖了从输入、输出到预处理和变换解析几大类。目前的算子数量已经超过了50个。从上百个应用案例的实践中发现,这些算子能够覆盖绝大部分的数据操作需求。
除了原子化的算子之外,系统也提供了自定义的联邦算子。具体来说就是用户可以将多个算子连接成网络,并且将网络抽象成一个自定义算子,在其他项目中进行复用。相对于系统本身的原子化算子来说,这类联邦算子可以提供更加高级的功能,支撑更快搭建工作流。在大数据的前提下,想要快速搭建工作流,算子的运行状态和进度监控是很重要的,因此系统也提供了工作流监控和中间状态的可视化。在实践过程中,很多金融机构都有相同的三方数据源,所以系统也提供一些相对高层的算子,比如资管机构基本上都会用到万得数据财务数据,系统会提供针对这种特定数据源的联邦算子。
在海量数据处理的性能优化上,一方面引入alluxio虚拟文件系统提高系统的IO速度,提供高效的内存计算。同事参考开源OLAP引擎的算法,实现精确计算和近似计算的多种场景供用户去选择。
在大数据和小数据的均衡处理这个问题上,系统主要是通过采样预估加数据倾斜的策略去进行均衡,具体方式是在单元计算节点的资源选择上,采用最小规格的单个节点,这样在大数据下其实可能会存在问题,可能会由于比如说数据倾斜造成整个节点崩溃,为了解决这个问题,会在关键节点上,比如说join算子进行数据采样,根据采样的结果进行数据倾斜的预估,对于倾斜度较高的数据进行拆分处理,处理完之后再进行自动合并。
一个常见的案例就是在对公开的电商数据处理的过程中,经常需要将销售表和店铺表关联起来,但是由于不同店铺的销量会存在比较大的差异,所以其中可能有一半的数据都来自于比如说某一个旗舰店,通过采样的方式发现了数据倾斜的情况后,通过自动化的策略将数据的前缀随机打散,实现数据的负载均衡。
整个数据中台组建中,提供了一个数据全链路的服务,既能为客户提供一站式的原生体验,也可以根据客户实际的需求进行基础设施的对接和改造。
最后就是在整大数据平台中,对接了NLP算法中台,一个实际案例是根据线上销售的数据和口碑数据去进行基本业绩的衡量,从客户的电商平台用户评论中去抓取评论数据,然后利用情感分析算子对每条评论进行情感分析,横向对比多个产品型号的用户的NPS指数,可以分析产品的口碑趋势,这也是投资研究中一个比较常见的案例。
最后简单介绍一下在某头部上市公司的实践案例,该案例是公司与某头部券商进行研究业务数据中台和智能投研应用系统的搭建。基于AirWorks数据智能平台搭建的内部研究业务数据中台,为上层的智能投研应用提供了有深度的分层次的数据服务。
对于资管数据仓库而言,和传统的数仓一样需要构建元数据模型,通过数据规范的定义和引入来全面准确的描述客户的资管业务。实际的做法和传统数仓的元数据建模是类似的,只不过抽象出来的实体包括环境过程,金融实体,实际行为等跟客户的实际业务紧密耦合。
抽象出这些元数据模型之后,整个数据处理过程分为四步,分别是数据输入、数据清洗、数据聚合和数据输出。从逻辑上看,整个过程并不复杂,前面提到的数据的均衡、多种计算引擎的协作已经交给AirWorks系统来完成了。整个数据中心的分层架构其实和大部分数仓是类似的,缓冲层和天然层基本按照原数据系统的数据结构进行存储,只进行非常基本的数据质量核验。指标会根据数据标准加工存储成各类数据指标,上层的整合会将所有的数据拿到一套逻辑模型中,最上面集市层面向具体的应用,但实际实践中,资管客户的大部分三方数据主要是以指标的形式存在,所以对应到明细层、汇总层再到集市层,分别定义了这样一套模式即一个onedata到one indicator再到one entity这样一个规范和模型,最后对外提供一个统一的API服务和交互探索的面板。从券商研究所的实际场景来说,依托AirWorks可以高效地打造一个精品的行业数据库,将研究员日常整理涉及到的研究底稿,做到自动化和线上化,实现一个数据的深加工和标准化封装,供给我们下游的一个应用系统。
合作项目的第一部分是通过建设标准化指标中心的方式实现数据资产的沉淀,通过导入客户采购的各类第三方数据库,实现数据融合和面向业务场景的聚合搜索,打通研究所内部不同行业、公司内外部数据的使用边界。
在前端建立的应用上,研究所内部成员可以同时进行数据加工和生产,分析师能够从前端进行本地数据的上传和线上的数据编辑,生成个性化的指标。前端的应用上,还提供了指标中心、在线编辑和智能研报等多种场景的应用形式。
项目的第二部分是将分析师的底稿进行线上化,通过AirWorks数据融合工具加上自动化脚本导入的方式,结合前端用户上传和自定义维护,将研究员非结构化的研究素材通过技术手段整理为归一化的业务指标,最后在前端应用中通过知识图谱的方式实现知识沉淀。研究所内核心的研究逻辑和模型框架可以用可视化的方式进行图形化的绘制和结构化的存储。结构化的知识一方面可以帮助券商作为卖方对外输出为特色的研究产品,另外一方面也可以对内为智能投资提供结构化的专家支持。
今天的分享就到这里,谢谢大家。