【大数据实战】Docker中Flink集群搭建
Docker 中部署
使用 Docker 容器完成 Flink 集群的本地设置(在一台机器上,但在单独的容器中)。
在 Docker 上启动会话集群
一个Flink Session 集群可用于运行多个作业。每个作业都需要在集群部署完成后提交到集群。要使用 Docker 部署Flink Session 集群,您需要启动一个 JobManager 容器。为了启用容器之间的通信,我们首先设置一个必需的 Flink 配置属性并创建一个网络:
$ FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager"$ docker network create flink-network
然后我们启动 JobManager:
$ docker run \ --rm \ --name=jobmanager \ --network flink-network \ --publish 8081:8081 \ --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \ flink:1.14.4-scala_2.11 jobmanager
以及一个或多个 TaskManager 容器:
$ docker run \ --rm \ --name=taskmanager \ --network flink-network \ --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \ flink:1.14.4-scala_2.11 taskmanager
Web 界面现在在localhost:8081可用。
现在可以像这样提交作业(假设您有可用的 Flink 本地发行版):
$ ./bin/flink run ./examples/streaming/TopSpeedWindowing.jar
要关闭集群,要么终止(例如CTRL-C
)JobManager 和 TaskManager 进程,要么使用docker ps
标识和docker stop
终止容器。
Flink 与 Docker Compose
以及docker-compose.yml
用于Session Cluster:
version: "2.2"services: jobmanager: image: flink:1.14.4-scala_2.11 ports: - "8081:8081" command: jobmanager environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager taskmanager: image: flink:1.14.4-scala_2.11 depends_on: - jobmanager command: taskmanager scale: 1 environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager taskmanager.numberOfTaskSlots: 2
运行
# 启动$ docker-compose up -d# 关闭$ docker-compose down
Kubernetes-独立模式
本文描述了如何使用 Flink standalone 部署模式在 Kubernetes 上部署 standalone 模式的 Flink 集群。通常我们建议新用户使用 native Kubernetes 部署模式在 Kubernetes上部署 Flink。
并使用 kubectl
命令来创建相应的组件:
# Configuration 和 service 的定义 $ kubectl create -f flink-configuration-configmap.yaml $ kubectl create -f jobmanager-service.yaml # 为集群创建 deployment $ kubectl create -f jobmanager-session-deployment.yaml $ kubectl create -f taskmanager-session-deployment.yaml
接下来,我们设置端口转发以访问 Flink UI 页面并提交作业:
- 运行
kubectl port-forward ${flink-jobmanager-pod} 8081:8081
将 jobmanager 的 web ui 端口映射到本地 8081。 - 在浏览器中导航到 http://localhost:8081 页面。
- 此外,也可以使用如下命令向集群提交作业:
$ ./bin/flink run -m localhost:8081 ./examples/streaming/TopSpeedWindowing.jar
可以使用以下命令停止运行 flink 集群:
$ kubectl delete -f jobmanager-service.yaml $ kubectl delete -f flink-configuration-configmap.yaml $ kubectl delete -f taskmanager-session-deployment.yaml $ kubectl delete -f jobmanager-session-deployment.yaml