Flink
简介
Apache Flink 是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态的计算。
Flink 能在所有常见集群环境中运行,并能以内存速度为限制进行任意规模的计算。
运行方式
Flink 可以通过如下三种方式运行程序:
- 应用模式(Application Mode)
- 集群生命周期和应用进行绑定,当应用执行完成才会停止集群。
- 应用程序公用公共资源。
- 任务模式(Per-Job Mode)
- 集群生命周期和任务周期绑定。
- 单个任务独享所需资源。
- 节点需要一定的启动时间,适合长时间运行的程序。
- 资源利用率相对低。
- 会话模式(Session Mode)
- 集群生命周期不受任务影响,只有手动关闭会话,集群才会被停止。
- 所有任务争抢一套系统资源。
- 集群所有节点都预先启动,无需每次启动作业都申请资源、启动节点,适合对于作业执行时间段、对任务启动时间敏感的任务。
- 资源充分共享,资源利用率高。
所以一般情况下建议使用应用模式运行。
部署方式
- 独立(适合试用 Flink)
- Kubernetes
- Yarn
命令行工具安装及配置
- 从官网下载对应版本的安装包,然后进行解压。
- 编辑环境变量配置文件,然后填入如下内容
1
| vim /etc/profile.d/flink.sh
|
1
| export PATH=<flink_path>/bin:$PATH
|
1 2
| rest.bind-port: 8080-8090 rest.bind-address: 0.0.0.0
|
独立部署(Docker-Compose,Session Mode)
- 编写
docker-compose.yaml
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| version: "2.2" services: jobmanager: image: flink:1.14.0-scala_2.12-java11 ports: - "8081:8081" - "6123:6123" command: jobmanager environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager
taskmanager: image: flink:1.14.0-scala_2.12-java11 depends_on: - jobmanager command: taskmanager scale: 1 environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager taskmanager.numberOfTaskSlots: 8
|
基础命令
1
| flink run --detached <jar_path>
|
1
| flink savepoint <job_id> /tmp/flink-savepoints
|
1
| flink savepoint --dispose <savepoint_path> <job_id>
|
1
| flink stop --savepointPath <savepoint_path> <job_id>
|
1
| flink run --detached --fromSavepoint <savepoint_path> <jar_path>
|