Lyft 基于 Flink 的大规模准实时数据分析平台(附FFA大会视频)

  • 时间:
  • 浏览:0

本次分享主要分为好几条 方面:

Flink 和 ETL 是通过事件时间驱动的分区感测实现同步的。S3 采用的是比较常见的分区格式,最后的分区是由时间戳决定的,时间戳则是基于 EventTime 的,另一好几条 多的好占据 于才能带来 Flink 和 ETL 并肩的时间源,另一好几条 多有有利于同步操作。此外,基于事件时间才能使得其他回填操作和主操作实现累似 的结果。Flink 防止完每个小时的事件也有向事件分区写入一好几条 多 Success 文件,这代表该小时的事件机会防止完毕,ETL 都可以 对于该小时的文件进行操作了。

Lyft 准实时数据分析平台才能 每天防止千亿级事件,才能做到数据延迟小于 5 分钟,而链路中使用的组件确保了数据完整,并肩基于 ETL 去冗余操作实现了数据单一性保证。

在分析平台这主次,事件会流向 AWS 的 Kinesis 上端,这里的 Kinesis 与 Apache Kafka 非常累似 ,是三种 AWS 上专有的 PubSub 服务,而那些数据流也有量化成文件,那些文件则也有存储在 AWS 的 S3 上端,而且本来批防止任务也有弹出其他数据子集。在分析系统方面,Lyft 使用的是开源社区中比较活跃的 presto 查询引擎。Lyft 数据分析平台的用户主要有三种,即数据工程师、数据分析师以及机器学习专家和深度图学习专家,其他人往往也有通过分析引擎实现与数据的交互。

上述的数据链路也会做 ETL 多级压缩和去重工作,主本来 Parquet 原始数据会经过每小时的智能压缩去重的 ETL 工作,产生更大的 Parquet File。同理,对于小时级别压缩去重缺乏的文件,每天也有再进行一次压缩去重。对于新产生的数据会有一好几条 多原子性的分区交换,也本来说当产生新的数据时候,ETL Job 会让 Hive metastore 里的表分区指向新的数据和分区。这里的过程使用了启发性算法来分析那些事件才能 要经过压缩和去重以及压缩去重的时间间隔级别。此外,为了满足隐私和合规的要求,其他 ETL 数据会被保存数以年计的时间。

摘要:如可基于 Flink 搭建大规模准实时数据分析平台?在 Flink Forward Asia 2019 上,来自 Lyft 公司实时数据平台的徐赢博士和计算数据平台的高立博士分享了 Lyft 基于 Apache Flink 的大规模准实时数据分析平台。

如下好几条 多图所示的是 Lyft 准实时数据分析平台的基于数据回填的平台容错机制。对于 Flink 而言,机会平台的要求是达到准实时,而 Flink 的 Job 总爱再次出现失效的时候机会会超过一定的时间,当 Job 重新始于时候就会形成好几条 多数据流,主数据流总爱从最新的数据始于往下执行,附加数据流则都可以 回溯到时候中断的位置进行执行直到中断始于的位置。另一好几条 多的好处是既能保证主数据流的准实时特性,并肩通过回填数据流保证数据的完整。

ETL 分区感应才能降低成本和延迟,成功文件则才能表示那些时候防止完成。此外,S3 文件布局对性能提升的影响还是非常大的,目前而言引入熵数还属于经验总结,后续 Lyft 也会对于那些进行总结分析而且公开。机会使用 Parquet 数据,而且对于 Schema 的兼容性要求就非常高,机会引入了不兼容事件则会使得下游的 ETL 瘫痪,而且 Lyft 机会做到的本来在数据链路上游对于 Schema 的兼容性进行检查,检测并拒绝用户提交不兼容的 Schema。

利用 Flink 才能准实时注入 Parquet 数据,使得交互式查询体验为机会。并肩,Flink 在 Lyft 中的应用本来地方本来需要 提高,觉得 Flink 在大多数情况报告的延时都才能得到保证,而且重启和部署的时候仍然机会造成分钟级别的延时,这会对于 SLO 产生一定影响。

Lyft 是占据 北美的一好几条 多共享交通平台,和其他人所熟知的 Uber 和国内的滴滴累似 ,Lyft 也为民众提供共享出行的服务。Lyft 的宗旨是提供世界最好的交通方案来改善其他人的生活。

作者: 徐赢、高立

以上的方式会造成太多数量的小文件什么的什么的问题 ,机会数据链路支持成千上万种文件,而且使用了 Subtasks 记录本地事件权重,并通过全局记录聚合器来计算事件全局权重并广播到下游去。而 Operator 接收到事件权重时候机会将事件分配给 Sink。

ETL 除了去重和压缩的挑战之外,还总爱会遇到 Schema 的演化挑战。Schema 演化的挑战分为好几条 多方面,即不同引擎的数据类型、嵌套特性的演变、数据类型演变对去重逻辑的影响。

Lyft 的准实时数据分析平台在 Parquet 方面做了本来优化,比如文件数据值大小范围统计信息、文件系本来计信息、基于主键数据值的排序加快 presto 的查询波特率以及二级索引的生成。

重要:文末「阅读原文」可查看 Flink Forward Asia 大会视频。

在新的准实时平台架构中,Lyft 采用 Flink 实现流数据持久化。Lyft 使用云端存储,而使用 Flink 直接向云端写三种叫做 Parquet 的数据格式,Parquet 是三种列数据存储格式,才能有效地支持交互式数据查询。Lyft 在 Parquet 原始数据上架构实时数仓,实时数仓的特性被存储在 Hive 的 Table 上端,Hive Table 的 metadata 存储在 Hive metastore 上端。

Flink 三种的水印何必 能直接用到 Lyft 的应用场景当中,主本来机会当 Flink 防止完时间戳何必 意味着 它机会被持久化到存储当中,此时就才能 引入分区水印的概念,另一好几条 多一来每个 Sink Source 就才能知道当前写入的分区,而且维护一好几条 多分区 ID,而且通过 Global State Aggregator 聚合每个分区的信息。每个 Subtasks 才能知道全局的信息,并将水印定义为分区时间戳中最小的一好几条 多。

Lyft 基于 Apache Flink 实现的大规模准实时数据分析平台具有哪几条特点:

平台会对于原始数据做多级的非阻塞 ETL 加工,每一级也有非阻塞的(nonblocking),主本来压缩和去重的操作,从而得到更高质量的数据。平台主要使用 Apache Airflow 对于 ETL 操作进行调度。所有的 Parquet 格式的原始数据都都可以 被 presto 查询,交互式查询的结果将才能以 BI 模型的方式显示给用户。

下图都可以 想看 当事件到达 Kinesis 时候就会被存储成为 EventBatch。通过 Flink-Kinesis 连接器都可以 将事件提取出来并送到 FlatMap 和 Record Counter 上端,FlatMap 将事件打撒并送到下游的 Global Record Aggregator 和 Tagging Partitioning 上端,每当做 CheckPoint 也有关闭文件并做一好几条 多持久化操作,针对于 StreamingFileSink 的特性,平台设置了每三分钟做一次 CheckPoint 操作,另一好几条 多都可以 保证当事件进入 Kinesis 连接器时候在三分钟之内就才能持久化。

ETL 主要好几条 多多特点,分别是及时性和去重,而 ETL 的主要功能在于去重和压缩,最重要的是在非阻塞的情况报告下就进行去重。前面也提到 Smart ETL,所谓 Smart 本来智能感知,才能 好几条 多相应的信息来引导 Global State Aggregator,分别是分区完整标识 SuccessFile,在每个分区还有哪几条相应的 States 统计信息才能告诉下游的 ETL 如可去重和压缩以及操作的频率和范围。

Lyft 好的反义词要基于 Apache Flink 实现大规模准实时数据分析平台,是机会以往的平台占据 其他什么的什么的问题 。比如较高的延迟,导入数据无法满足准实时查询的要求;而且基于 Kinesis Client Library 的流式数据导入性能缺乏;导入数据占据 太多小文件意味着 下游操作性能缺乏;数据 ETL 大多是高延迟5天多步的架构;此外,以往的平台对于嵌套数据提供的支持也缺乏。

Lyft 的流数据都可以 大致分为三类,秒级别、分钟级别和不高于 5 分钟级别。分钟级别流数据中,自适应定价系统、欺诈和异常检测系统是最常用的,此外还有 Lyft 最新研发的机器学习特性工程。不高于 5 分钟级别的场景则包括准实时数据交互查询相关的系统。

对于 ETL 而言,基于数据回填的平台容错机制则表现在 Airflow 的幂等调度系统、原子压缩和 HMS 交换操作、分区自建自修复体系和 Schema 整合。

Lyft 对于准实时数据分析平台也有其他设想。

数据科学家和数据工程师在建模也有才能 进行自发的交互式查询,此外,平台也会提供实时机器学习模型正确性预警,以及实时数据面板来监控供需市场健康情况报告。

查看FFA大会视频。

Lyft 的数据存储系统觉得都可以 认为是数据湖,对于 S3 而言,Lyft 也有其他性能的优化考量。S3 三种内部也是有分区的,为了使其具有并行的读写性能,换成了 S3 的熵数前缀,在分区上端也增加了标记文件,这三种做法才能极大地降低 S3 的 IO 性能的影响。标识符对于都可以 触发 ETL 操作会产生影响,与此并肩也是对于 presto 的集成,才能让 presto 决定那些情况报告下才能扫描哪几条个文件。

如下图所示的是 Lyft 时候的数据分析平台架构。Lyft 的大主次流数据也有来自于事件,而事件产生的来源主要有三种,分别是手机 APP 和后端服务,比如乘客、司机、支付以及保险等服务也有产生各种各样的事件,而那些事件都才能 实时响应。

此外,Lyft 目前做的一件事情本来改善部署系统使其才能支持 Kubernetes,而且使得其才能接近 0 宕机时间的效果。机会 Lyft 准实时数据分析平台在云端运行,而且在将数据上传到 S3 的之也有产生其他随机的网络情况报告,造成 Sink Subtasks 的停滞,进而造成整个 Flink Job 的停滞。而通过引入其他 Time Out 机制来检测 Sink Subtasks 的停滞,使得整个 Flink Job 才能顺利运行下去。