【大数据实战】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

版权声明:本文为qq_15604349原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>