Flink在美团的实践与应用

  • 时间:
  • 浏览:1
  • 来源:万人炸金花_万人炸金花官网

1.业务场景:

另外倘若时候提到说在开发实时作业的时候,调优和诊断是三个 比较难的痛点,倘若用户都在不难 去查看分布式的日志,不难 来很多也提供了一套统一的外理方案。这套外理方案主倘若针对日志和Metrics,会在针对引擎那一层做一些日志和Metrics的上报,不难 它会通过统一的日志分类分类整理系统,将那些原始的日志,还有Metrics汇集到Kafka那一层。今后Kafka一些层让我们我们能才能发现它有三个 下游,一方面是做日志到ES的数据同步,目的励志的话 是说才能进入日志中心去做一些日志的检索,另外一方面是通过一些聚合外理流转到写入到OpenTSDB把数据做依赖,这份聚合后的数据会做一些查询,一方面是Metrics的查询展示,另外一方面倘若包括实做的一些相关的报警。

容灾因为让我们我们对考虑的无须多,比如说有不难 因为三个 机房的所有的节点都挂掉了,因为是无法访问了,虽然它是三个 小概率的事件,但它也是会存在的。不难 来很多现在也会考虑做多机房的一些部署,包括还有Kafka的一些热备。

应用场景,重要性不同;

下面会给让我们我们讲三个 Flink在美团的真实使用的案例。第三个 是Petra,Petra虽然是三个 实时指标的三个 聚合的系统,它虽然是面向公司的三个 统一化的外理方案。它主要面向的业务场景倘若基于业务的时间去统计,还有计算一些实时的指标,要求励志的话 是低下行速率 ,他还有三个 倘若说,因为它是面向的是通用的业务,因为业务因为是各人 会有各人 不同的维度,每三个 业务因为含有了包括应用通道机房,还有一些的各人 应用各个业务特有的一些维度,或者那些维度因为涉及到比较多,另外三个 倘若说它因为是倘若业务时要去做一些复合的指标的计算,比如说最常见的交易成功率,他因为时要去计算支付的成功数,还有和下单数的比例。另外三个 倘若说统一化的指标聚合因为面向的还是三个 系统,比如说是一些B端因为是R段的一些监控类的系统,不难 系统对于指标系统的诉求,倘若说倘若指标聚合才能最真最实时最精确的才能产生一些结果,数据保证说它的下游系统才能真实的监控到当前的信息。右边图是我当三个 Metrics展示的三个 事例。能才能看一遍一些虽然跟时候讲也是比较类事的,倘若说含有了业务的不同维度的一些指标汇聚的结果。

第二类应用倘若机器学习的三个 场景,机器学习的场景因为会依赖离线的形态学 数据以及实时的形态学 数据。三个 是基于现有的离线场景下的形态学 提取,经过了批外理,流转到了离线的集群。另外三个 倘若近线模式,近线模式出的数据倘若现有的从日志分类分类整理系统流转过来的统一的日志,经过Flink的外理,倘若包括流的关联以及形态学 的提取,再做模型的训练,流转到最终的训练的集群,训练的集群会产出P的形态学 ,还有都在Delta的形态学 ,最终将那些形态学 影响到线上的线上的形态学 的三个 训练的三个 服务上。这是三个 比较常见的,比如说比较倘若通用的也是比较通用的三个 场景,目前励志的话 主要应用的方因为含有了搜索还有推荐,以及一些一些的业务。

为了适配这两类MQ做了不同的事情,对于线上的MQ,期望去做一次同步多次消费,目的是外理对线上的业务造成影响,对于的生产类的Kafka倘若线下的Kafka,做了一些地址的地址的屏蔽,还有基础基础的一些配置,包括一些权限的管理,还有指标的分类整理。

2.Exactlyonce的精确性保障

下面带让我们我们来看一下,美团从去年投入生产过程中都遇到了那些问题报告 ,以及一些外理方案,分为下面三个 累积:

让我们我们的数据源主倘若Kafka,读写Kafka是一类非常常见的实时流外理避不开的三个 内容,而Kafka两种 的集群规模是非常比较大的,或者节点的故障再次出现是三个 常态问题报告 ,在此基础上让我们我们对节点故障进行了一些容错,比如说节点挂掉因为是数据均衡的时候,Leader会切换,那两种 Flink的读写对Leader的切换容忍度不难 不难 高,在此基础上让我们我们对一些特定场景的,以及一些特有的异常做的一些优化,进行了一些重试。

在用Flink去做实时指标复核的系统的时候,着重从这几方面去考虑了。第三个 方面是说精确的计算,包括使用了FLink和CheckPoint的机制去保证说我时要做到不丢不重的计算,第三个 首先是由统一化的Metrics流入到三个 预聚合的模块,预聚合的模块主要去做一些初始化的一些聚合,其中的为那些会分预聚合和全量聚合主要的外理一类问题报告 ,包括就时候那位同学问的三个 问题报告 ,倘若数据倾斜的问题报告 ,比如说在热点K存在的时候,当前的外理方案也是通过预聚合的最好的方法去做一些缓冲,让尽量把K去打散,再聚合全量聚合模块去做汇聚。那虽然也是才能才能外理一累积问题报告 ,所时候面也考虑说在性能的优化上包括去探索状况存储的性能。下面励志的话 还是含有晚到数据的容忍能力,因为指标汇聚因为时候也提到说要含有一些复合的指标,不难 符合的指标所依赖的数据因为来自于不同的流,即便来自于同三个 流,因为每三个 数据上报的时候,因为也会有晚到的状况存在,那时候时要去对数据关联做晚到的容忍,容忍的一方面是说能才能设置晚到的Lateness的延迟,此人 面是能才能设置窗口的长度,或者其虽然现实的应用场景上,虽然还有一方面考虑倘若说除了去尽量的去拉长时间,时要考虑真正的计算成本,不难 来很多在这方面也做了一些权衡,不难 指标基本倘若经过全量聚合时候,聚合结果会回写Kafka,经过数据同步的模块写到OpenTSDB去做,最后去grafana那做指标的展示,此人 面因为去应用到通过Facebook包同步的模块去同步到报警的系统上边去做一些指标,基于指标的报警。

下图是当前的日志的一些查询,它记录了,因为作业在挂掉时候,每三个 ApplicationID因为会变化,不难 基于作业唯一的唯一的主键作业名去搜集了所有的作业,从创建之初到当前运行的日志,不难 能才能允许用户的跨Application的日志查询。

YARN打标签,节点物理隔离;

本文转自Apache Flink China博客,作者:刘迪珊,原文链接:Flink在美团的实践与应用

智能调度目的也是为了外理资源不均的问题报告 ,现在普通的调度策略倘若基于CPU,基于内存去调度的。除此之外,在生产过程中也发现了一些一些的问题报告 ,比如说Flink是会依赖本地磁盘,进行依赖本地磁盘做本地的状况的存储,不难 来很多磁盘IO,还有磁盘的容量,也是一类考虑的问题报告 点,除此之外还包括网卡流量,因为每个业务的流量的状况是不一样的,分配进来会因为流量的高峰,把某三个 网卡打满,从而影响一些业务,不难 来很多期望励志的话 是说做一些智能调度化的事情。目前暂时能做到的是从cpu和内存两方面,未来会从一些方面做一些更优的调度策略。

3.维度计算中数据倾斜

与Storm不同的是,知道Storm在遇到异常的时候是非常简单粗暴的,比如说有存在了异常,因为用户不难 在代码中进行比较规范的异常外理,或者不难 关系,因为worker会重启作业都在继续执行,或者他保证的是At-Least-Once倘若的语义,比如说三个 网络超时的异常对他而言影响因为并不难 不难 大,或者Flink不同的是他对异常的容忍度是非常的苛刻的,那时候就考虑的是比如说会存在节点因为是网络的故障,那JobManager单点问题报告 因为倘若三个 瓶颈,JobManager那个因为挂掉励志的话 ,不难 因为对整个作业的影响倘若不可回复的,不难 来很多考虑了做HA,另外三个 倘若会去考虑一些因为运维的因素而因为的那作业,还有除此之外,因为有一些用户作业是不难 开启CheckPoint,但因为是因为节点因为是网络故障因为挂掉,希望会在平台内层做一些自动拉起的策略,去保证作业运行的稳定性。

下图是现在提供的产品化的Petra的三个 展示的机示意图,能才能看一遍目前励志的话 倘若定义了某一些常用的算子,以及维度的配置,允许用户进行配置话的外理,直接去才能获取到他期望要的指标的三个 展示和汇聚的结果。目前还在探索说为Petra基于Sql做一些事情,因为不难 来很多用户也比较倘若在倘若习惯上才能才能倾向于说我时要去写Sql去完成倘若的统计,不难 来很多也会基于此说依赖Flink的两种 的对SQl还有TableAPI的支持,也会在Sql的场景上进行一些探索。

可靠性、延迟需求不同;

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

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

未来励志的话 因为也是通过也是期望在这三方面进行做一些更多的事情,时候也提到了包括状况的管理,第三个 是状况的统一的,比如说Sql化的统一的管理,希望有统一的配置,帮用户去选择一些期望的回滚点。另外三个 倘若大状况的性能优化,因为比如说像做一些流量数据的双流的关联的时候,现在也遇到了一些性能瓶颈的问题报告 ,对于说啊基于内存型的状况,基于内存型的数据的外理,以及基于RocksDB的状况的外理,做过性能的比较,发现虽然性能的差异还是有一些大的,不难 来很多希望说在基于RocksDBBackend的上边才能去尽量去更多的做一些优化,从而提升作业外理的性能。第二方面倘若Sql,Sql励志的话 应该是每三个 位倘若当前因为各个公司都在做的三个 方向,因为时候都在对Sql做一些探索,包括提供了基于Storm的一些Sql的表示,或者因为对于时候励志的话 对于与语义的表达因为会有一些不足英文,不难 来很多希望说在基于Flink可去外理那些方面的事情,以及包括Sql的并发度的一些配置的优化,包括Sql的查询的一些优化,都希望说在Flink未来才能去优化更多的东西,去真正能使Sql应用到生产的环境。

2.上下游容错

在上边那些痛点和问题报告 的背景下,美团从去年时候时候刚开始 进行Flink的探索,关注点主要有以下三个 方面:

美团实时计算平台的现状是作业量现在因为达到了近万,集群的节点的规模是千级别的,天级消息量因为达到了万亿级,高峰期的消息量才能达到千万条每秒。

1.资源隔离的考虑:分场景、按业务

离线DataNode与实时计算节点的隔离;

在实践过程中,为了外理作业管理的一些问题报告 ,减少用户开发的一些成本,让我们我们做了一些平台化的工作,下图是三个 作业提交的界面展示,包括作业的配置,作业生命周期的管理,报警的一些配置,延迟的展示,都在集成在实时计算平台的。

高峰期不同,运维时间不同;

在监控上让我们我们也做了一些事情,对于实时作业来讲,对监控的要求会更高,比如说在作业延迟的时候对业务的影响也比较大,不难 来很多做了一些延迟的报警,包括作业状况的报警,比如说作业存活的状况,以及作业运行的状况,还有未来会做一些自定义Metrics的报警。自定义Metrics是未来会考虑基于作业外理两种 的内容性,做一些可配置化的一些报警。

3.容灾

1.节点/网络故障

下图是当前某三个 作业的三个 可支持跨天维度的Metrics的三个 查询的页面。能才能看一遍说因为是才能通过纵向的对比,能才能发现除了作业在某三个 时间点是因为那些状况因为的?比如说延迟啊倘若容易帮用户判断一些他的做作业的一些问题报告 。除了作业的运行状况之外,也会先倘若分类整理一些节点的基本信息作为横向的对比

4.对晚到数据的容忍能力

另外一方面励志的话 倘若会进行新的场景的也在做新的场景的一些探索,期望是比如说包括时候也提到说除了流式的外理,也期望说把离线的场景下的数据进行一些合并,通过统一的Sql的API去提供给业务做更多的服务,包括流外理,还有批外理的结合。

美团在调研使用Flink时候遇到了一些痛点和问题报告 :

2.资源隔离的策略: