Docker中部署Flink:快速部署调试各版本

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616


最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能、开发运维相关技术分享,文章对您有用的话,辛苦您也关注下公众号,感谢!
      
   

使用 Docker 搭建 Flink 集群教程

应用场景

Flink 在 Docker 中的应用场景主要是为了简化集群的部署和管理,特殊是在开发、测试以及小规模生产环境中。使用 Docker 可以快速启动、停止和重启集群,避免手动配置和依赖管理的复杂性。以下是一些具体的应用场景和恰当使用 Docker 的情况:

  • 快速本地开发与测试


  • 场景: 开发者在本地环境中测试 Flink 作业或应用时,不必要配置复杂的集群环境。
  • 上风: Docker 可以快速搭建完备的 Flink 环境,包括 JobManager 和 TaskManager,无需手动安装或配置依赖。

  • 分布式盘算的调试与调优


  • 场景: 必要对 Flink 的分布式盘算特性进行调试或性能调优。
  • 上风: 通过 Docker,开发者可以模仿集群环境下的分布式任务执行,调整并行度、任务槽(task slots)等配置以优化性能。

  • 集群环境的一键部署


  • 场景: 必要快速部署一个可用的 Flink 集群用于演示或实验。
  • 上风: 使用 Docker Compose 可以轻松启动包含多个 TaskManager 和 JobManager 的 Flink 集群,恰当进行短期测试或实验。

  • 连续集成/连续部署(CI/CD)


  • 场景: 在自动化的 CI/CD 流程中运行 Flink 作业进行测试或验证。
  • 上风: Docker 容器化的 Flink 环境可以嵌入到 CI/CD 管道中,实现 Flink 作业的自动化测试和部署。

  • 简化的依赖管理


  • 场景: 在差别环境中运行 Flink 时,存在 JDK、Scala 或其他依赖的版本冲突。
  • 上风: 使用 Docker 可以打包所有所需依赖,确保差别环境下的一致性,避免版本冲突问题。

  • 临时或小规模生产环境


  • 场景: 临时项目或小规模的生产环境中,要求快速搭建并处置惩罚流数据任务。
  • 上风: Docker 提供的轻量化隔离环境,可以满足这些需求,而无需部署复杂的大规模集群。
环境准备

在开始之前,确保你拥有以下版本的工具:


  • Flink:1.16.3
  • Scala:2.12
  • JDK:1.8
  • Docker:已安装
拉取Flink镜像

首先,使用以下下令从 Docker Hub 拉取指定版本的 Flink 镜像:
  1. docker pull flink:1.16.3-scala_2.12-java8
复制代码
如果由于网络问题无法拉取该镜像,可以使用阿里云的加速镜像:
  1. docker pull registry.cn-hangzhou.aliyuncs.com/images-speed-up/flink:1.16.3-scala_2.12-java8
复制代码
  提示: 差别版本的镜像可以在 [Docker Hub] https://hub.docker.com/_/flink/tags?page_size=&ordering=&name=1.16.3 上进行查找。
  启动 Flink 集群

1. 创建工作目录

首先,创建一个目录用于存放 Flink 集群的相关文件:
  1. mkdir ~/flink && cd ~/flink
复制代码
2. 创建 Docker Compose 文件

在该目录下创建一个名为 docker-compose.yml 的文件,内容如下:
  1. version: '3'
  2. services:
  3.   jobmanager:
  4.     image: flink:1.16.3-scala_2.12-java8
  5.     hostname: jobmanager
  6.     container_name: jobmanager
  7.     ports:
  8.       - "8081:8081"
  9.     environment:
  10.       - |
  11.         FLINK_PROPERTIES=
  12.         jobmanager.rpc.address: jobmanager
  13.         parallelism.default: 1
  14.     command: jobmanager
  15.   taskmanager:
  16.     image: flink:1.16.3-scala_2.12-java8
  17.     hostname: taskmanager
  18.     container_name: taskmanager
  19.     environment:
  20.       - |
  21.         FLINK_PROPERTIES=
  22.         jobmanager.rpc.address: jobmanager
  23.         taskmanager.numberOfTaskSlots: 2
  24.         parallelism.default: 1
  25.     depends_on:
  26.       - jobmanager
  27.     command: taskmanager
复制代码
3. 启动 Flink 集群

通过以下下令启动 Flink 集群:
  1. docker-compose up -d
复制代码
等候容器启动后,你可以通过访问 http://localhost:8081 来打开 Flink 的 Web 界面,以检查集群是否乐成启动。
同时也可以看到我们上面设置的配置slot参数也生效

4. 参数阐明

服务名称配置项阐明jobmanagerimage使用指定版本的 Flink 镜像启动容器hostname设置容器主机名为 jobmanagercontainer_name容器名称为 jobmanagerports将容器的 8081 端口映射到宿主机的 8081 端口environment设置环境变量,配置 Flink 的属性,包括 jobmanager 的 RPC 地址和默认并行度command指定启动 jobmanager 服务taskmanagerimage使用雷同的 Flink 镜像启动容器hostname设置容器主机名为 taskmanagercontainer_name容器名称为 taskmanagerenvironment设置环境变量,包括 TaskManager 的 Task Slots 数量和默认并行度depends_on依赖于 jobmanager 服务,确保先启动 jobmanagercommand启动 taskmanager 服务 运行 Flink 程序

1. 准备测试程序

测试程序包括以下文件:


  • flink-docker-1.0.jar:用于循环统计单词数量的测试代码。
  • lib/:依赖的外部库文件。
  • start.sh:启动脚本。
将这些文件复制到 jobmanager 容器中:
  1. docker cp flink-docker-1.0.jar jobmanager:/flink-docker-1.0.jar
  2. docker cp lib/ jobmanager:/flink-docker-lib/
  3. docker cp start.sh jobmanager:/start.sh
复制代码
可以通过以下下令查看文件是否乐成复制:
  1. docker exec jobmanager ls /
复制代码
2. 运行测试程序

在 jobmanager 容器中执行以下下令,运行测试程序:
  1. docker exec -it jobmanager bash /start.sh
复制代码
你可以通过 Flink 的 Web UI 监控作业的执行情况,访问 http://localhost:8081,在 Running Jobs 选项卡中查看当前正在运行的作业。

提示: 对于简单任务,Flink 的 Web UI 提交任务也是一个便捷选择。

总结

通过本文介绍的步骤,你可以快速搭建并运行一个基于 Docker 的 Flink 集群。接下来,你可以根据必要调整 TaskManager 的数量、任务并行度等配置,以满足现实应用需求。
参考资料



  • 官方文档:Flink 集群 Docker 部署:https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/docker/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表