五、Flink入门--客户端操作

1.客户端操作总体概览

Flink提供了丰富的客户端操作来提交任务或与任务交互,我们从五个方面介绍Flink客户端的具体操作,分别是Flink命令行模式,scala-shell模式, sql-client 模式,restful模式,界面模式.
在这里插入图片描述

2. Flink命令行模式
2.1 stand-alone模式

首先启动stand-alone模式的集群

bin/start-cluster.sh

提交一个example任务,-d 表示detached模式,即提交了后会退出shell,如果不加-d shell会一直在运行不退出。

bin/flink run -d examples/streaming/TopSpeedWindowing.jar

查看当前集群所有的任务列表:

a.默认模式下-m表示jm的地址
bin/flink list -m localhost:8081

b.ha模式下用-z表示zk地址查看
bin/flink list -z localhost:2181

------------------ Running/Restarting Jobs -------------------
20.05.2019 16:04:11 : 5f1a16394dc207969a0cff904ca57726 : CarTopSpeedWindowingExample (RUNNING)
--------------------------------------------------------------

停止任务,并设置savepoint 路径

bin/flink cancel -m locahost:8081 -s /tmp/savepoint 5f1a16394dc207969a0cff904ca57726

Cancelling job 5f1a16394dc207969a0cff904ca57726 with savepoint to /tmp/savepoint.
Cancelled job 5f1a16394dc207969a0cff904ca57726. Savepoint stored in file:/tmp/savepoint/savepoint-5f1a16-26cd0491e260.

查看savepoint:

ll /tmp/savepoint/

drwxrwxr-x 2 hadoopuser hadoopuser 4096 May 20 16:20 savepoint-5f1a16-26cd0491e260

从savepoint恢复执行任务:

bin/flink run -d -s /tmp/savepoint/savepoint-5f1a16-26cd0491e260/ examples/streaming/TopSpeedWindowing.jar
Job has been submitted with JobID 9e9a1bab6256175706ffaa0e0f4f6535

可以在jm的日志中发现如下内容,证明任务是从checkpoint启动的
Starting job 9e9a1bab6256175706ffaa0e0f4f6535 from savepoint /tmp/savepoint/savepoint-5f1a16-26cd0491e260/

手动触发savepoint:

bin/flink savepoint -m localhost:2181 9e9a1bab6256175706ffaa0e0f4f6535 /tmp/savepoint/

Triggering savepoint for job 9e9a1bab6256175706ffaa0e0f4f6535.
Waiting for response...
Savepoint completed. Path: file:/tmp/savepoint/savepoint-9e9a1b-bbfb61c5013e
You can resume your program from this savepoint with the run command.

ll /tmp/savepoint/
total 8
drwxrwxr-x 2 hadoopuser hadoopuser 4096 May 20 16:20 savepoint-5f1a16-26cd0491e260
drwxrwxr-x 2 hadoopuser hadoopuser 4096 May 20 16:29 savepoint-9e9a1b-bbfb61c5013e

修改任务的并行度,修改并行度的前提是集群设置了 state.savepoints.dir 属性,因为每次modify会触发一次savepoint操作。

bin/flink modify -p 2 9e9a1bab6256175706ffaa0e0f4f6535

查看任务的执行信息,可以将json粘贴到https://flink.apa

### Flink 客户端与 Scala 集成 #### 关于配置和使用实例 对于希望将 Apache Flink 和 Scala 结合使用的开发者来说,理解两者之间的集成至关重要。为了使 Flink 应用程序能够利用 Scala 的特性,需要确保环境已经正确设置。 安装并配置好 Java Development Kit (JDK),因为无论是 Flink 还是 Scala 编译器都需要 JDK 支持。接着应下载对应版本的 Flink 发行版,并解压到合适的位置。如果计划采用 Maven 构建工具来管理依赖关系,则应在项目的 `pom.xml` 文件中声明所需的 Flink 和 Scala 版本: ```xml <properties> <flink.version>1.15.0</flink.version> <scala.binary.version>2.12</scala.binary.version> </properties> <dependencies> <!-- Flink dependencies --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_${scala.binary.version}</artifactId> <version>${flink.version}</version> </dependency> </dependencies> ``` 编写简单的 WordCount 实例可以作为入门练习。下面是一个基于 Scala 的简单例子,展示了如何读取文本文件并对其中单词计数[^1]: ```scala import org.apache.flink.api.scala._ object WordCount { def main(args: Array[String]) { val env = ExecutionEnvironment.getExecutionEnvironment val text = env.readTextFile("/path/to/input/file") val counts = text.flatMap(_.toLowerCase.split("\\W+")) .filter(_.nonEmpty) .map((_, 1)) .groupBy(0) .sum(1) counts.writeAsCsv("/path/to/output/directory", "\n", " ") env.execute("Word Count Example") } } ``` 此代码片段定义了一个名为 `WordCount` 的对象及其主函数。该应用程序会加载输入数据源中的每一行字符串,将其转换为小写形式后按照非字母字符分割成多个词语;过滤掉空串并将每个词映射至键值对 `(word, 1)` 形式;最后按第一个字段分组求和得到最终的结果集,并输出到指定路径下的 CSV 文件当中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值