在centos7上安装Flink Job和TaskManager。
JobManager:
docker-compose:
version: "3.9"
services:
jobmanager:
image: flink:1.16.0-scala_2.12
container_name: jobmanager
command: jobmanager
privileged: true
ports:
- "8081:8081"
- "6123:6123"
- "6122:6122"
environment:
- TZ=Asia/Shanghai
- ENABLE_BUILT_IN_PLUGINS=flink-s3-fs-hadoop-1.16.0.jar
volumes:
- /etc/localtime:/etc/localtime:ro
- /mnt/jobmanager/conf/flink-conf.yaml:/opt/flink/conf/flink-conf.yaml
- /mnt/jobmanager/log:/opt/flink/log:rw
- /mnt/jobmanager/usrlib:/opt/flink/lib/usrlib:rw
- /mnt/jobmanager/plugins:/opt/flink/plugins:rw
- /mnt/jobmanager/user-upload-temp:/opt/flink/user-upload-temp:rw
networks:
- frontend
- backend
networks:
frontend:
backend:
以上/mnt下的文件夹最好先创建好,然后给设置一下权限,我感觉直接最高权限就好了,这样确实是比较方便。
-
/etc/localtime:是为了时间可以和主机统一
-
/mnt/jobmanager/conf/flink-conf.yaml:配置文件
-
/mnt/jobmanager/log:日志
-
/mnt/jobmanager/usrlib:我们的第三方jar包
-
/mnt/jobmanager/plugins:第三方插件
-
/mnt/jobmanager/user-upload-temp:你上传的包
以下自定义flink-conf.yaml配置信息,当然这里十分建议先启动一下jobmanager,然后使用docker cp jobmanager:/opt/flink/conf/flink-conf.yaml /mnt/jobmanager/conf/flink-conf.yaml把原始文件复制出来,仔细地品尝一下,然后再根据的自己的实际情况进行修改:
# jobmanager地址,默认是localhost。这个地方你得填集群中所有节点可以访问的地址。
jobmanager.rpc.address: 192.168.1.11
# jobmanager端口号
jobmanager.rpc.port: 6123
# 一些大文件传输使用rpc传输不过来,此时就使用这个
blob.server.port: 6122
# 详情https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/memory/mem_setup_jobmanager/
# 这个是jobmanager运行时总内存。我的服务器太小了。
jobmanager.memory.process.size: 1024m
# metaspace元空间
jobmanager.memory.jvm-metaspace.size: 256m
# 默认并行度
parallelism.default: 1
akka.ask.timeout: 480s
heartbeat.timeout: 480000
# 状态后端,哥们没hadoop集群,直接用minio作为状态后端持久化了。
state.backend: filesystem
# checkpoints的地址
state.checkpoints.dir: s3://flink-backend/checkpoints/
# savepoints的地址
state.savepoints.dir: s3://flink-backend/savepoints/
# checkpoints基本间隔设置。
execution.checkpointing.interval: 500
# 允许通过Flink UI上传和启动作业(默认为 true)
web.submit.enable: true
# 允许通过Flink UI 取消作业(默认为 true)。
web.cancel.enable: true
# 存储上传作业的目录。
web.upload.dir: /opt/flink/user-upload-temp
# s3相关的东西,minio自己先安装好,桶权限设置好
s3.endpoint: http://192.168.116.11:9000
s3.path.style.access: true
s3.access-key: minio
s3.secret-key: xxxxxxmima
jobmanager.execution.failover-strategy: region
然后docker-compose up jobmanager
TaskManager
docker-compose:
version: "3.9"
services:
taskmanager:
image: flink:1.16.0-scala_2.12
container_name: taskmanager
command: taskmanager
depends_on:
- jobmanager
ports:
- "6124:6124"
- "6125:6125"
- "6126:6126"
privileged: true
environment:
- TZ=Asia/Shanghai
- ENABLE_BUILT_IN_PLUGINS=flink-s3-fs-hadoop-1.16.0.jar
volumes:
- /etc/localtime:/etc/localtime:ro
- /mnt/taskmanager/conf/flink-conf.yaml:/opt/flink/conf/flink-conf.yaml
- /mnt/taskmanager/log:/opt/flink/log:rw
- /mnt/taskmanager/usrlib:/opt/flink/lib/usrlib:rw
- /mnt/taskmanager/plugins:/opt/flink/plugins:rw
- /mnt/taskmanager/user-upload-temp:/opt/flink/user-upload-temp:rw
networks:
- frontend
- backend
networks:
frontend:
backend:
以上/mnt下的文件夹最好先创建好,然后给设置一下权限,我感觉直接最高权限就好了,这样确实是比较方便。
-
/etc/localtime:是为了时间可以和主机统一
-
/mnt/jobmanager/conf/flink-conf.yaml:配置文件
-
/mnt/jobmanager/log:日志
-
/mnt/jobmanager/usrlib:我们的第三方jar包
-
/mnt/jobmanager/plugins:第三方插件
-
/mnt/jobmanager/user-upload-temp:你上传的包
以下自定义flink-conf.yaml配置信息,当然这里十分建议先启动一下taskmanager,然后使用docker cp taskmanager:/opt/flink/conf/flink-conf.yaml /mnt/taskmanager/conf/flink-conf.yaml把原始文件复制出来,仔细地品尝一下,然后再根据的自己的实际情况进行修改:
# jobmanager的地址
# 如果jobmanager和taskmanager不在一台主机上,呢就要填写IP地址了
jobmanager.rpc.address: 192.168.1.11
# jobmanager端口号
jobmanager.rpc.port: 6123
# 这里写死taskmanager.host,这个地方你得填集群中所有节点可以访问的地址。
taskmanager.host: 192.168.1.11
#数据端口为6124
taskmanager.data.port: 6124
#RPC端口为6125
taskmanager.rpc.port: 6125
metrics.internal.query-service.port: 6126,6126
# 详情https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/memory/mem_setup_tm/
# 这个是taskmanager运行时总内存
taskmanager.memory.process.size: 1024m
# metaspace元空间
taskmanager.memory.jvm-metaspace.size: 256m
taskmanager.memory.managed.fraction: 0.05
# 默认并行度
parallelism.default: 1
# 插槽数量
taskmanager.numberOfTaskSlots: 4
akka.ask.timeout: 480s
heartbeat.timeout: 480000
# 状态后端
state.backend: filesystem
# checkpoints的地址
state.checkpoints.dir: s3://flink-backend/checkpoints/
# savepoints的地址
state.savepoints.dir: s3://flink-backend/savepoints/
# checkpoints基本间隔设置
execution.checkpointing.interval: 500
# s3相关的东西
s3.endpoint: http://192.168.116.11:9000
s3.path.style.access: true
s3.access-key: minio
s3.secret-key: xxxxxxmima
jobmanager.execution.failover-strategy: region
然后docker-compose up taskmanager
minio
minio有需要的也可以复制一下,很简单。
version: "3.9"
services:
minio:
image: bitnami/minio:2023.2.27
container_name: minio
privileged: true
restart: always
ports:
- '9000:9000'
- '9001:9001'
volumes:
- /mnt/minio/data:/data
environment:
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=xxxxxxmima
networks:
- frontend
- backend
networks:
frontend:
backend:
大功告成
浏览器访问 http://192.168.116.11:8081 。