查看原文
其他

Recap | Query Pulsar Streams using Apache Flink

Growth StreamNative 2020-01-08



📖 背景


2019 年 10 月 7-9 日,Flink Forward Europe 2019 在德国柏林举行,大会主题涵盖了 ApacheFlink® 用例、内部知识、Flink 生态系统的增长以及有关流处理和实时分析的多种主题,多个大牛技术团队也参与了此次大会。


StreamNative 作为唯一一家 startup 赞助商也参与了此次大会,StreamNative CEO 郭斯杰发表了主题为 「Query Pulsar Streams using Apache Flink」 的演讲,分享了 Pulsar 与 Flink 1.9 进行集成的最新动态。



🎙️ 前言


郭斯杰的主题演讲主要由两部分构成:Apache Pulsar 的特性、为什么 Pulsar 是批流融合计算的最佳存储系统,和关于 Pulsar 与 Flink 集成的最新进展,对比了 1.6 和 1.9 集成,并进行了 Pulsar Catalog 的 demo 展示。


关于 Apache Pulsar 的介绍,我们已经整理了一份详细的Apache Pulsar 介绍,点击就可以查看啦~


以下着重介绍 Pulsar 与 Flink 集成的相关内容。





🔎 Pulsar + Flink


Pulsar 与 Flink 1.6 版本的集成比较简单。Pulsar 主要提供 Streaming Source、Streaming Sink 和 Table Sink 这三个 connectors。


而进化到 1.9 版本以后的 Flink 则有了更多出色的表现。StreamNative 基于 Flink 1.9.0 和 Pulsar 2.4.0 重新进行了 Pulsar 和 Flink 的集成工作。


新的集成工作主要围绕 Pulsar 的内置 Schema 开展,实现了 exactly-once 语义的 Source 和 at-least-once 语义的 Sink。


郭斯杰也在现场进行了 demo 展示(具体现场视频可点击文末「阅读原文」进行查看)。

总的来说,最新的 Pulsar Flink connector 有如下特点:

原生支持将 Pulsar 的 topic 作为有结构的表进行消费,支持 Flink 1.9 的最新 Table API,可以将 Pulsar 映射为 Flink 的一个 catalog,以及在 Table API 和 SQLClient 中使用。


🏃‍♂️未来展望


之前 Lambda 架构下,Flink 参与的过程较为复杂。现在将 Apache Pulsar 和 Flink 结合之后,简化了流程,并拥有了统一的数据表征,客户则无需关心数据究竟存储在何处。


当然,开源的过程是为了更好的前进。未来我们还需要去创新和完善的事情依然很多,比如:


  • 基于新的 Source API (FLIP-27)的批、流统一的数据读取
  • 横向扩展 Source 并行粒度
    • 基于Pulsar 2.5.0 中的 Key_Shared 订阅和粘性消费者



  • 实现端到端的 Exactly-once 语义 
    • 需要借助在 Pulsar 2.5.0 版本中的事务支持

  • 将 Pulsar / BookKeeper 作为 Flink 的 State 存储
  • 感知消息结构的分层存储




🙋 总结


  • Apache Pulsar 是云原生的流数据存储系统
  • 拥有两级数据读取 API :基于发布/订阅的消费和直接基于分段的读
  • 可通过 Pulsar Schema 进行结构化事件流解析消费
  • Pulsar 可作为 Flink 的统一数据存储
  • 基于 Pulsar + Flink 构建批流一体的、统一的数据处理栈 


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存