《Apache Flink 案例集(2022版)》——1.数据集成——小米-Flink 流批一体在小米的实践

简介: 《Apache Flink 案例集(2022版)》——1.数据集成——小米-Flink 流批一体在小米的实践

作者:金风


用户背景

小米科技有限责任公司成立于2010年3月3日,是一家专注于智能硬件和电子产品研发的全球化移动互联网企业,同时也是一家专注于智能手机、互联网电视及智能家居生态链建设的创新型科技企业。 小米公司创造了用互联网模式开发手机操作系统、发烧友参与开发改进的模式。


业务需求

小米的大数据发展演变史大概如下:  


2019 年之前,小米的实时计算主要以 SparkStreaming 为主,少部分 Storm,离线计算以 Spark 为主; 2019 年,开始接入 Flink,并广泛应用于信息流搜索推荐、广告实时样本、实时 ETL 等场景,逐步替换了原来的 SparkStreaming 作业,得益于 Flink 框架的各种优秀特性,在作业的正确性,实时性,资源使用效率方面都有较大提升;


2020 年,开始接入使用 FlinkSQL,并广泛用于实时数仓的建设和实时 ETL 作业的开发。FlinkSQL 的实时数仓将数据链路由 T+1 降低到了秒级;


2021 年,开始接入数据湖 Iceberg,基于 Flink 和 Iceberg 来构建流批一体的实时数仓解决方案,并在小米内部的部分业务进行了落地,证明流批一体在赋能业务、提升作业开发效率、简化链路节省资源的方面是可行的。


image.png


上图是小米当前的实时和离线框架,目前是多种框架并存的状态。业务开发人员无论是写 SQL 作业还是写 Jar 包作业,都至少要维护两套代码。公司内部的计算引擎团队也需要花两拨人力分别去维护不同的计算框架,同时平台层也需要对不同的计算引擎去做不同的适配。  


基于上述情况,小米开始致力于流批一体的改造,实现实时和离线维护同一套计算框架,为业务开发人员、平台提供方和计算引擎的支持方最大化节省人力资源。


平台建设

对于流批一体的平台化建设,主要分为 4 个方面,分别是元数据管理、权限管理、作业调度以及 Flink 的生态建设。  


1、元数据管理

小米基于 Metacat 做了统一的元数据管理,由 Metacat 统一对接下游不同的存储系统和上游的计算引擎

image.png


基于 Metacat,内部的所有系统都被统一划分成三级结构,与 FlinkSQL 的三级结构相对应。  


第一级 Catalog,主要由服务名和集群名拼接而成。


第二级 Database,它与大部分系统的 Database 保持一致。没有 Database 的系统默认使用 default 来代替。


第三级 Table,也与系统的 Table 保持一致,比如消息队列的 topic 名, Elasticsearch 的索引名。  


在构建好统一的元数据管理之后,只需要写一条 DML 语句即可完成一个实时将消息队列数据入湖作业的开发。



2、授权管理

在实现了统一的元数据管理后,在开发 Flink SQL 作业时, 所有系统都被抽象为一个三级的结构表, 业务可以使用三级表名引用任意一个系统的表。同时小米基于 Ranger 也做了统一的权限管理,在 SQL 层统一管理所有的资源权限。  


小米在计算引擎层做了统一的权限管理,同时覆盖了 Flink SQL 和 Flink Jar。Flink SQL 作业可以在生成物理执行计划时获取到 SQL 引用的的 Source 和 Sink 表,以及 select 的 Source 表的字段名。基于以上信息,即可实现字段级别的鉴权。同时小米为 Flink Jar 用户提供了统一的工具类,同时也对接了 Flink Catalog,因此可以做到 Jar 包作业的权限校验。


image.png


如上图所示,统一管理了元数据和权限之,业务开发人员在开发FlinkSQL作业时可以非常便选择不同系统的,包DorisKuduHive等,作业由后端统一进行提权。在作业提时,也能非常方便获取到作业的血缘


《Apache Flink 案例集(2022版)》——1.数据集成——小米-Flink 流批一体在小米的实践(2):https://developer.aliyun.com/article/1228470





相关文章
|
8月前
|
人工智能 自然语言处理 安全
代码静态扫描工具集成与实践
代码静态扫描工具(Static Application Security Testing, SAST)是在不运行代码的情况下,通过分析源代码或二进制代码来发现潜在安全漏洞、代码缺陷和质量问题的工具
967 4
|
8月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
672 6
|
8月前
|
安全 JavaScript 前端开发
安全漏洞检测集成及实践:SAST/DAST工具集成指南
通过合理集成和配置SAST/DAST工具,可以显著提升应用程序的安全性,并在开发早期发现和修复漏洞,降低安全风险和维护成本
832 4
|
8月前
|
机器学习/深度学习 边缘计算 数据可视化
MyEMS 深度解析:碳管理赋能与系统集成的实践路径
MyEMS 是一款集碳管理与能源优化于一体的开源系统,具备多标准碳核算、碳足迹可视化、碳成本分析等功能,助力企业实现精准碳减排。系统支持与工业、建筑、政务平台等多系统集成,打破数据孤岛,提升能效。依托活跃的开源社区与丰富实践案例,MyEMS 持续迭代,推动绿色转型。
474 1
|
9月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1535 1
|
10月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
1017 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
9月前
|
供应链 监控 搜索推荐
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
在零售行业环境剧变的背景下,传统“人找货”模式正被“货找人”取代。消费者需求日益个性化,购买路径多元化,企业亟需构建统一的指标体系,借助BI平台实现数据驱动的精细化运营。本文从指标体系构建、平台集成到会员与商品运营实践,系统梳理零售经营分析的方法论,助力企业实现敏捷决策与业务闭环。
35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
552 0
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
1536 6

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多