使用Docker在本地搭建Flink分布式集群

本文详细介绍Flink集群的搭建步骤,包括环境准备、软件要求、配置文件修改、Hadoop和Zookeeper启动,以及Flink的启动过程。涵盖Standalone模式下的任务处理流程和HA配置细节。

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

Flink典型的任务处理过程如下所示:

Flink安装包下载地址:http://flink.apache.org/downloads.html  ,选择对应Hadoop的Flink版本下载

 Standalone 模式

快速入门教程地址:https://ci.apache.org/projects/flink/flink-docs-release-1.6/quickstart/setup_quickstart.html

1.  软件要求

  • Java 1.8.x或更高版本,
  • ssh(必须运行sshd才能使用管理远程组件的Flink脚本)

集群部署规划

节点masterworkerzookeeper
mastermaster zookeeper
slave1 workerzookeeper
slave2 workerzookeeper
docker run  -p 50070:50070 -p 19888:19888 -p 8088:8088 -p 2181:2181 -p 16010:16010  -p 9092:9092 -9000:9000 --name  master  -ti -h master  linux:hadoop
docker run  -it -h slave1 --name slave1  linux:hadoop  /bin/bash
docker run  -it -h slave2 --name slave2  linux:hadoop  /bin/bash

2. 解压

tar zxvf flink-1.7.1-bin-hadoop27-scala_2.11.tgz

3. 修改配置文件

[root@master conf]$ ls
flink-conf.yaml       log4j-console.properties  log4j-yarn-session.properties  logback.xml       masters  sql-client-defaults.yaml
log4j-cli.properties  log4j.properties          logback-console.xml            logback-yarn.xml  slaves   zoo.cfg

修改flink-conf.yaml


taskmanager.numberOfTaskSlots:2
jobmanager.rpc.address:master

可选配置:

  • 每个JobManager(jobmanager.heap.mb)的可用内存量,
  • 每个TaskManager(taskmanager.heap.mb)的可用内存量,
  • 每台机器的可用CPU数量(taskmanager.numberOfTaskSlots),
  • 集群中的CPU总数(parallelism.default)和
  • 临时目录(taskmanager.tmp.dirs

3.1. HA配置文件

#jobmanager.rpc.address:master   #在master file中配置,由zookeeper选出leader与standby
high-availability:zookeeper                             #指定高可用模式(必须)
high-availability.zookeeper.quorum:master:2181,slave1:2181,slave2:2181  #ZooKeeper仲裁是ZooKeeper服务器的复制组,它提供分布式协调服务(必须)
high-availability.storageDir:hdfs:///flink/ha/       #JobManager元数据保存在文件系统storageDir中,只有指向此状态的指针存储在ZooKeeper中(必须)
high-availability.zookeeper.path.root:/flink         #根ZooKeeper节点,在该节点下放置所有集群节点(推荐) 
high-availability.cluster-id:/flinkCluster           #自定义集群(推荐)
state.backend: filesystem
state.checkpoints.dir: hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/checkpoints

修改conf/zoo.cfg

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

修改conf/masters

master:8081

修改slaves

slave1
slave2

4. 启动Hadoop

hadoop集群,不做演示

[root@master /]# start-dfs.sh
19/01/11 06:35:51 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [master]
master: starting namenode, logging to /usr/local/hadoop/hadoop-2.8.3/logs/hadoop-root-namenode-master.out
slave1: starting datanode, logging to /usr/local/hadoop/hadoop-2.8.3/logs/hadoop-root-datanode-slave1.out
slave2: starting datanode, logging to /usr/local/hadoop/hadoop-2.8.3/logs/hadoop-root-datanode-slave2.out
master: starting datanode, logging to /usr/local/hadoop/hadoop-2.8.3/logs/hadoop-root-datanode-master.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/hadoop-2.8.3/logs/hadoop-root-secondarynamenode-master.out
19/01/11 06:36:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

5. 启动Zookeeper

zookeeper集群,不做演示

[root@master /]# start-zookeeper-quorum.sh 
Starting zookeeper daemon on host master.
Starting zookeeper daemon on host slave1.
Starting zookeeper daemon on host slave2.

6. 启动flink

[root@master /]# start-cluster.sh 
Starting HA cluster with 1 masters.
Starting standalonesession daemon on host master.
Starting taskexecutor daemon on host slave1.
Starting taskexecutor daemon on host slave2.

webUI

### 如何搭建Flink集群 #### 使用 Docker 搭建 Flink 集群 为了简化操作流程,可以采用 `docker-compose` 来快速构建 Flink 集群环境。通过编写合适的 `docker-compose.yml` 文件定义所需的服务组件及其依赖关系,能够实现一键启动整个集群的功能[^1]。 ```yaml version: '2' services: jobmanager: image: flink:latest ports: - "8081:8081" command: jobmanager environment: - JOB_MANAGER_RPC_ADDRESS=jobmanager taskmanager: image: flink:latest depends_on: - jobmanager command: taskmanager environment: - JOB_MANAGER_RPC_ADDRESS=jobmanager ``` 此配置文件创建了一个由 JobManager 和 TaskManager 组成的基础版 Flink 集群实例,并暴露 Web UI 端口以便于管理和监控。 #### 本地模式部署 对于开发和初步测试场景来说,在单机上以本地模式运行可能是更为便捷的选择。这仅需完成以下几个简单动作: - 下载官方提供的稳定版本二进制分发包; - 解压缩至指定目录; - 执行位于 bin 子目录下的 start-cluster.sh 脚本来激活服务进程; 上述过程完成后即成功建立起了一个简易型的伪分布式架构用于实验性质的任务提交与执行[^2]。 #### 自定义配置项调整 当涉及到生产级别的应用时,则有必要深入研究更多高级别的参数设定来优化性能表现以及满足特定业务需求。例如,针对 HA (High Availability) 场景可引入 Zookeeper 实现 Master 的选举机制,确保系统的可靠性和稳定性[^4]。 - 修改 conf/flink-conf.yaml 中的相关条目加入 zookeeper.quorum 参数指向外部已有的 ZK 实例地址列表; - 同样在此处补充 ha.storageDir 设置持久化元数据存储路径从而支持故障恢复能力。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值