概念透析
实践训练章节介绍了作为 Flink API 根基的有状态实时流处置惩罚的基本概念,并且举例说明白如安在 Flink 应用中使用这些机制。其中 Data Pieplelin & ETL 小节介绍了有状态流处置惩罚的概念,并且在 Fault Tolerance 小节中进行了深入介绍。Streaming Analytics 小节介绍了实时流处置惩罚的概念。
本章将深入分析 Flink 分布式运行时架构如何实现这些概念。
Flink 中的 API
Flink 为流式/批式处置惩罚应用程序的开辟提供了不同级别的抽象
- Flink API 最底层的抽象为有状态实时流处置惩罚。其抽象实现是 Process Function,并且 Process Function 被 Flink 框架集成到了 DataStream API 中来为我们使用。它允许用户在应用程序中自由地处置惩罚来自单流或多流的变乱(数据),并提供具有全局划一性和容错保障的状态。此外,用户可以在此层抽象中注册变乱时间(event time)和处置惩罚时间(processing time)回调方法,从而允许程序可以实现复杂计算。
- Flink API 第二层抽象是 Core APIs。实际上,许多应用程序不需要使用到上述最底层抽象的 API,而是可以使用 Core APIs 进行编程:其中包含 DataStream API(应用于有界/无界数据流场景)。Core APIs 提供的流式 API(Fluent API)为数据处置惩罚提供了通用的模块组件,比方各种情势的用户自定义转换(transformations)、联接(joins)、聚合(aggregations)、窗口(windows)和状态(state)操作等。此层 API 中处置惩罚的数据类型在每种编程语言中都有其对应的类。
Process Function 这类底层抽象和 DataStream API 的相互集成使得用户可以选择使用更底层的抽象 API 来实现本身的需求。DataSet API 还额外提供了一些原语,好比循环/迭代(loop/iteration)操作。
- Flink API 第三层抽象是 Table API。Table API 是以表(Table)为中央的声明式编程(DSL)API,比方在流式数据场景下,它可以表示一张正在动态改变的表。Table API 遵照(扩展)关系模子:即表拥有 schema(雷同于关系型数据库中的 schema),并且 Table API 也提供了雷同于关系模子中的操作,好比 select、project、join、group-by 和 aggregate 等。Table API 程序是以声明的方式定义应执行的逻辑操作,而不是确切地指定程序应该执行的代码。尽管 Table API 使用起来很简洁并且可以由各种类型的用户自定义函数扩展功能,但照旧比 Core API 的表达本领差。此外,Table API 程序在执行之前还会使用优化器中的优化规则对用户编写的表达式进行优化。
表和 DataStream/DataSet 可以进行无缝切换,Flink 允许用户在编写应用程序时将 Table API 与 DataStream/DataSet API 混合使用。
- Flink API 最顶层抽象是 SQL。这层抽象在语义和程序表达式上都雷同于 Table API,但是其程序实现都是 SQL 查询表达式。SQL 抽象与 Table API 抽象之间的关联是非常精密的,并且 SQL 查询语句可以在 Table API 中定义的表上执行。
当地模式安装
请按照以下几个步调下载最新的稳定版本开始使用。
步调 1:下载
为了运行Flink,只需提前安装好 Java 11。你可以通过以下命令来查抄 Java 是否已经安装正确。
下载 release 1.20.0 并解压。
- $ tar -xzf flink-1.20.0-bin-scala_2.12.tgz
- $ cd flink-1.20.0-bin-scala_2.12
复制代码 步调 2:启动集群
Flink 附带了一个 bash 脚本,可以用于启动当地集群
- $ ./bin/start-cluster.sh
- Starting cluster.
- Starting standalonesession daemon on host.
- Starting taskexecutor daemon on host.
复制代码 步调 3:提交作业(Job)
Flink 附带了一个 bash 脚本,可以用于启动当地集群。
- $ ./bin/start-cluster.sh
- Starting cluster.
- Starting standalonesession daemon on host.
- Starting taskexecutor daemon on host.
复制代码 步调 3:提交作业(Job)
Flink 的 Releases 附带了许多的示例作业。你可以任意选择一个,快速部署到已运行的集群上。
- $ ./bin/flink run examples/streaming/WordCount.jar
- $ tail log/flink-*-taskexecutor-*.out
- (nymph,1)
- (in,3)
- (thy,1)
- (orisons,1)
- (be,4)
- (all,2)
- (my,1)
- (sins,1)
- (remember,1)
- (d,4)
复制代码 别的,你可以通过 Flink 的 Web UI 来监督集群的状态和正在运行的作业。
步调 4:制止集群
完成后,你可以快速制止集群和全部正在运行的组件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |