Flink流批一体在小米的实践情况如何?

已解决

Flink流批一体在小米的实践情况如何?

展开
收起
游客lmkkns5ck6auu 2022-08-31 10:31:15 641 分享 版权
1 条回答
写回答
取消 提交回答
  • 推荐回答

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

    1、元数据管理 小米基于 Metacat 做了统一的元数据管理,由 Metacat 统一对接下游不同的存储系统和上游的计算引擎。基于 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 包作业的权限校验。

    3、作业调度。小米在作业调度方面也做了一些尝试。如上图左边这段 SQL,在离线调度模式下它是一个批作业,但在实时调度下它就是一个流作业。在批流混合的调度下,会先启动批作业,执行完成之后再启动流作业。

    批流混合对于调度器来说是实时的作业。主要的改动是在 Flink SQL 的模板作业中先启动一个 SQL的批作业, 执行完成之后再启动 Flink SQL 的实时作业。 4、Flink生态。Flink 插件化的 connector 设计可以非常方便地拓展不同的 connector。无论是 Flink 官方还是其他社区,都提供了非常多的 connector 支持。小米内部也实现了很多种类 connector,只有完善了 Flink 的生态建设,它跨平台设计的计算能力才能真正体现出来。

    以上内容摘自《Apache Flink 案例集(2022版)》电子书,点击https://developer.aliyun.com/ebook/download/7718 可下载完整版

    2022-08-31 12:06:26
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

收录在圈子:
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
还有其他疑问?
咨询AI助理