数据中台:宜信敏捷数据中台建设实践(中)

阅读数:1 2020 年 2 月 10 日 21:02

数据中台:宜信敏捷数据中台建设实践(中)

三、从中间件工具到平台

3.1 ABD 总览

数据中台:宜信敏捷数据中台建设实践(中)

图 5 ABD 总览

中间件工具指 DBus、Wormhole、Moonbox、Davinci 四大开源平台,它们从敏捷大数据(ABD,Agile BigData)理念中抽象而出,组成 ABD 平台栈,敏捷数据中台则被我们称为 ADX(Agile Data X Platform)。也就是说我们经历了从 ABD 到 ADX 的过程。

一开始,基于对业务需求共性的抽象和总结,我们孵化出若干个通用的中间件,去解决各种各样的问题。当出现更为复杂的需求,我们尝试将这些通用的中间件进行组合运用。实践中,我们发现经常会使用到某些特定的组合,同时,从用户角度来看,他们更希望能实现自助化,直接拿过来就能用,而不是每次都要自己去选择和组合。基于这两点,我们对这几个开源工具进行了封装。

3.1.1 ABD-DBus

DBus(数据总线平台),是一个 DBaaS(Data Bus as a Service)平台解决方案。

DBus 面向大数据项目开发和管理运维人员,致力于提供数据实时采集和分发解决方案。平台采用高可用流式计算框架,提供海量数据实时传输,可靠多路消息订阅分发,通过简单灵活的配置,无侵入接入源端数据,对各个 IT 系统在业务流程中产生的数据进行汇集,并统一处理转换成通过 JSON 描述的 UMS 格式,提供给不同下游客户订阅和消费。DBus 可充当数仓平台、大数据分析平台、实时报表和实时营销等业务的数据源。

开源地址: https://github.com/BriData

数据中台:宜信敏捷数据中台建设实践(中)

图 6 DBus 功能及定位

如图所示,DBus 可以无侵入地对接各种数据库的数据源,实时抽取增量数据,做统一清洗和处理,并以 UMS 的格式存储到 Kafka 中。

DBus 的功能还包括批量抽取、监控、分发、多租户,以及配置清晰规则等,具体功能特性如图所示。

上图右下角展示的是 DBus 的一个截图,用户在 DBus 上可以通过一个可视化页面,拉取增量数据,配置日志和清洗方式,完成实时数据抽取等工作。

数据中台:宜信敏捷数据中台建设实践(中)

图 7 DBus 架构

从如上架构图可以看到 DBus 包括若干不同的处理模块,支持不同的功能。(GitHub 有具体介绍,此处不作展开。)

3.1.2 ABD-Wormhole

Wormhole(流式处理平台),是一个 SPaaS(Stream Processing as a Service)平台解决方案。

Wormhole 面向大数据项目开发和管理运维人员,致力于提供数据流式化处理解决方案。平台专注于简化和统一开发管理流程,提供可视化的操作界面,基于配置和 SQL 的业务开发方式,屏蔽底层技术实现细节,极大的降低了开发门槛,使得大数据流式处理项目的开发和管理变得更加轻量敏捷、可控可靠。

开源地址:  https://github.com/edp963/wormhole

数据中台:宜信敏捷数据中台建设实践(中)

图 8 Wormhole 功能及定位

DBus 将实时数据以 UMS 的格式存储到 Kafka 中,我们要使用这些实时的流式数据,就要用到 Wormhole 这个工具。

Wormhole 支持配置流式化的处理逻辑,同时可以把处理完之后的数据写到不同的数据存储中。上图中展示了很多 Wormhole 的功能特性,我们还在开发更多新的功能。

上图右下角是 Wormhole 的一个工作截图,Wormhole 作为流式平台,自己不重新开发流式处理引擎,它主要依赖 Spark Streaming 和 Flink Streaming 这两种流式计算引擎。用户可以选择其中一个流式计算引擎,比如 Spark,配置流式处理逻辑,确定 Lookup 库的方式,并通过写 SQL 来表达这个逻辑。如果涉及 CEP,当然就是基于 Flink。

由此可以看出,使用 Wormhole 的门槛就是配置加上 SQL。这也符合我们一直秉承的理念,即用敏捷化的方式支持用户自助玩转大数据。

数据中台:宜信敏捷数据中台建设实践(中)

图 9 Wormhole 架构

上图展示的是 Wormhole 的架构图,包含很多功能模块。介绍其中的几个功能:

  • Wormhole 支持异构 Sink 幂等,能帮助用户解决数据一致性的问题。

  • 用过 Spark Streaming 的人都知道,发起一个 Spark Streaming 可能只做一件事情。Wormhole 在 Spark Streaming 的物理计算管道中抽象出一层“逻辑的 Flow”的概念,就是从什么地方到什么地方、中间做什么事,这是一个“逻辑的 Flow”。做了这种解耦和抽象之后,Wormhole 支持在一个物理的 Spark Streaming 管道中同时跑多个不同业务逻辑的 Flow。所以理论上讲,比如有 1000 个不同的 Source 表,经过 1000 个不同的流式处理,最后要得出 1000 个不同的结果表,可以只在 Wormhole 中发起一个 Spark Streaming ,在里面跑 1000 个逻辑的 Flow 来实现。当然这样做的话可能会导致每个 Flow 延迟加大,因为都挤在同一个管道里,但这里的设置是很灵活的,我可以让某一个 Flow 独占一个 VIP 的 Stream,如果有些 Flow 流量很小,或者延迟对其影响不那么大的话,可以让它们共享一个 Stream。灵活性是 Wormhole 一个很大的特点。

  • Wormhole 有自己的一套指令和反馈体系,用户不用重启或停止流,就可以动态地在线更改逻辑,并且实时拿到作业和反馈结果等。

3.1.3 ABD-Moonbox

Moonbox(计算服务平台),是一个 DVtaaS(Data Virtualization as a Service)平台解决方案。

Moonbox 面向数据仓库工程师 / 数据分析师 / 数据科学家等, 基于数据虚拟化设计思想,致力于提供批量计算服务解决方案。Moonbox 负责屏蔽底层数据源的物理和使用细节,为用户带来虚拟数据库般使用体验,用户只需通过统一 SQL 语言,即可透明实现跨异构数据系统混算和写出。此外 Moonbox 还提供数据服务、数据管理、数据工具、数据开发等基础支持,可支撑更加敏捷和灵活的数据应用架构和逻辑数仓实践。

开源地址:  https://github.com/edp963/moonbox

数据中台:宜信敏捷数据中台建设实践(中)

图 10 Moonbox 功能及定位

数据从 DBus 过来,经过 Wormhole 的流式处理,可能落到不同的数据存储中,我们需要对这些数据进行混算,Moonbox 支持多源异构系统无缝混算。上图展示了 Moonbox 的功能特性。

平时所说的即席查询并没有真正做到“即席”,因为需要用户先手工地把数据导到 Hive 再做计算,这是一个预置的工作。Moonbox 不需要事先把数据导到一个地方去,做到了真正的即席查询。数据可以散落到不同的存储中,当用户有需求时, 只需写一个 SQL,Moonbox 可以自动拆分这个 SQL,从而得知哪些表在哪里,然后规划 SQL 的执行计划,最终拿到结果。

Moonbox 对外提供标准的 REST、API、JDBC、ODBC 等,因此也可以将之看成一个虚拟数据库。

数据中台:宜信敏捷数据中台建设实践(中)

图 11 Moonbox 架构

上图展示的是 Moonbox 的架构图。可以看到 Moonbox 的计算引擎部分也是基于 Spark 引擎做的,并没有自研。Moonbox 对 Spark 进行扩展和优化,增加了很多企业级的数据库能力,比如用户、租户、权限、 类存储过程等。

从上图看,Moonbox 整个服务端是一个分布式的架构,所以它也是高可用的。

3.1.4 ABD-Davinci

Davinci(可视应用平台),是一个 DVaaS(Data Visualization as a Service)平台解决方案。

Davinci 面向业务人员 / 数据工程师 / 数据分析师 / 数据科学家,致力于提供一站式数据可视化解决方案。既可作为公有云 / 私有云独立部署使用,也可作为可视化插件集成到三方系统。用户只需在可视化 UI 上简单配置即可服务多种数据可视化应用,并支持高级交互 / 行业分析 / 模式探索 / 社交智能等可视化功能。

开源地址: https://github.com/edp963/davinci

数据中台:宜信敏捷数据中台建设实践(中)

图 12 Davinci 功能及定位

Davinci 是一个可视化工具,所具备的功能特性如图所示。

数据中台:宜信敏捷数据中台建设实践(中)

图 13 Davinci 架构

从设计层面来看,Davinci 有自己的完备和一致性的内在逻辑。包括 Source、View、Widget,支持各种数据可视化应用。

数据中台:宜信敏捷数据中台建设实践(中)

图 14 Davinci 富客户端应用

Davinci 是一个富客户端的应用,所以主要还是看它前端的使用体验、丰富性和易用性等。Davinci 支持图表驱动和透视驱动两种模式编辑 Widget。上图是一个透视驱动的效果样例,可以看到横纵坐标都是透视的,它们会将整个图切成不同的单元格,每个单元格里可以选择不同的图。

3.2 ABD 架构

数据中台:宜信敏捷数据中台建设实践(中)

图 15 ABD 架构

在 ABD 时代,我们通过 DIY 组合四个开源工具来支持各种各样的数据应用需求。如上图所示,将整个端到端的流程串起来,这个架构图展示了我们“有收有放把整个链路打通”的理念。

  • 收。比如采集、架构、流转、注入、计算服务查询等功能,需要收敛集合成一个平台。

  • 放。面对复杂的业务环境,数据源也是各种各样的无法统一,很难有一个存储或数据系统可以满足所有的需求,使得大家不再需要选型。因此这一块的实践是开放的,大家可以自主选择开源工具和组件来适配和兼容。

3.3 ADX 总览

发展到一定阶段时,我们需要一个一站式的平台,把基础组件封装起来,使得用户可以在这个平台上更简单地完成数据相关的工作,于是进入了 ADX 数据中台建设阶段。

数据中台:宜信敏捷数据中台建设实践(中)

图 16 ADX 总览

上图是 ADX 总览,相当于一个一级功能菜单。用户登录到平台,可以做以下事情:

  • 项目看板:可以看到所在项目的看板,包括健康情况等各方面的统计情况。

  • 项目管理:可以做项目相关的管理,包括资产管理、权限管理、审批管理等。

  • 数据管理:可以做数据方面的管理,比如查看元数据,查看数据血缘等。

  • 数据申请:项目配置好了,数据也了解了,可以做实际工作了。基于安全和权限考虑,并不是谁都可以去用放在里面的数据,因此首先要做数据申请。右边蓝色模块是本次分享将重点介绍的 ADX 数据中台的五大功能模块。数据申请更多是由 DataHub 数据枢纽来实现的,它支持自助申请、发布、标准化、清洗、脱敏等。

  • 即席查询、批量作业、流式作业是基于 DataWorks 数据工坊实现的。

  • 数据模型是基于 DataStar 这个模型管理平台来实现的。

  • 应用市场包括数据可视化(数据加工完之后可以配置最终展现样式为图或仪表板等,这里可能用到 Davinci);标签画像、行为分析等常见分析方法;智能工具箱(帮助数据科学家更好地做数据集分析、挖掘和算法模型的工作)以及智能服务、智能对话(比如智能聊天机器人)等。

3.3.1 ADX-DataHub 数据枢纽

数据中台:宜信敏捷数据中台建设实践(中)

图 17 DataHub 工作流程

上图蓝色虚线框显示的是 DataHub 的流程架构,橙色方块是我们的开源工具,其中“tria”代表 Triangle,是宜信另一个团队研发的作业调度工具。 DataHub 不是简单地封装了链路,而是使得用户可以在一个更高的 level 上得到更好的服务。比如用户需要某一历史时刻精确到秒的快照,或者希望拿到一个实时增量数据去做流式处理,DataHub 都可以提供。

它是怎么做到的呢?通过将开源工具引擎化,然后进行整合。举个例子:不同数据源,通过 DBus 实时抽取出来,经过 Wormhole 流式处理后落到 HDFS Log 数据湖中,我们把所有实时增量数据都存储在这里面,这就意味着我们可以从中拿到所有的历史变更数据,而且这些数据还是实时同步的。再通过 Moonbox 在上面定义一些逻辑,当用户提出想要某一历史时刻的快照或者增量数据,就可以即时计算并提供。如果想做实时报表,需要把数据实时快照维护到一个存储里,这里我们选择 Kudu。

流式处理有很多好处,同时也有短板,比如运维成本较高、稳定性较差等。考虑到这些问题,我们在 DataHub 中设置了 Sqoop 作为 Plan B。如果实时这条线晚上出现问题,可以自动切换到 Plan B,通过传统的 Sqoop 去支持第二天 T+1 的报表。等我们找到并解决问题之后,Plan B 就会切换到暂停状态。

假设用户自己有数据源,放在 Elasticsearch 或者 Mongo 里,也希望通过 DataHub 发布出去共享给其他人使用。我们不应该把 Elasticsearch 数据或 Mongo 数据物理地拷贝到一个地方,因为首先这些数据是 NoSQL 的,数据量比较大;其次用户可能希望别人通过模糊查询的方式去使用 Elasticsearch 数据,那可能继续将数据放在 Elasticsearch 里更好。这时我们做的是通过 Moonbox 进行一个逻辑的发布,但用户不感知这个过程。

综上可以看出,DataHub 是在内部把几个开源平台常用的模式进行有机整合和封装,对外提供一致性、便捷的数据获取、发布等服务。其使用方也可以是各种不同的角色:

  • 数据拥有方可以在这里做数据审批;

  • 数据工程师可以申请数据,申请完后可以在这里对数据进行加工;

  • APP 用户可以查看 Davinci 报表;

  • 数据分析师可以直接用自己的工具去接 DataHub 出来的数据,然后做数据分析;

  • 数据用户可能希望自己做一个数据产品,DataHub 可以为他提供接口。

数据中台:宜信敏捷数据中台建设实践(中)

图 18 DataHub 架构

如图,将 DataHub 打开,来看其架构设计。从功能模块角度来看,DataHub 基于不同开源组件,实现不同功能。包括批量采集、流式采集、脱敏、标准化等,还可以基于不同的协议输出订阅。

DataHub 与其他几个组件之间的关系也是非常紧密的。它输出的数据给 DataWorks 使用,同时它又依赖中台管理、数据管理来满足其需求。

3.3.2 ADX-DataLake 实时数据湖

广义的数据湖,就是把所有数据都放在一起,先以存储和归集为主,使用的时候再根据不同数据提供不同使用方式。

我们这里提到的是一个狭义的数据湖,只支持结构化数据源和自然语言文本这两种类型的数据归集,并且有统一的方式存储。

数据中台:宜信敏捷数据中台建设实践(中)

图 19 DataLake

也就是说我们的实时数据湖加了限制,公司所有结构化数据源和自然语言文本会统一实时汇总为 UbiLog,并由 ADX-DataHub 统一对外提供访问。UbiLog 的访问和使用只能通过 ADX 提供的能力输出,因此确保了多租户、安全、权限管控。

3.3.3 ADX-DataWorks 数据工坊

主要的数据加工都是在 DataWorks 自助完成的。

数据中台:宜信敏捷数据中台建设实践(中)

图 20 DataWorks 工作流程

如图来看 DataWorks 的工作流程。首先 DataHub 数据出来之后,DataWorks 必须去接 DataHub 的数据。DataWorks 支持实时报表,我们内部使用的是 Kudu,所以把这个模式固化下来,用户就不用自己去选型,直接在上面写自己的逻辑就可以了。比如有一个实时 DM 或批量 DM,我们觉得这是一个很好的数据资产,有复用价值,希望别的业务能复用这个数据,我们就可以通过 DataHub 把它发布出去,别的业务就可以申请使用。

所以 DataHub 和 DataWorks 等组件封装而成的数据中台可以达到数据共享和数据运营的效果。中台内部包含 Kudu、Kafka、Hive、MySQL 等数据库组件,但是用户不需要自己去选型,我们已经做出了最佳选择,并将其封装成一个可直接使用的平台。

上图左侧有一个数据建模师的角色,他在 DataStar 中做模型管理和开发建设,在 DataWorks 中主要是负责逻辑和模型的创建;数据工程师不用多说,是最常见的使用 DataWorks 的角色;终端用户可以直接使用 Davinci。

数据中台:宜信敏捷数据中台建设实践(中)

图 21 DataWorks 架构

如图,将 DataWorks 打开来看它的架构,同样 DataWorks 也是通过不同的模块来支持各种不同的功能。关于这部分内容以后会有更多的文章和分享,此处不详细介绍。

3.3.4 ADX-DataStar 数据模型

数据中台:宜信敏捷数据中台建设实践(中)

图 22 DataStar 工作流程

DataStar 跟数据指标模型或数据资产相关,每个公司都有自己内部的数据建模流程和工具。DataStar 可以分为两个部分:

  • 模型设计、管理创建。对模型生命周期的管理和工艺流程的沉淀。

  • 从 DW(数仓)层到 DM(数据集市)层,支持配置化的方式,自动在底下生成对应 SQL 逻辑,而不需要用户自己去写。

DataStar 是 DW 层的事实和维度表组成的星型模型,可以最后沉淀下来。但我们认为,从 DW 层到 DM 层或 APP 层,不需要写 SQL 开发了,只需要通过选维度和配置指标的方式,就可以自动可视化配置出来。

这样的话对使用人的要求就发生了改变,需要一个建模师或者业务人员来做这个事情,给他一个基础数据层,他根据自己的需求来配置想要的指标。整个过程,数据实施人员只需要关注 ODS 层到 DW 层就可以了。

3.3.5 ADXMgt/DataMgt 中台管理 / 数据管理

数据中台:宜信敏捷数据中台建设实践(中)

图 23 ADXMgt/DataMgt

中台管理模块主要关注租户管理、项目管理、资源管理、权限管理、审批管理等。数据管理模块主要关注数据管理层或数据治理层的话题。这两个模块从不同的维度对中间的三个主要组件提供支持和产生规则制约。

3.4 ADX 架构

数据中台:宜信敏捷数据中台建设实践(中)

图 24 ADX 架构

ADX 数据中台平台几个模块之间的关联如图所示。最底下是五个开源工具,每个模块都是对这五个开源工具的有机整合和封装。从图中可以看出各组件之间的关联非常紧密,其中黑色虚线代表的是依赖关系,绿色线条代表的是数据流转的关系。

本文转载自宜信技术学院网站。

原文链接: http://college.creditease.cn/detail/251

评论

发布