一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

前言

Apache Flink 已经被业界公认是最好的流计算引擎。然而 Flink 其实并不是一个仅仅局限于做流处理的引擎。Apache Flink 的定位是一套兼具流、批、机器学习等多种计算功能的大数据引擎。

在最近的一段时间,Flink 在批处理以及机器学习等诸多大数据场景都有长足的突破。一方面Flink 的批计算在经过阿里的优化后有了数量级的提升。另一方面,Flink 社区在 tableAPI,Python,以及 ML 等诸多领域都在逐步发力,持续提升用户做 Data science 和 AI 计算的体验。此外,Flink也在逐步提升和其他开源软件融合的体验,包括 Hive,还有 Notebook(Zeppelin, Jupyter)等等。

Flink的学习路线

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

Flink在阿里、滴滴、字节跳动、美团、唯品会、携程的发展现状是什么样的?

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

1.Flink 在阿里的现状

基于 Apache Flink 在阿里巴巴搭建的平台于 2016 年正式上线,并从阿里巴巴的搜索和推荐这两大场景开始实现。目前阿里巴巴所有的业务,包括阿里巴巴所有子公司都采用了基于 Flink 搭建的实时计算平台。同时 Flink 计算平台运行在开源的 Hadoop 集群之上。采用 Hadoop 的 YARN 做为资源管理调度,以 HDFS 作为数据存储。因此,Flink 可以和开源大数据软件 Hadoop 无缝对接。

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

目前,这套基于 Flink 搭建的实时计算平台不仅服务于阿里巴巴集团内部,而且通过阿里云的云产品 API 向整个开发者生态提供基于 Flink 的云产品支持。

2.Apache Flink 在滴滴

在滴滴,所有的数据基本上可以分为四个大块:

1、轨迹数据:轨迹数据和订单数据往往是业务方特别关心的。同时因为每一个用户在打车以

后,都必须要实时的看到自己的轨迹,所以这些数据有强烈的实时需求。

2、交易数据:滴滴的交易数据,
3、埋点数据:滴滴各个业务方的埋点数据,包括终端以及后端的所有业务数据,

4、日志数据:整个的日志系统都有一些特别强烈的实时需求。

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

3.字节跳动Jstorm到Apache Flink的迁移实践
下面这幅图展示的是字节跳动公司的业务场景

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

首先,应用层有广告,AB 测试,推送,数据仓库等业务;其次中间层针对 python 用户抽象出来一个模板,用户只需要在模板里写自己的业务代码,结合一个 yaml 配置将 spout, bolt 组成DAG 图;最后将其跑在 Jstorm 计算引擎上。

大概在 17 年 7 月份左右,当时 Jstorm 集群个数大概 20 左右,集群规模达到 5000 机器。

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

4.Apache Flink 在美团的实践与应用
美团实时计算平台现状和背景

实时平台架构

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

上图呈现的是当前美团实时计算平台的简要架构。最底层是数据缓存层,可以看到美团测的所有日志类的数据,都是通过统一的日志收集系统收集到 Kafka。Kafka 作为最大的数据中转层,支撑了美团线上的大量业务,包括离线拉取,以及部分实时处理业务等。在数据缓存层之上,是一个引擎层,这一层的左侧是我们目前提供的实时计算引擎,包括 Storm 和 Apache Flink(以下简称 Flink)。Storm 在此之前是 standalone 模式的部署方式,Flink 由于其现在运行的环境,美团选择的是 On YARN 模式,除了计算引擎之外,我们还提供一些实时存储功能,用于存储计算的中间状态、计算的结果、以及维度数据等,目前这一类存储包含 Hbase、Redis 以及 ES。在计算引擎之上,是趋于五花八门的一层,这一层主要面向数据开发的同学。实时数据开发面临诸多问题,例如在程序的调试调优方面就要比普通的程序开发困难很多。在数据平台这一层,美团面向用户提供的实时计算平台,不仅可以托管作业,还可以实现调优诊断以及监控报警,此外还有实时数据的检索以及权限管理等功能。除了提供面向数据开发同学的实时计算平台,美团现在正在做的事情还包括构建元数据中心。这也是未来我们想做 SQL 的一个前提,元数据中心是承载实时流系统的一个重要环节,我们可以把它理解为实时系统中的大脑,它可以存储数据的 Schema,Meta。架构的最顶层就是我们现在实时计算平台支撑的业务,不仅包含线上业务日志的实时查询和检索,还涵盖当下十分热门的实时机器学习。机器学习经常会涉及到搜索和推荐场景,这两个场景最显著特点:
一、会产生海量实时数据;
二、流量的 QPS 相当高。此时就需要实时计算平台承载部分实时特征的提取工作,实现应用的搜索推荐服务。还有一类是比较常见的场景,包括实时的特征聚合,斑马 Watcher(可以认为是一个监控类的服务),实时数仓等。

以上就是美团目前实时计算平台的简要架构。


5.Apache Flink 在唯品会的实践
本文主要内容主要包括以下几个方面:

1. 唯品会实时平台现状

2. Apache Flink(以下简称 Flink)在唯品会的实践

3. Flink On K8S

4. 后续规划

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

6.携程基于 Apache Flink 的实时特征平台

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

特征平台系统架构

现在的架构是标准 lamda 架构,离线部分由 spark sql + dataX 组成。现在使用的是 KV 存储系统Aerospike,跟 redis 的主要区别是使用 SSD 作为主存,我们压测下来大部分场景读写性能跟 redis在同一个数据量级。

实时部分:使用 flink 作为计算引擎,介绍一下用户的使用方式:

• 注册数据源:目前支持的实时数据源主要是 Kafka 和 Aerospike,其中 Aerospike 中的数据如果是在平台上配置的离线或者实时特征,会进行自动注册。Kafka 数据源需要上传对应的schemaSample 文件

• 计算逻辑:通过 SQL 表达

• 定义输出:定义输出的 Aerospike 表和可能需要的 Kafka Topic,用于推送 Update 或者 Insert 的数据的 key用户完成上面的操作后,平台将所有信息写入到 json 配置文件。下一步平台将配置文件和之前准备好的 flinkTemplate.jar(包含所有平台所需的 flink 功能)提交给 yarn,启动 flink job。

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

由于文章内容限制,案例篇的内容我也是做了一个简单的介绍,技术篇的内容我也不做过多的介绍了,大家需要这份【Flink实践手册】技术文档的话,可以转发关注小编,私信小编“文档”来得到获取方式把~~~~

一文带你了解阿里 、滴滴、字节跳动、美团、携程的Flink核心技术

大家加油好好学习哈,感谢大家支持!

发布了29 篇原创文章 · 获赞 17 · 访问量 6609

猜你喜欢

转载自blog.csdn.net/qq_1813353297/article/details/105227648