环境交代
- windows 10 WSL
- Flink 1.13.5
- windows docker
- Docker version 20.10.12, build e91ed57
- docker-compose version 1.29.2, build 5becea4c
备注说明
- 新版本已经没有window的安装文档了
- 我windows直接启动失败,错误日志找不到什么什么类
- 放弃了
- 下载地址
lib依赖
下述中有两个依赖是我加入
- 上传的 任务JAR 可以使用 lib下的依赖,
- 所以自己编写的flink项目可以将公用的jar放到 flink的lib目录下,这样打包的jar就可以不要么大了
<scope>provided</scope>
- 所以自己编写的flink项目可以将公用的jar放到 flink的lib目录下,这样打包的jar就可以不要么大了
- 如果新放入新的依赖jar,Flink需要重启
- 暂时没找到不重启的方法
Flink配置文件配置说明
官方配置文档
https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/config/
一个任务槽只能执行一个任务,当任务槽不满的情况下job会无法正常工作
1.13.5 中默认只有一个,我第一次使用时, 启动了两个任务,第二个死活启动不了,异常说无法获取资源
配置 : taskmanager.numberOfTaskSlots: 3
防止flink 重启 submit的jar包丢失
每次重启,我上传的jar都不见了,又得重新来一次,测试没事,如果上来生产这TM不是玩我. 我使用的是root账户创建的 下述文件夹,但是启动Flink用的是 非root账户,导致了权限不足从而启动失败
配置: web.upload.dir: /opt/flink/target
-
乱码配置 根据实际现象而定编码
env.java.opts: "-Dfile.encoding=UTF-8"
配置checkpoint 保存文件夹
state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints
state.checkpoints.dir: file:////opt/flink/ck # chinkPoint FsStateBackend 注意当前用在对这个目录是否有操作权限
通过 WSL 安装
开始进入 wsl 的目录
\\wsl$
1. 进入 wsl terminal
2. 通过wsl 进入下载的并解压好的 flink/bin
你也可以将下好的Flink放进wsl的目录中去
3. ./start-cluster.sh
这样就启动了一个集群了 (一个master 一个 slave)
Docker-compose 安装
dockerComposeFile
- E:/FLINK/docker/to/lib:/opt/flink/lib : 如果配置了这个必须要实现把flink原本来lib中的jar放一份,要不然启动会失败
version: "2.2"
services:
jobmanager:
image: flink:1.13.5-scala_2.12
# 给容器取个名字
container_name: jobflink
ports:
- "8081:8081"
command: jobmanager
volumes:
- E:/FLINK/docker/to/job/artifacts:/opt/flink/usrlib # job jar 上传你自己写的工作包
- E:/FLINK/docker/to/lib:/opt/flink/lib # 环境jar, 工作中需要依赖的jar,将lib映射出来方便我随时添加新的公共依赖
- E:/FLINK/docker/to/ck:/opt/flink/ck # chinkPoint 保存的路径挂载出去
- E:/FLINK/docker/to/target:/opt/flink/target # 防止flink 重启 submit的jar包丢失
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
parallelism.default: 2
state.backend: hashmap # chinkPoint FsStateBackend (taskmanager不用配置)
state.checkpoints.dir: file:////opt/flink/ck # chinkPoint FsStateBackend 注意当前用在对这个目录是否有操作权限
web.upload.dir: /opt/flink/target # 防止flink 重启 submit的jar包丢失(taskmanager不用配置)
taskmanager:
image: flink:1.13.5-scala_2.12
# 给容器取个名字
container_name: task1flink
depends_on:
- jobmanager
command: taskmanager
volumes:
- E:/FLINK/docker/to/job/artifacts:/opt/flink/usrlib
- E:/FLINK/docker/to/lib:/opt/flink/lib
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2 # 1.13.5 默认只有一个
parallelism.default: 2
启动命令
docker-compose -f docker-compose-flink.yml -p flink up -d