Flink 应用框架层
根据 API 层的划分,在 API 层之上构建的满足特定应用场景的计算框架,总体上分为流计算和批处理两类应用框架。面向流计算的应用框架有流上 SQL(Flink Table&SQL)、CEP(复杂事件处理),面向批处理的应用框架有批上 SQL(Flink Table&SQL)、Flink ML(机器学习)、Gelly(图处理)。
Table&SQL
Table&SQL 是 Flink 中提供 SQL 语义支持的内置应用框架,其中 Table API 提供 Scala 和 Java 语言的 SQL 语义支持,允许开发者使用编码的方式实现 SQL 语义。SQL 基于 Apache Calcite,支持标准 SQL,使用者可以在应用中直接使用 SQL 语句,同时也支持 Table API 和 SQL 的混合编码。
Table API 和 SQL 在流计算和批处理上提供了一致的接口,批处理和流式传输的 Table API 和 SQL 程序都遵循相同的模式。
两者在底层上都依赖于 Apache Calcite 提供的优化能力,借助 Apache Calcite 内置的优化规则,加上 Flink 实现的分布式流、批优化规则,在逻辑和物理两个层面上进行优化。
CEP
CEP 本质上是一种实时事件流上的模式匹配技术,是实时事件流上常见的用例。CEP 通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定匹配规则,持续地从事件流中匹配出符合要求的事件序列,通过模式组合能够识别更加复杂的事件序列,主要用于反欺诈、风控、营销决策、网络安全分析等场景。
常见的开源 CEP 引擎有 Esper、Siddhi、Drools 等,商业 CEP 引擎有 Esper 企业版、StreamBase、StreamInsight 等。其中,Esper 是成熟且资历比较老的 CEP 引擎,在金融行业的应用比较广泛,开源 Esper 支持单机版,Esper 企业版支持双机热备。
现有的复杂事件处理引擎除 Siddhi 支持分布式部署之外(依赖 Storm),其余的复杂事件处理引擎都存在分布式计算支持不够的问题。Flink CEP 应用开发框架借助 Flink 的分布式计算引擎,提供了复杂事件处理 API,能够实现完整的模式匹配语义,同时部分实现了 SQL 2016 标准中的 SQL MatchRecognize 语义,支持通过 SQL 定义复杂事件处理匹配规则。
Gelly
Gelly 是一个可扩展的图形处理和分析库。Gelly 是在 DataSet API 之上实现的,并与 DataSet API 集成在一起。因此,它受益于其可扩展且强大的操作符。Gelly 具有内置算法,如 label propagation(标签传播)、triangle enumeration 和 page rank, 但也提供了一个自定义图算法实现的简化 Graph API。
ML
Flink ML 是 Flink 的机器学习框架,定位类似于 Spark MLLib,但是在目前阶段其实现的算法和成熟度距离 Spark MLLib 有较大差距,不具备生产环境的可用性,在 Flink1.9 之后的版本中会对其进行重构。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/9dfa4d2033afb94fb7f603d5c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论