BIGO 实时计算平台建设实践

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: 从业界来看,实时化的趋势正在加速,本文将介绍 BIGO 基于 Flink 的实时计算平台的建设经验和成果。

BIGO 全球音视频业务对数据的实时能力要求越来越高,数据分析师希望多维度实时看到新增用户、活跃用户等业务数据以便尽快掌握市场动向,机器学习工程师希望实时拿到用户的浏览、点击等数据然后通过在线学习将用户偏好快速加入到模型中,以便给用户推送当前最感兴趣的内容,APP 开发工程师希望能够实时监控 APP 打开的成功率、崩溃率。

这些实时数据的能力都要依靠实时计算平台来提供。从业界来看,实时化的趋势正在加速,本文将介绍 BIGO 基于 Flink 的实时计算平台的建设经验和成果

平台介绍

BIGO 实时计算的发展大概分为两个阶段,在 2018 年之前,实时场景还比较少,实时的作业数量也不多,当时主要采用 Spark Streaming 来支持。从 2018 年开始,在综合考虑了 Flink 相对于 Spark Streaming 的优势之后,决定将实时计算平台切换到基于 Flink 的技术路线上来。经过近两年的发展,BIGO 实时计算平台日趋完善,基本支持了公司内主流的实时计算场景,下图是 BIGO 实时计算平台的架构图:

1.png

实时计算的数据来源可分为两大类,一类是用户在 APP 或者浏览器里的浏览、点击等行为日志,通过 kafka 收集进入实时计算;另一类是用户的行为产生的关系型数据库里记录的改变,这些改动产生的 biglog 被 BDP 抽取进入实时计算。

从图中可以看出,BIGO 实时计算平台底层基于 Yarn 来做集群资源管理,借助于 Yarn 的分布式调度能力,实现大规模集群下的调度。实时平台的计算引擎在开源 Flink 的基础上,为适配 BIGO 的场景进行了特殊的定制及开发。实时平台的上层是 BIGO 自研的一站式开发平台 BigoFlow,在这里,用户可以方便的进行作业的开发、调试以及监控运维。BigoFlow 提供了完善的 SQL 开发能力、自动化监控配置能力以及日志自动收集、查询能力,让用户仅需要一条 SQL,就可以完成一个业务作业。它具有以下功能:

  1. 提供了强大的 SQL 编辑器,可以进行语法检查及自动提示。
  2. 可以对接公司所有的数据源及数据存储,省去了业务方自定义的工作。
  3. 日志自动收集到 ES 里,用户可以方便的检索和查询,可以快速的定位错误。
  4. 作业关键指标自动对接到公司的监控告警平台,用户不用再自己配置。
  5. 收集所有作业的资源使用情况,自动进行分析,帮助识别、治理不合理作业。

实时计算出来的结果根据业务的需求,会存放到不同的存储中。ETL 类作业的结果通常会入库到 Hive中,需要进行 Adhoc 查询的数据通常会放到 ClickHouse 里面。监控告警等类型的作业可以直接把结果输出到告警平台的 Prometheus 数据库里,供告警平台直接使用。

业务应用

随着实时计算平台的发展,越来越多的场景都搬到了 BigoFlow 平台上,实时计算也给这些场景带了很多好处,下面我们以几个典型场景为例来说明实时计算为它们带来的能力或者性能的增强。

数据 ETL

2.png

数据的抽取、转换是一个典型的实时场景,用户在 APP、浏览器里的行为日志是实时不间断产生的,要实时的去采集并经过抽取转换,最后入到数据库里。BIGO 之前的 ETL 场景数据路径通常是 Kafka->Flume->Hive。经过 Flume 入库的路径存在着以下几方面的问题:

  1. Flume 的容错能力差,遇到已成可能会导致丢数据或者数据重复。
  2. Flume 的动态扩展能力差,流量突然到来时候很难立刻扩展。
  3. 一旦数据字段或者格式发生变化,Flume比较难于灵活调整。

而 Flink 提供了基于 State 的强大的容错能力,可以端到端 Exactly Once,并发度可以灵活的调整,Flink SQL 可以灵活的去调整逻辑。因此,绝大部分的 ETL 场景目前都已经迁移到了 Flink 架构上。

实时统计

作为一家有多个 APP 产品的公司,BIGO 需要有大量的统计指标来反应产品的日活、营收等指标。传统这些指标一般都是通过离线 Spark 作业来每天或者每小时计算一次。离线计算很难保证数据的产生的及时性,经常会出现重要指标延迟产生的问题。

因此我们慢慢的将重要指标通过实时计算来产生,极大的保证了数据产生的及时性。最显著的是之前一个重要指标经常延迟导致它的下游在下午才能产出,给数据分析师带来了很多困扰,改造为实时链路后,最终指标在早上 7 点就能产出,数据分析师上班就可以使用了。

机器学习

随着信息的爆炸发展,用户的兴趣转移的越来越快,这就要求机器学习能够尽快根据用户当时的行为推荐他感兴趣的视频。传统机器学习基于批处理的方式,通常要到最快小时级别才能更新模型。今天基于实时计算的样本训练可以不间断的将样本训练成实时模型并应用于线上,真正做到了在线学习,将根据用户行为产生的推荐做到分钟级别更新。目前,机器学习的作业已经占到了实时计算集群的 50%以上。

实时监控

3.png

实时监控也是一个很重要的实时场景,APP 的开发者需要实时监控 APP 打开的成功率等指标,如果出现异常,就要及时告警通知出来。之前的做法通常是原始数据存放于 Hive 或者 ClickHouse,在基于 Grafana 的监控平台配置规则,每个一定时间用 Presto 或者 ClickHouse 去查询一下,根据计算出来结果进行判断是否需要告警。这种方式存在几个问题:

  1. Presto 或者 ClickHouse 本身虽然是 OLAP 的引擎,性能很好,但并不保证集群的高可用及实时性。而监控对实时性和高可用要求比较高。
  2. 这种方式的每次计算指标都要把当天的全部数据计算一遍,存在着极大的计算浪费。

而通过实时计算的监控方案可以实时计算出来指标,直接输出到 Grafana 的数据库里,不仅保证了实时性,更是可以将计算的数据量减少上千倍。

BIGO 实时平台特色

BIGO 实时计算平台在发展过程中,逐步根据 BIGO 内部业务的使用特点,形成了自己的特色和优势。主要体现在以下几个方面:

元数据打通

一个常见的情况是数据的产生者和使用者不是同一批人。打点的同事将数据上报到 Kafka或者 Hive 里,数据分析师要用这些数据去计算。他们不知道 Kafka 的具体信息,只知道要使用的 Hive 表名。

为了减少用户使用实时计算的麻烦,BigoFlow 将元数据和 Kafka、Hive、ClickHouse 等存储都进行了打通,用户可以在作业里直接使用 Hive、ClickHouse 的表,不需要写 DDL,BigoFlow 自动去解析,根据元数据的信息自动转换成 Flink 里的 DDL 语句,极大的减少了用户的开发工作。这得益于 BIGO 计算平台的统一规划,是很多离线、实时系统分开的公司所做不到的。

端到端的产品化方案

BigoFlow 不仅仅是实时计算的平台,为了方便用户使用或者迁移,也会根据业务场景,提供端到端的整个解决方案。像前面介绍的监控场景,用户有很多监控业务需要迁移,为了尽量减少的工作,BigoFlow 专门提供了监控场景的解决方案,用户只需要将计算监控指标的 SQL 迁移到 Flink SQL,其他包括 Flink 作业的 DDL,数据 Sink 到监控平台等工作完全不用做,都由 BigoFlow 自动实现,用户原先配置的规则也都不用变。这使得用户可以用最少的工作量完成迁移。

另外前面也提到了,BigoFlow 自动将用户作业的关键指标添加了告警,这基本满足了绝大多数用户的需求,让他们专心于业务逻辑,而不用操心其他事情。用户的日志也会自动收集到 ES 里,方便用户查看。ES 里有沉淀了一些总结出来的调查问题的搜索 Query,用户可以根据现象直接点击查询。

强大的 Hive 能力

由于 BIGO 内的绝大部分数据都是存在 Hive 里的,实时作业也经常需要将结果写入 Hive,不少场景也需要能够从 Hive 里读数据。所以 BigoFlow 跟 Hive 的集成一直走在业界的前列。在社区 1.11 之前,我们就自己实现了向 Hive 写数据,并可以动态更新 Meta 的能力。1.11 还未正式发布,我们就在 1.11 的基础上,自研开发了流式读取 Hive 表支持 EventTime、支持动态过滤分区、支持 TXT 格式压缩等功能,这些功能都领先于开源社区。

4.png

这是我们在 ABTest 上通过 Flink 实现的一个批流统一的场景。正常情况下,Flink消费 Kafka 的实时数据,实时计算结果存入到 Hive。但作业经常会遇到业务逻辑调整,需要重新追数据进行对数。由于数据量很大,如果追数据还从 Kafka 消费,就会对 Kafka 带来很大的压力,影响线上的稳定。由于数据在 Hive 里也存了一份,我们追数据的时候,选择从 Hive 里读取,这样用同一份代码,可以走离线和在线两条路,最大限度减少了追数据对在线的影响。

自动化 ETL 作业生成

Flink 目前承接了大部分的ETL场景。ETL 作业的逻辑一般比较简单,但作业众多,而且用户上报的数据格式会经常变化,或者字段进行了增减。为了减少用户开发、维护 ETL 作业的成本,我们开发 ETL 作业自动生成的功能,用户只需要提供上报数据的 Topic 和格式,就可以自动生成 ETL 作业,将结果写入到 Hive中。上报数据格式或者字段发生了变化之后,也可以自动将作业进行更新。目前支持 Json、pb 等多种数据格式。

展望

随着 BIGO 业务的快速发展,BigoFlow 实时计算平台也在不断的壮大和完善,但也还有很多需要改进以及提高的地方,我们未来将会在平台完善和业务支持两个方面重点建设:

  1. 平台完善:重点提升平台的产品化水平。主要包括几个方面:开发自动化资源配置、自动调优等功能,可以根据作业的实时数据量,自动配置作业需要的资源,在流量高峰进行自动扩展,在流量低谷自动缩容;支持表血缘关系展示,方便用户分析作业之间依赖关系;支持异地多集群,Flink 上面支持了众多关键业务,需要极高的 SLA 保证,我们会通过异地多机房来保证关键业务的可靠性。探索流批统一、数据湖等场景。
  2. 支持更多业务场景:开拓更多机器学习、实时数仓的场景,进一步推广 Flink SQL 的使用。

作者团队简介:

BIGO 大数据团队专注于在 PB 级别数据上实现快速迭代,用大数据分析技术赋能上层业务。具体负责面向公司所有业务建设 EB 级别的分布式文件存储、日均万亿消息队列和 50PB 规模的大数据计算,包括批、流、MPP 等多种计算架构,涵盖从数据定义、通道、存储与计算、数据仓库和 BI 等全链路技术栈。团队技术氛围浓厚,有众多开源软件的开发者,期待优秀的人才加入我们!

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
5月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
384 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
5月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
186 12
|
6月前
|
存储 监控 数据挖掘
京东物流基于Flink & StarRocks的湖仓建设实践
本文整理自京东物流高级数据开发工程师梁宝彬在Flink Forward Asia 2024的分享,聚焦实时湖仓的探索与建设、应用实践、问题思考及未来展望。内容涵盖京东物流通过Flink和Paimon等技术构建实时湖仓体系的过程,解决复杂业务场景下的数据分析挑战,如多维OLAP分析、大屏监控等。同时,文章详细介绍了基于StarRocks的湖仓一体方案,优化存储成本并提升查询效率,以及存算分离的应用实践。最后,对未来数据服务的发展方向进行了展望,计划推广长周期数据存储服务和原生数据湖建设,进一步提升数据分析能力。
580 1
京东物流基于Flink & StarRocks的湖仓建设实践
|
4月前
|
资源调度 Kubernetes 流计算
Flink在B站的大规模云原生实践
本文基于哔哩哔哩资深开发工程师丁国涛在Flink Forward Asia 2024云原生专场的分享,围绕Flink On K8S的实践展开。内容涵盖五个部分:背景介绍、功能及稳定性优化、性能优化、运维优化和未来展望。文章详细分析了从YARN迁移到K8S的优势与挑战,包括资源池统一、环境一致性改进及隔离性提升,并针对镜像优化、Pod异常处理、启动速度优化等问题提出解决方案。此外,还探讨了多机房容灾、负载均衡及潮汐混部等未来发展方向,为Flink云原生化提供了全面的技术参考。
245 9
Flink在B站的大规模云原生实践
|
5月前
|
SQL 存储 NoSQL
Flink x Paimon 在抖音集团生活服务的落地实践
本文整理自抖音集团数据工程师陆魏与流式计算工程冯向宇在Flink Forward Asia 2024的分享,聚焦抖音生活服务业务中的实时数仓技术演变及Paimon湖仓实践。文章分为三部分:背景及现状、Paimon湖仓实践与技术优化。通过引入Paimon,解决了传统实时数仓开发效率低、资源浪费、稳定性差等问题,显著提升了开发运维效率、节省资源并增强了任务稳定性。同时,文中详细探讨了Paimon在维表实践、宽表建设、标签变更检测等场景的应用,并介绍了其核心技术优化与未来规划。
504 10
Flink x Paimon 在抖音集团生活服务的落地实践
|
5月前
|
资源调度 Kubernetes 调度
网易游戏 Flink 云原生实践
本文分享了网易游戏在Flink实时计算领域的资源管理与架构演进经验,从Yarn到K8s云原生,再到混合云的实践历程。文章详细解析了各阶段的技术挑战与解决方案,包括资源隔离、弹性伸缩、自动扩缩容及服务混部等关键能力的实现。通过混合云架构,网易游戏显著提升了资源利用率,降低了30%机器成本,小作业计算成本下降40%,并为未来性能优化、流批一体及智能运维奠定了基础。
285 9
网易游戏 Flink 云原生实践
|
7月前
|
存储 运维 监控
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
本文总结了阿里妈妈数据技术专家陈亮在Flink Forward Asia 2024大会上的分享,围绕广告业务背景、架构设计及湖仓方案演进展开。内容涵盖广告生态运作、实时数仓挑战与优化,以及基于Paimon的湖仓方案优势。通过分层设计与技术优化,实现业务交付周期缩短30%以上,资源开销降低40%,并大幅提升系统稳定性和运营效率。文章还介绍了阿里云实时计算Flink版的免费试用活动,助力企业探索实时计算与湖仓一体化解决方案。
841 3
阿里妈妈基于 Flink+Paimon 的 Lakehouse 应用实践
|
7月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
560 1
Flink CDC + Hologres高性能数据同步优化实践
|
7月前
|
SQL 存储 调度
基于 Flink 进行增量批计算的探索与实践
基于 Flink 进行增量批计算的探索与实践
177 1
基于 Flink 进行增量批计算的探索与实践
|
7月前
|
存储 运维 BI
万字长文带你深入广告场景Paimon+Flink全链路探索与实践
本文将结合实时、离线数据研发痛点和当下Paimon的特性,以实例呈现低门槛、低成本、分钟级延迟的流批一体化方案,点击文章阅读详细内容~

相关产品

  • 实时计算 Flink版
  • 下一篇
    oss教程