Flink 集群/任务容器化

本文介绍如何使用Docker及Docker Compose部署Apache Flink集群,并通过具体示例演示构建Flink镜像及运行WordCount任务的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Overview

/path/to/flink/flink-container/docker
├── Dockerfile
├── README.md
├── build.sh
├── docker-compose.yml
├── docker-entrypoint.sh
└── test-job-cluster.sh

0 directories, 6 files

Flink Dockerfile 走读已经介绍了 Flink 的镜像应该如何构建了,接下来,本文解释一下如何利用 Docker 来部署 Flink。

2 Docker Compose

以下是 docker-compose.yml 的内容。

# 省略 License
# Docker compose file for a Flink job cluster deployment.
# 注意下面这些参数的设置
# Parameters:
# * FLINK_DOCKER_IMAGE_NAME - Image name to use for the deployment (default: flink-job:latest)
# * FLINK_JOB - Name of the Flink job to execute (default: none)
# * DEFAULT_PARALLELISM - Default parallelism with which to start the job (default: 1)
# * FLINK_JOB_ARGUMENTS - Additional arguments which will be passed to the job cluster (default: none)
# * SAVEPOINT_OPTIONS - Savepoint options to start the cluster with (default: none)

version: "2.2"
services:
  job-cluster:
    image: ${FLINK_DOCKER_IMAGE_NAME:-flink-job}
    ports:
      - "8081:8081"
    command: job-cluster --job-classname ${FLINK_JOB} -Djobmanager.rpc.address=job-cluster -Dparallelism.default=${DEFAULT_PARALLELISM:-1} ${SAVEPOINT_OPTIONS} ${FLINK_JOB_ARGUMENTS}

  taskmanager:
    image: ${FLINK_DOCKER_IMAGE_NAME:-flink-job}
    command: task-manager -Djobmanager.rpc.address=job-cluster
    scale: ${DEFAULT_PARALLELISM:-1}

3 Example

好了,万事俱备,现在就在本地跑起来一个 Flink Job on Docker!

首先先构建镜像,可以参考下面的命令,当然这些变量可以根据文档自行定义。因为我没有自己写的用户代码,这里用 Flink 的 Example 下面的 WordCount.jar 来构建镜像,到时候就跑一个 WordCount 的 Job。而且我用的是官网下载的发行版,所以可以看到参数 --from-archive。默认构建的镜像叫做 flink-job:latest

./build.sh --from-archive ~/Downloads/flink-1.8.1-bin-scala_2.11.tgz --job-artifacts /Users/runzhliu/Downloads/flink-1.8.1/examples/batch/WordCount.jar

image_1dg6ll62ce86n0daq61lb61q181j.png-723.2kB

镜像构建好了,就用 docker compose up,启动容器。可以参考下面的命令。注意 FLINK_JOB 需要输入包含包名的类名,否则会找不到类。

FLINK_JOB=org.apache.flink.examples.java.wordcount.WordCount docker-compose up

image_1dg6lahldmopcnk1df819tjub316.png-522.3kB

运行中的日志。

image_1dg6l9iff4to1trllth17kf16fvp.png-574.4kB

如果速度快,可以看到 Flink UI。

image_1dg6l930k4qd1498l3uc41d5dc.png-121.3kB

4 Summary

根据官方提供的工具,现在就已经可以将 Flink Job 以 Docker 的方式运行起来了,这是给后面将 Flink Job 运行在 K8S 上的基础。

<think>嗯,用户问的是Flink集群搭建,需要我给出一个结构清晰的步骤介绍。首先,我得回忆一下Flink的基本架构,了解它有哪些部署模式,比如Standalone、YARN、Kubernetes等。用户可能刚开始接触,所以应该从最简单的Standalone模式开始,再逐步深入其他方式。 接下来,需要确定用户的环境,可能他们用的是Linux系统,所以步骤里要包括Java环境的安装,毕竟Flink依赖Java。要提醒用户检查Java版本,Flink 1.11+需要Java 8或者11,这点很重要,版本不对会导致安装失败。 然后,下载和解压Flink的安装包,这里要给出具体的命令,比如wget或者curl,还有tar解压。可能需要确认最新的稳定版本,所以得去官网查一下当前版本号,比如1.17.0,或者用最新的,但用户可能希望示例具体,所以直接写出来比较好。 配置部分,主要是修改flink-conf.yaml,设置jobmanager和taskmanager的参数,比如内存大小。还有workers文件,添加节点主机名或IP。这里要注意主节点和从节点的配置区别,主节点运行JobManager,从节点运行TaskManager。 启动集群的命令需要详细,包括start-cluster.sh,以及如何验证集群状态,通过访问Web UI的8081端口。这部分要确保用户知道如何检查是否成功启动。 可能用户还需要验证集群是否正常工作,比如提交一个测试作业,用自带的WordCount例子,这样能直观看到结果。这里需要给出具体的命令,包括提交作业和执行任务的步骤。 另外,用户可能有不同的需求,比如资源管理,这时候可以扩展介绍YARN或Kubernetes模式,但作为初步搭建,Standalone已经足够。不过还是需要简要提及其他模式,让用户知道有更多选项。 需要注意的部分,比如防火墙设置,端口开放,SSH免密登录,这些在分布式环境中是关键点,如果用户在多台机器上部署,必须确保节点间的通信正常。还有时间同步,避免因为时间不同步导致的问题,这也是集群搭建常见的坑。 最后,参考资料要给出官网链接,方便用户查阅最新文档。整个思考过程中,要确保步骤清晰,命令准确,避免遗漏关键点,同时用中文通俗易懂地表达出来,让新手也能一步步跟着操作。</think>Flink集群搭建可分为以下步骤(以Standalone模式为例): 一、环境准备 1. 服务器要求 - 至少2台Linux服务器(1个JobManager + 至少1个TaskManager) - 推荐配置:4核CPU/8GB内存/50GB硬盘 - 网络互通,开放端口:8081(Web UI), 6123(TaskManager通信)等 2. 前置条件 $$ Java \geq 8 \quad (推荐JDK11) $$ SSH免密登录配置(节点间) 二、安装步骤 1. 下载安装包 ```bash wget https://dlcdn.apache.org/flink/flink-1.17.0/flink-1.17.0-bin-scala_2.12.tgz tar -xzf flink-1.17.0-bin-scala_2.12.tgz cd flink-1.17.0 ``` 2. 主节点配置(JobManager) 修改conf/flink-conf.yaml: ```yaml jobmanager.rpc.address: master-hostname jobmanager.memory.process.size: 1600m taskmanager.memory.process.size: 4096m ``` 3. 工作节点配置(TaskManager) 修改conf/workers文件: ``` worker1-hostname worker2-hostname ``` 三、启动集群 ```bash # 在主节点执行 ./bin/start-cluster.sh # 验证状态 jps # 应看到StandaloneSessionClusterEntrypoint进程 访问 http://<jobmanager-host>:8081 ``` 四、集群验证 ```bash # 提交测试作业 ./bin/flink run examples/streaming/WordCount.jar # 查看运行中的任务 ./bin/flink list ``` 五、扩展模式(可选) 1. YARN模式:利用Hadoop资源管理 2. Kubernetes模式:容器化部署 3. HA模式:通过ZooKeeper实现高可用 注意要点: 1. 确保所有节点时间同步(NTP服务) 2. 防火墙需开放必要端口 3. 配置文件路径需保持集群内一致 4. 推荐使用相同硬件配置的节点 建议初次部署先使用Standalone模式,熟悉后再尝试集成其他资源管理器。生产环境建议使用高可用配置并配合监控系统(如Prometheus)使用。 参考资料: - 官方文档:https://nightlies.apache.org/flink/flink-docs-stable/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值