1. 环境搭建
1.1 安装 docker 和 docker-compose
在 centos7 上安装 docker 和 docker-compose, 可以参考这篇文章
1.2 设置 docker 非 root 用户启动
使用 root 用户启动 docker 有安全隐患, 所以最好设置 docker 非 root 用户启动, 设置方法是将普通用户加入 docker 组, 具体操作如下
// 查看 docker 组是否存在, 没有的话使用 sudo groupadd docker 添加
sudo cat /etc/group |grep docker
// 将 tmp 用户加入 docker 组
sudo gpasswd -a tmp docker
// 刷新用户组
newgrp docker
1.3 配置相关容器
需要启动的容器包括:
- Flink 的 jobmanager: 负责提交及查看任务
- Flink 的 taskmanager: 负责执行任务
- kafka: 负责数据的缓存和分发
- zookeeper: 负责集群调度
- almond: 负责启动包含 Scala 内核的 Jupyter
- redis: 存储数据
docker-compose.yml
内容如下:
version: '3.8'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
container_name: kafka
image: wurstmeister/kafka
depends_on: [ zookeeper ]
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: xxx.xx.xx.xx
KAFKA_CREATE_TOPICS: "Topic1:1:3,Topic2:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
jobmanager:
container_name: jobmanager
image: flink:latest
ports:
- "8081:8081"
command: jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager:
container_name: taskmanager
image: flink:latest
depends_on:
- jobmanager
command: taskmanager
scale: 1
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
almond: