US Mission Comments Flink real-time based on the number of warehouse platform practice

First, the US group reviews the evolution of real-time computing

US Mission in real-time computing Comments Evolution

In 2016, the US group review has been based on real-time calculation engine implements Storm initial platform. In early 2017, we introduced support for a particular scene Spark Streaming, mainly in data synchronization attempts scene area. At the end of 2017, the US group review real-time computing platform introduces the Flink. Compared to Storm and Spark Streaming, Flink has advantages in many aspects. We conducted this phase of the depth of the platform, the main concern is security, stability and ease of use. From the beginning of 19 years, we are committed to building solutions include a specific scene in real time the number of warehouses and machine learning to provide better support for the business.

1.jpg

Real-time computing platform

At present, the number of US corporations, reviews and real-time computing platform for the million daily active job level message volume job processing time peak reached 150 million per second, while the size of the machine has reached several thousand, and there are thousands of users are using Real-time computing services.

2.jpg

Real-time computing platform architecture

Comments are the US Mission in real-time computing platform architecture is shown below.

  • The bottom is collecting layer, which is responsible for real-time data collection users, including Binlog, back-end services and IoT log data, processed log collection teams and DB team collected data will be collected in Kafka. These data are not only involved in real-time computing, will also participate in off-line calculation.
  • Collected on the storage layer is a layer which is made except Kafka message outside the channel, but also based on the state data storage is done HDFS and HBase made based on dimensional data storage.
  • Storage layer is a layer above the engine, comprising, Storm and Flink. Real-time computing platforms provide some support for the package as well as the common packet frame assembly and the engine to the user layer.
  • On the engine layer is the platform layer, the platform layer data from three perspectives, tasks and resources to manage.
  • The top layer is the application architecture, including a number of real-time warehouse, machine learning, data synchronization and event-driven applications.

The share describes the construction of several real-time warehouse area.

3.jpg

From a functional point of view, the US group, reviews and real-time computing platform includes two functional operations and resource management aspects. Wherein the operation portion includes a job configuration, a job and a job status published three functions.

  • Configuration job, the job including the setting, and when set to run topology set;
  • 在作业发布方面,则包括版本管理、编译/发布/回滚等;
  • 作业状态则包括运行时状态、自定义指标和报警以及命令/运行时日志等。

在资源管理方面,则为用户提供了多租户资源隔离以及资源交付和部署的能力。

4.jpg

业务数仓实践

流量

前面提到,现在的美团点评实时计算平台更多地会关注在安全、易用和稳定方面,而应用上很大的一个场景就是业务数仓。接下来会为大家分享几个业务数仓的例子。

第一个例子是流量,流量数仓是流量类业务的基础服务,从业务通道而言,会有不同通道的埋点和不同页面的埋点数据,通过日志收集通道会进行基础明细层的拆分,按照业务维度划分不同的业务通道,如美团通道、外卖通道等。

基于业务通道还会进行一次更加细粒度的拆分,比如曝光日志、猜你喜欢、推荐等。以上这些包括两种使用方式,一种是以流的方式提供下游其他业务方使用,另外一方面就是做一些流量方面的实时分析。

下图中右边是流量数仓的架构图,自下向上分为四层,分别是 SDK 层,包括了前端、小程序以及 APP 的埋点;其上是收集层,埋点日志落地到 Nginx,通过日志收集通道收到 Kafka 中。在计算层,流量团队基于 Storm 能力实现了上层的 SQL 封装,并实现了 SQL 动态更新的特性,在 SQL 变更时不必重启作业。

5.jpg

广告实时效果

这里再举一个基于流量数仓的例子-广告实时效果验证。下图中左侧是广告实时效果的对比图。广告的打点一般分为请求(PV)打点、SPV(Server PV)打点、CPV(Client PV)曝光打点和 CPV 点击打点,在所有打点中都会包含一个流量的 requestID 和命中的实验路径。根据 requestID 和命中的实验路径可以将所有的日志进行 join,得到一个 request 中需要的所有数据,然后将数据存入 Durid 中进行分析,支持实际 CTR、预估 CTR 等效果验证。

6.jpg

即时配送

这里列举的另外一个业务数仓实践的例子是即时配送。实时数据在即时配送的运营策略上发挥了重要作用。以送达时间预估为例,交付时间衡量的是骑手送餐的交付难度,整个履约时间分为了多个时间段,配送数仓会基于 Storm 做特征数据的清洗、提取,供算法团队进行训练并得到时间预估的结果。这个过程涉及到商家、骑手以及用户的多方参与,数据的特征会非常多,数据量也会非常大。

7.jpg

总结

业务实时数仓大致分为三类场景:流量类、业务类和特征类,这三种场景各有不同。

  • 在数据模型上,流量类是扁平化的宽表,业务数仓更多是基于范式的建模,特征数据是 KV 存储。
  • 从数据来源区分,流量数仓的数据来源一般是日志数据;业务数仓的数据来源是业务 binlog 数据;特征数仓的数据来源则多种多样。
  • 从数据量而言,流量和特征数仓都是海量数据,每天百亿级以上,而业务数仓的数据量一般每天百万到千万级。
  • 从数据更新频率而言,流量数据极少更新,则业务和特征数据更新较多。流量数据一般关注时序和趋势,业务数据和特征数据关注状态变更。
  • 在数据准确性上,流量数据要求较低,而业务数据和特征数据要求较高。
  • 在模型调整频率上,业务数据调整频率较高,流量数据和特征数据调整频率较低。

8.jpg

二、基于 Flink 的实时数仓平台

上面为大家介绍了实时数仓的业务场景,接下来为大家介绍实时数仓的演进过程和美团点评的实时数仓平台建设思路。

传统数仓模型

为了更有效地组织和管理数据,数仓建设往往会进行数据分层,一般自下而上分为四层:ODS(操作数据层)、DWD(数据明细层)、DWS(汇总层)和应用层。即时查询主要通过 Presto、Hive 和 Spark 实现。

9.jpg

实时数仓模型

实时数仓的分层方式一般也遵守传统数据仓库模型,也分为了 ODS 操作数据集、DWD 明细层和 DWS 汇总层以及应用层。但实时数仓模型的处理的方式却和传统数仓有所差别,如明细层和汇总层的数据一般会放在 Kafka 上,维度数据一般考虑到性能问题则会放在 HBase 或者 Tair 等 KV 存储上,即席查询则可以使用 Flink 完成。

10.jpg

准实时数仓模型

在以上两种数仓模型之外,我们发现业务方在实践过程中还有一种准实时数仓模型,其特点是不完全基于流去做,而是将明细层数据导入到 OLAP 存储中,基于 OLAP 的计算能力去做汇总并进行进一步的加工。

11.jpg

实时数仓和传统数仓的对比

实时数仓和传统数仓的对比主要可以从四个方面考虑:

  • 第一个是分层方式,离线数仓为了考虑到效率问题,一般会采取空间换时间的方式,层级划分会比较多;则实时数仓考虑到实时性问题,一般分层会比较少,另外也减少了中间流程出错的可能性。
  • 第二个是事实数据存储方面,离线数仓会基于 HDFS,实时数仓则会基于消息队列(如 Kafka)。
  • 第三个是维度数据存储,实时数仓会将数据放在 KV 存储上面。
  • 第四个是数据加工过程,离线数仓一般以 Hive、Spark 等批处理为主,而实时数仓则是基于实时计算引擎如 Storm、Flink 等,以流处理为主。

12.jpg

实时数仓建设方案对比

下图中对于实时数仓的两种建设方式,即准实时数仓和实时数仓两种方式进行了对比。它们的实现方式分别是基于 OLAP 引擎和流计算引擎,实时度则分别是分钟和秒级。

  • 在调度开销方面,准实时数仓是批处理过程,因此仍然需要调度系统支持,虽然调度开销比离线数仓少一些,但是依然存在,而实时数仓却没有调度开销。
  • 在业务灵活性方面,因为准实时数仓基于 OLAP 引擎实现,灵活性优于基于流计算的方式。
  • 在对数据晚到的容忍度方面,因为准实时数仓可以基于一个周期内的数据进行全量计算,因此对于数据晚到的容忍度也是比较高的,而实时数仓使用的是增量计算,对于数据晚到的容忍度更低一些。
  • 在扩展性方面,因为准实时数仓的计算和存储是一体的,因此相比于实时数仓,扩展性更弱一些。
  • 在适用场景方面,准实时数仓主要用于有实时性要求但不太高、数据量不大以及多表关联复杂和业务变更频繁的场景,如交易类型的实时分析,实时数仓则更适用于实时性要求高、数据量大的场景,如实时特征、流量分发以及流量类型实时分析。

总结一下,基于 OLAP 引擎的建设方式是数据量不太大,业务流量不太高情况下为了提高时效性和开发效率的一个折中方案,从未来的发展趋势来看,基于流计算的实时数仓更具有发展前景。

13.jpg

一站式解决方案

从业务实践过程中,我们看到了业务建设实时数仓的共同需求,包括发现不同业务的元数据是割裂的,业务开发也倾向于使用 SQL 方式同时开发离线数仓和实时数仓,需要更多的运维工具支持。因此我们规划了一站式解决方案,希望能够将整个流程贯通。

这里的一站式解决方案主要为用户提供了数据开发工作平台、元数据管理。同时我们考虑到业务从生产到应用过程中的问题,我们 OLAP 生产平台,从建模方式、生产任务管理和资源方面解决 OLAP 生产问题。左侧是我们已经具备数据安全体系、资源体系和数据治理,这些是离线数仓和实时数仓可以共用的。

14.jpg

为何选择 Flink?

实时数仓平台建设之所以选择 Flink 是基于以下四个方面的考虑,这也是实时数仓方面关注的比较核心的问题。

  • 第一个是状态管理,实时数仓里面会进行很多的聚合计算,这些都需要对于状态进行访问和管理,Flink 在这方面比较成熟。
  • 第二个是表义能力,Flink 提供极为丰富的多层次 API,包括 Stream API、Table API 以及 Flink SQL。
  • 第三个是生态完善,实时数仓的用途广泛,用户对于多种存储有访问需求,Flink 对于这方面的支持也比较完善。
  • 最后一点就是 Flink 提供了流批统一的可能性。

15.jpg

实时数仓平台

建设思路

实时数仓平台的建设思路从外到内分为了四个层次,我们认为平台应该做的事情是为用户提供抽象的表达能力,分别是消息表达、数据表达、计算表达以及流和批统一。

16.jpg

实时数仓平台架构

如下图所示的是美团点评的实时数仓平台架构,从下往上看,资源层和存储层复用了实时计算平台的能力,在引擎层则会基于 Flink Streaming 实现一些扩展能力,包括对 UDF 的集成和 Connector 的集成。再往上是基于 Flink SQL 独立出来的 SQL 层,主要负责解析、校验和优化。在这之上是平台层,包括开发工作台、元数据、UDF 平台以及 OLAP 平台。最上层则是平台所支持的实时数仓的应用,包括实时报表、实时 OLAP、实时 Dashboard 和实时特征等。

17.jpg

消息表达-数据接入

在消息表达层面,因为 Binlog、埋点日志、后端日志以及 IoT 数据等的数据格式是不一致的,因此美团点评的实时数仓平台提供数据接入的流程,能够帮助大家把数据同步到 ODS 层。这里主要实现了两件事情,分别是统一消息协议和屏蔽处理细节。

如下图左侧是接入过程的一个例子,对于 Binlog 类型数据,实时数仓平台还为大家提供了分库分表的支持,能够将属于同一个业务的不同的分库分表数据根据业务规则收集到同一个 ODS 表中去。

18.jpg

计算表达-扩展 DDL

美团点评实时数仓平台基于 Flink 扩展了 DDL,这部分工作的主要目的是建设元数据体系,打通内部的主流实时存储,包括 KV 数据、OLAP 数据等。由于开发工作台和元数据体系是打通的,因此很多数据的细节并不需要大家在 DDL 中明确地声明出来,只需要在声明中写上数据的名字,和运行时的一些设置,比如 MQ 从最新消费还是最旧消费或者从某个时间戳消费即可,其他的数据访问方式是一致的。

19.jpg

计算表达-UDF 平台

对于 UDF 平台而言,需要从三个层面考虑:

  • 首先是数据安全性。之前的数仓建设过程中,用户可以上传 Jar 包去直接引用 UDF,这样做是有危险性存在的,并且我们无法知道数据的流向。从数据安全的角度来考虑,平台会进行代码审计和血缘关系分析,对于历史风险组件或者存在问题的组件可以进行组件收敛。
  • 第二个层面,在数据安全基础上我们还会关注 UDF 的运行质量,平台将会为用户提供模板、用例以及测试的管理,为用户屏蔽编译打包、Jar 包管理的过程,并且会在 UDF 模板中进行指标日志的埋点和异常处理。
  • 第三个层面是 UDF 的复用能力,因为一个业务方开发的 UDF,其他业务方很可能也会使用,但是升级过程中可能会带来不兼容的问题,因此,平台为业务提供了项目管理、函数管理和版本管理的能力。

UDF 的应用其实非常广泛,UDF 平台并不是只支持实时数仓,也会同时支持离线数仓、机器学习以及查询服务等应用场景。下图中右侧展示的是 UDF 的使用案例,左图是 UDF 的开发流程,用户只需要关心注册流程,接下来的编译打包、测试以及上传等都由平台完成;右图是 UDF 的使用流程中,用户只需要声明 UDF,平台会进行解析校验、路径获取以及在作业提交的时候进行集成。

20.jpg

实时数仓平台-Web IDE

最后介绍一下实时数仓平台的开发工作台,以 Web IDE 的形式集成了模型、作业以及 UDF 的管理,用户可以在 Web IDE 上以 SQL 方式开发。平台会对 SQL 做一些版本的管理,并且支持用户回退到已部署成功的版本上去。

21.jpg

三、未来发展与思考

资源自动调优

从整个实时计算角度来考虑,目前美团点评的实时计算平台的节点数已经达到了几千台,未来很可能会达到上万台,因此资源优化这件事情很快就会被提上日程。由于业务本身的流量存在高峰和低谷,对于一个实时任务来说,可能在高峰时需要很多资源,但是在低谷时并不需要那么多资源。

另外一方面,波峰本身也是会发生变化的,有可能随着业务的上涨使得原来分配的资源数量不够用。因此,资源自动调优有两个含义,一个是指能够适配作业的高峰流量上涨,自动适配 Max 值;另外一个含义是指使得作业能够在高峰过去之后自动适应流量减少,能够快速缩容。我们可以通过每个任务甚至是算子的历史运行情况,拟合得到算子、流量与资源的关系函数,在流量变化时同步调整资源量。

These are resource optimization ideas, in addition also need to consider how when after the completion of the optimization of resources should be utilized. In order to ensure availability, real-time and off-line tasks usually deployed separately, otherwise the bandwidth, IO could be played off-line computing tasks in real-time resulting in delay. And from the point of view of resource usage, you need to consider the deployment of real-time and off-line mixing, or streamed to deal with some real-time requirements are not very high task. This requires more fine-grained resource isolation and quicker resource release.

22.jpg

Promote real-time way to upgrade the number of warehouse construction

Building real time data warehouse is generally divided into several steps:

  • First, the proposed business needs, will conduct follow-up model design, business logic development and the underlying technology. US group review of the number of real-time warehouse construction technology idea is to achieve a unified expression, so that business logic development concerns, while a logical development can be achieved automatically build based on the configuration of the means.
  • Then a layer of intelligent modeling is based on business needs, designed to automate the modeling process.

Currently, the US group reviews the number of real-time warehouse platform construction work has focused on the level of expression of unity, there is still a long way to go from the ideal state.

23.jpg

 

 

More big data, flink practice cases please see the original: https://developer.aliyun.com/article/741468?utm_content=g_1000098169

Guess you like

Origin www.cnblogs.com/huwling/p/12156204.html