Flink独立集群部署和HA部署

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 场景描述172.19.9.202 主节点 JobManager 主/从172.19.9.201 从节点 TaskManager 主/从172.19.9.203 从节点 TaskManager 主/从

场景描述

172.19.9.202 主节点 JobManager 主/从

172.19.9.201 从节点 TaskManager 主/从

172.19.9.203 从节点 TaskManager 主/从

一、SSH主节点从节点设置要统一

ssh-keygen -t rsa -P ""  不设置密码
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
ssh localhost

二、将主节点的密钥添加到从节点(其他节点也一样)

scp /root/.ssh/id_rsa.pub root@172.19.9.203:/root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@172.19.9.201:/root/.ssh/authorized_keys

三、在主节点验证是否可以不输入密码登录两个从节点

ssh 172.19.9.201
ssh 172.19.9.203


以上二、三步分别再其他机器上进行配置

四、进入到172.19.9.202的flink配置目录下

cd /usr/local/flink/flink-1.11.2/conf/

修改flink-conf.yaml内容如下,其他配置视情况而定,密钥设置为指向主节点

jobmanager.rpc.address: 172.19.9.202 

1、如果每一台机器都设置为jobmanager.rpc.address: localhost 后 master设置201/203 就是HA

2、如果每一台机器都设置为jobmanager.rpc.address: 172.19.9.202 后

master之能设置202 就是独立集群 一个主节点master。

1. Job Manager的职责

Job Manager负责协调分布式计算节点:也被称为Master 节点。它负责调度任务、协调CheckPoint、故障恢复等。Job

Manager将一个作业分为多个Task,并通过Actor 系统与Task Manager进行相互通信,用于Task的部署、停止、取消。

在高可用部署下会有多个Job Manager,其中有一个Leader、多个Flower。Leader 总是处于Active

状态,为集群提供服务; Flower 处于Standby 状态,在Leader 宕机后会从Flower中选出一个作为Leader

继续为集群提供服务。Job Manager 选举通过ZooKeeper实现。

2. Task Manager的职责
Task Managr也被称为Werker节点:用于执行Job Manager分配的Task (准确来说是SuyTak)。Task Manger将系统资源(CPU、网络、内存)分为多个Task SIot (计算槽) Task运行在具体的Task Slot上: Task Manager通过Actor系统与Job Manager进行相互通信,定期将Task的运行状态和Task Manager 的运行状态提交给Job Managero 多个Task Manager上的Task通过DataStream进行状态计算和结果交互。

定义允许JVM在每个节点上分配的最大主内存量。MB为单位

jobmanager.heap.size: 1024m
taskmanager.heap.size: 2048m

修改masters内容如下

172.19.9.202:8081
#172.19.9.201:8081
#172.19.9.203:8081 

修改workers内容如下 如果没有主节点202作为worker的话 在ui界面就显示不出来有几个TaskManager

172.19.9.203
172.19.9.202
172.19.9.201

五、下载安装zookeeper

版本为:apache-zookeeper-3.5.6-bin.tar.gz 解压 配置zoo.cfg文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
# the port at which the clients will connect
clientPort=2181
#
#如果像设置集群的话在此处配置IP
#server.1=192.168.180.132:2888:3888
#server.2=192.168.180.133:2888:3888
#server.3=192.168.180.134:2888:3888
#
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

配置完成之后记得在tmp下创建对应的文件日志输出路径

然后进入到bin路径下启动zookeeper

 ./zkServer.sh start 

六、修改Flink的配置文件flink-conf.yaml 将zookeeper修改为172.19.9.202上的zookeeper

high-availability: zookeeper
# high-availability.storageDir: hdfs:///flink/ha/
# 高可用模式下的状态存储地址
high-availability.storageDir: file:///data/flink/checkpoints
high-availability.zookeeper.quorum: 172.19.9.202:2181


七、将修改的flink-conf.yaml 、masters、workers三个文件分别传到另外两个flink对应的文件目录下:/usr/local/flink/flink-1.14.0/conf

scp /usr/local/flink/flink-1.14.0/conf/flink-conf.yaml root@172.19.9.201:/usr/local/flink/flink-1.14.0/conf/
scp /usr/local/flink/flink-1.14.0/conf/flink-conf.yaml root@172.19.9.203:/usr/local/flink/flink-1.14.0/conf/
scp /usr/local/flink/flink-1.14.0/conf/masters root@172.19.9.201:/usr/local/flink/flink-1.14.0/conf/
scp /usr/local/flink/flink-1.14.0/conf/masters root@172.19.9.203:/usr/local/flink/flink-1.14.0/conf/
scp /usr/local/flink/flink-1.14.0/conf/workers root@172.19.9.201:/usr/local/flink/flink-1.14.0/conf/
scp /usr/local/flink/flink-1.14.0/conf/workers root@172.19.9.203:/usr/local/flink/flink-1.14.0/conf/

八、启动集群

按照常理说因该配置了ssh只在主节点启动 其他的slaves也就跟着启动了 但我这边202主节点启动 只显示一个 启动203 显示两个 再启动201显示三个 我已经在workers中配置了三个从节点呀 为啥不能一起启动呢 输入的日志是都启动了


203和201都启动后显示三个taskmanager


单独启动202服务器中的./start-cluster.sh显示如下:

[root@localhost bin]# ./start-cluster.sh 
Starting HA cluster with 3 masters.
root@172.19.9.202's password: 
Starting standalonesession daemon on host localhost.localdomain3.
root@172.19.9.201's password: 
Starting standalonesession daemon on host localhost.localdomain2.
root@172.19.9.203's password: 
Starting standalonesession daemon on host localhost.localdomain4.
root@172.19.9.203's password: 
Starting taskexecutor daemon on host localhost.localdomain4.
root@172.19.9.202's password: 
Starting taskexecutor daemon on host localhost.localdomain3.
root@172.19.9.201's password: 
Starting taskexecutor daemon on host localhost.localdomain2.
[root@localhost bin]# 

启动203日志如下:

[root@localhost bin]# ./start-cluster.sh 
Starting HA cluster with 3 masters.
[INFO] 1 instance(s) of standalonesession are already running on localhost.localdomain3.
Starting standalonesession daemon on host localhost.localdomain3.
[INFO] 1 instance(s) of standalonesession are already running on localhost.localdomain2.
Starting standalonesession daemon on host localhost.localdomain2.
root@172.19.9.203's password: 
[INFO] 1 instance(s) of standalonesession are already running on localhost.localdomain4.
Starting standalonesession daemon on host localhost.localdomain4.
root@172.19.9.203's password: 
[INFO] 1 instance(s) of taskexecutor are already running on localhost.localdomain4.
Starting taskexecutor daemon on host localhost.localdomain4.
[INFO] 1 instance(s) of taskexecutor are already running on localhost.localdomain3.
Starting taskexecutor daemon on host localhost.localdomain3.
[INFO] 1 instance(s) of taskexecutor are already running on localhost.localdomain2.
Starting taskexecutor daemon on host localhost.localdomain2.

我突然明白了 因为是我将msater中设置了三个服务器地址,说明三个服务器都是主节点 也都是从节点,三主三从,所以单独启动一个主节点并不会同时启动其他两个主节点进程。


那么我把flink的master设置为单个节点202试一下 改完之后单独在202服务器上启动集群start-cluster.sh还只有一个taskmanager:


发现是忘了改201和203 master文件了 但是改完之后还是没有只启动主节点 其他节点仍然不能伴随启动,所以只能手动启动了。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
30天前
|
Kubernetes 流计算 Perl
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
34 7
|
1月前
|
资源调度 Kubernetes Apache
部署Flink集群后没有资源可能有以下几个原因
【2月更文挑战第23天】 部署Flink集群后没有资源可能有以下几个原因
12 2
|
2月前
|
SQL 消息中间件 Java
Flink部署问题之带上savepoint部署任务报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL Java API
Flink部署问题之committedOffsets指标为负值如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
资源调度 Kubernetes Apache
Flink部署问题之条件筛选失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL 消息中间件 Java
Flink部署问题之编译失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
SQL 关系型数据库 Java
Flink部署问题之不支持SupportsFilterPushDown如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
分布式计算 Java 分布式数据库
Flink部署问题之jobid不变如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
2月前
|
资源调度 Kubernetes Java
Flink--day02、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)
Flink--day022、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)
136 5