> 文档中心 > 【大数据实战】Docker中Flink集群搭建

【大数据实战】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 页面并提交作业:

  1. 运行 kubectl port-forward ${flink-jobmanager-pod} 8081:8081 将 jobmanager 的 web ui 端口映射到本地 8081。
  2. 在浏览器中导航到 http://localhost:8081 页面。
  3. 此外,也可以使用如下命令向集群提交作业:
$ ./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