获取镜像
# 查看可用的稳定版本
sudo docker search flink
sudo docker pull fhueske/flink-sql-client-training-1.7.2:latest
sudo docker pull flink:1.10-scala_2.11
sudo docker pull wurstmeister/zookeeper
sudo docker pull wurstmeister/kafka:0.11.0.1
sudo docker pull elasticsearch:6.7.0
sudo docker image ls |grep flink
Flink环境准备
此次安装是基于Docker进行的,因此你只需要安装了Docker即可。不需要依赖Java、Scala环境、或是IDE。注意:Docker默认配置的资源可能不太够,会导致运行Flink Job时卡死。因此推荐配置Docker资源到3-4GB,3-4个CPU cores。
此次安装的环境使用Docker Compose来安装,包含了所需的各种服务的容器,包括:
- Flink SQL Client:用来提交query,以及可视化结果。
- Flink JobManager 和 TaskManager:用来运行Flink SQL任务。
- Apache Kafka:用来生成输入流和写入结果流。
- Apache Zookeeper:Kafka的依赖项。
- ElasticSearch:用来写入结果。
服务编排
编排文件如下:mkdir -p /share/flink && cd /share/flink
rm -rf /share/flink/docker-compose.yml
vi /share/flink/docker-compose.yml
version: '2'
services:
sql-client:
image: fhueske/flink-sql-client-training-1.7.2:latest
depends_on:
- kafka
- jobmanager
- elasticsearch
environment:
FLINK_JOBMANAGER_HOST: jobmanager
ZOOKEEPER_CONNECT: zookeeper
KAFKA_BOOTSTRAP: kafka
ES_HOST: elasticsearch
jobmanager:
image: flink:1.10-scala_2.11
hostname: "jobmanager"
expose:
- "6123"
ports:
- "8081:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
taskmanager:
image: flink:1.10-scala_2.11
expose:
- "6121"
- "6122"
depends_on:
- jobmanager
command: taskmanager
links:
- jobmanager:jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:0.11.0.1
ports:
- "9092"
depends_on:
- zookeeper
environment:
HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
elasticsearch:
image: elasticsearch:6.7.0
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
ports:
- "9200:9200"
- "9300:9300"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
服务构建
cd /share/flink
sudo docker-compose -f docker-compose.yml build --no-cache # 不带缓存构建(只创建镜像,不会启动容器)
sudo docker-compose -f docker-compose.yml up -d # 构建后运行
sudo docker-compose -f docker-compose.yml up --build # 跟踪方式构建,可用于调试
sudo docker-compose -f docker-compose.yml stop # 停止
sudo docker-compose -f docker-compose.yml down # 移除
验证
cd /share/flink
# 查看进程
sudo docker-compose -f docker-compose.yml ps
# 进入Flink SQL Client
sudo docker-compose exec sql-client ./sql-client.sh
# jobmanager
sudo docker-compose exec jobmanager /bin/bash
# 批量WordCoun示例
./bin/flink run examples/batch/WordCount.jar
# 查看日志
sudo docker logs flink
sudo docker logs -f -t --tail=50 flink
# 查看网络
sudo docker network ls
sudo docker inspect flink
参考
语雀:Flink SQL训练环境搭建
https://www.yuque.com/studys/gk4weq/rh1ldu