首页 > 其他分享 >10分钟入门Flink--安装

10分钟入门Flink--安装

时间:2024-02-11 10:55:16浏览次数:36  
标签:10 Flink -- flink JobManager ZooKeeper 集群 节点

本文介绍Flink的安装步骤,主要是Flink的独立部署模式,它不依赖其他平台。文中内容分为4块:前置准备、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。

演示使用的Flink版本是1.15.4,官方文档地址:https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/try-flink/local_installation/

1、前置准备

1.1、因为后面要搭建集群,所以需要准备3台linux服务器,集群服务器节点提前安装JDK 8以上版本。

1.2、给集群的每台服务器分配好角色。类似下图:

1.3、集群的服务器之间配置好ssh免密登录,避免后续搭建出现麻烦,这一步一定要做。简单步骤如下:

  1. 在master机器执行ssh-keygen -t rsa
  2. 在master机器执行命令,将密钥拷贝到其余服务器ssh-copy-id -i /root/.ssh/id_rsa.pub 目标服务器IP

2、Flink本地模式搭建

搭建本地模式只需要一台服务器。下面以master服务器为例。

2.1、下载安装包

安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2https://archive.apache.org/dist/flink/flink-1.15.4

解压安装包:

tar -xzf flink-1.15.4-bin-scala_2.12.tgz

2.2、启动集群

进入到解压目录下,执行以下脚本:

./bin/start-cluster.sh

通过jps查询相关进程:

17409 TaskManagerRunner
13597 StandaloneSessionClusterEntrypoint

若出现上述进程,则代表启动成功。StandaloneSessionClusterEntrypoint为Flink主进程,即JobManager;TaskManagerRunner为Flink从进程,即TaskManager。

2.3、查看WebUI

在浏览器中访问服务器8081端口即可查看Flink的WebUI,比如http://10.20.0.93:8081/,从WebUI中可以看出,当前本地模式的Task Slot数量和TaskManager数量。访问结果如下图所示:

如果出现访问不通的情况,使用如下方式解决:

正常启动集群后,只能通过http://localhost:8081访问Flink Web UI,如果通过IP地址访问,则出现连接被拒绝的情况。此时需要修改Flink配置文件flink-conf.yaml,将localhost改成0.0.0.0,修改之后重启服务就可以使用IP地址访问。修改部分见下图:

2.4、停止集群

./bin/stop-cluster.sh

3、Flink Standalone搭建

搭建Flink Standalone模式,需要3台服务器。角色安排见下图:

3.1、下载安装包

安装包下载地址https://flink.apache.org/zh/downloads/#apache-flink-2https://archive.apache.org/dist/flink/flink-1.15.4

在JobManager服务器下载安装包,解压安装包:

tar -xzf flink-1.15.4-bin-scala_2.12.tgz -C /data/software/

3.2、修改flink-conf.yaml配置文件

Flink的配置文件都存放于安装目录下的conf目录。在JobManager服务器,进入该目录,执行以下操作。

vim conf/flink-conf.yaml

将文件中jobmanager.rpc.address属性的值改为JobManager机器的ip地址,如下:

jobmanager.rpc.address: 10.20.0.93
jobmanager.bind-host: 0.0.0.0

3.3、修改workers文件

workers文件必须包含所有需要启动的TaskManager节点的主机名,且每个主机名占一行。在JobManager服务器,执行以下操作

vim conf/workers

修改为其余两台TaskManager的ip地址:

10.20.0.92
10.20.0.90

3.4、复制Flink安装文件到其他服务器

在JobManager服务器执行命令,将安装文件复制到其余TaskManager服务器,命令如下:

scp -r /data/software/flink-15.4/ 10.20.0.92:/data/software/flink-15.4/
scp -r /data/software/flink-15.4/ 10.20.0.90:/data/software/flink-15.4/

3.5、启动集群

在JobManager节点上进入Flink安装目录,执行以下命令启动Flink集群:

bin/start-cluster.sh

启动完毕后,在集群各服务器上通过jsp命令查看Java进程。若各节点存在以下进程,则说明集群启动成功:

JobManager节点:StandaloneSessionClusterEntrypoint
TaskManager1节点:TaskManagerRunner
TaskManager2节点:TaskManagerRunner

尝试提交一个简单任务,如果任务正常执行完毕,则集群一切正常。提交Flink自带的简单任务如下:

./bin/flink run examples/streaming/WordCount.jar

3.6、查看WebUI

通过JobManager节点访问WebUI,可以看到此时是1个JobManager,2个TaskManager,也能以上执行完毕的任务,如下图:

4、Flink Standalone HA搭建

4.1、HA模式介绍

在Flink Standalone模式下,实现HA的方式可以利用ZooKeeper在所有正在运行的JobManager实例之间进行分布式协调,实现多个JobManager无缝切换。Flink Standalone模式的HA架构如图:

HA的核心就是:可以在集群中启动多个JobManager,并使它们都向ZooKeeper进行注册,ZooKeeper利用自身的选举机制保证同一时间只有一个JobManager是活动状态(Active)的,其他的都是备用状态(Standby)。当活动状态的JobManager出现故障时,ZooKeeper会从其他备用状态的JobManager选出一个成为活动JobManager。流程见下图:

此外,活动状态的JobManager在工作时会将其元数据(JobGraph、应用程序JAR文件等)写入一个远程持久化存储系统(例如HDFS)中,还会将元数据存储的位置和路径信息写入ZooKeeper存储,以便能够进行故障恢复,如图下图所示:

4.2、角色分配

下面仍然采用前面的的3个节点,在前面已经搭建好的Flink Standalone集群上进行操作。集群角色分配如下图:

搭建步骤如下:

4.3、修改masters文件

Flink的masters文件用于配置所有需要启动的JobManager节点以及每个JobManager的WebUI绑定的端口。

进入centos01节点的Flink安装目录,修改conf/masters文件,修改内容如下:

centos01:8081
centos02:8082

上述配置表示在集群centos01和centos02节点上启动JobManager,并且每个JobManager的WebUI访问端口分别为8081。

4.4、修改flink-conf.yaml文件设置高可用模式

进入centos01节点的Flink安装主目录,修改conf/flink-conf.yaml文件,添加以下内容:

# 将高可用模式设置为ZooKeeper,默认集群不会开启高可用状态
high-availability: zookeeper
# ZooKeeper集群主机名(或IP)与端口列表,多个以逗号分隔
high-availability.zookeeper.quorum: centos01:2181,centos02:2181,centos03:2181
# 用于持久化JobManager元数据(JobGraph、应用程序JAR文件等)的HDFS地址,以便进行故障恢复,ZooKeeper上存储的只是元数据所在的位置路径信息
high-availability.storageDir: /data/software/flink-15.4/ha
# 获取storageDir也可用hdfs,如果使用hdfs的话,则需要单独安装hdfs,本文暂不使用
#high-availability.storageDir: hdfs://centos01:9000/flink/recovery

4.5、修改zoo.cfg文件

Flink内置了ZooKeeper服务和相关脚本文件,如果你的集群中没有安装ZooKeeper,则可以通过修改zoo.cfg文件配置Flink内置的ZooKeeper。生产环境建议使用独立的外部ZooKeeper。

进入centos01节点的Flink安装主目录,修改conf/zoo.cfg文件,添加以下内容,配置ZooKeeper启动节点与选举相关端口:

server.1=centos01:2888:3888
server.2=centos02:2888:3888
server.3=centos03:2888:388

上述配置表示在centos01、centos02和centos03节点上启动ZooKeeper服务,其中1、2、3表示每个ZooKeeper服务器的唯一ID。

4.6、复制Flink安装文件到其他节点

继续采用scp命令,复制centos01的文件到其他节点,scp命令会把相同文件覆盖。

scp -r /data/software/flink-15.4/ centos02:/data/software/flink-15.4/
scp -r /data/software/flink-15.4/ centos03:/data/software/flink-15.4/

4.7、启动ZooKeeper集群

如果使用Flink内置的ZooKeeper,在centos01节点执行以下命令,即可启动整个ZooKeeper集群:

./bin/start-zookeeper-quorum.sh

启动过程见下图:

启动成功后,在每个Flink节点上都会产生一个名为FlinkZooKeeperQuorumPeer的进程,该进程是ZooKeeper服务的守护进程。使用jsp可以查看到如下进程:

4.8、启动Flink Standalone HA集群

在centos01节点上执行以下命令,启动Flink Standalone HA集群:

bin/start-cluster.sh

启动过程类似下图:

单独查看centos01的进程,如下图:

单独查看centos02的进程,如下图:

单独查看centos03的进程,如下图:

在查看/tmp目录,可以看到相关元数据信息:

4.9、访问WebUI

之前的防止,只有centos01可以访问dashboard,现在centos01、centos02都可以访问。

在提交一个测试,如果能正常执行,说明整个集群正常。

./bin/flink run examples/streaming/WordCount.jar

4.10、停止集群

若要停止Flink Standalone HA集群,在centos01节点上首先执行以下命令停止整个Flink集群:

 bin/stop-cluster.sh

然后执行以下命令,停止ZooKeeper集群:

bin/stop-zookeeper-quorum.sh

以上是Flink的安装步骤!下一篇介绍Flink DataStream的概念和使用案例。

原文链接:http://www.mangod.top/articles/2023/07/26/1690349392449.htmlhttps://mp.weixin.qq.com/s/XICBfneJWFe4quwf3kRQXQ

感谢你的阅读,码字不易,欢迎点赞 关注 收藏!!!

标签:10,Flink,--,flink,JobManager,ZooKeeper,集群,节点
From: https://www.cnblogs.com/mangod/p/18013225

相关文章

  • IfcChimneyTypeEnum
    IfcChimneyTypeEnum类型定义此枚举定义了可以使用枚举值预定义的烟囱的有效类型。 IFC4中的新枚举注:目前没有定义特定的枚举器,已添加IfcChimneyTypeEnum以供将来扩展。 EnumerationdefinitionConstantDescriptionUSERDEFINED NOTDEFINED   EXPRESS......
  • 使用UMAP降维可视化RAG嵌入
    大型语言模型(LLMs)如GPT-4已经展示了出色的文本理解和生成能力。但它们在处理领域特定信息方面面临挑战,比如当查询超出训练数据范围时,它们会产生错误的答案。LLMs的推理过程也缺乏透明度,使用户难以理解达成结论的方式。检索增强生成(RAG)在LLMS的工作流程中添加了一个检索步骤,......
  • iOS AlDente 1.0自动防过充, 拯救电池健康度
    经常玩iOS的朋友可能遇到过长时间过充导致的电池鼓包及健康度下降问题。MacOS上同样会出现该问题,笔者用了4年的MBP上周刚拿去修了,就是因为长期不拔电源的充电,开始还是电量一半的时候不接电源会黑屏无法开机,最后连着电源都无法开机了。后来笔者找到了AlDente这款神器,这个软件可以指......
  • 创建企业级地理数据库oracle
    创建oracle地理数据库sde之前写过一篇在postgres数据库中创建sde的教程,由于工作需求,现需要在oracle数据库中创建sde并连接使用,现把主要步骤记录下来,以备后续查看方便。有一说一,开源的postgres数据库创建sde不要太方便,关键是人家还有自己的PostGIS插件以支持空间数据表达,闭源的or......
  • 07-反调试和周杰伦下载
    本节目标:解决无限反调试,下载周杰伦歌曲https://zz123.com1.反调试2.搜索列表importrequestsres=requests.post(url="https://zz123.com/ajax/",data={"act":"search","key":"周杰伦","lang&q......
  • prometheus使用3
    服务发现基于文件的服务发现现有配置:[root@mcw03~]#cat/etc/prometheus.yml#myglobalconfigglobal:scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.evaluation_interval:15s#Evaluaterulesevery15......
  • 创建企业级地理数据库oracle
    创建oracle地理数据库sde之前写过一篇在postgres数据库中创建sde的教程,由于工作需求,现需要在oracle数据库中创建sde并连接使用,现把主要步骤记录下来,以备后续查看方便。有一说一,开源的postgres数据库创建sde不要太方便,关键是人家还有自己的PostGIS插件以支持空间数据表达,闭源的or......
  • CF 1927
    G题面定义\({{dp_i}_j}_k\)为考虑完第i个点,最左边没有染色的点为\(j\),最右边没有染色的点为\(k\)的最小数量。考虑转移(用自己更新别人)如果不用\(i\),直接转移到\({{dp_{i+1}}_j}_k\)。如果向左喷,\(k\)为\(max({i+1,k})\),判断能喷到的位置比\(j\)更靠左,\(j\)将变成\(max({i+2......
  • 11-xx发展
    day11x平台登录地址:https://xuexi.chinabett.com/需求:账户和密码加密图片验证码1.必备知识点本节以上述案例引出接下来的通用知识点,当前知识点不仅可用于本案例,其他案例也可使用。1.1执行JavaScript代码假如在逆向分析时,发现某个js加密算法比较繁琐,用Python还原同样......
  • 13-xx儿升级版
    day13xx儿升级版本节对于Bella的生成进行深度分析上节基于模拟浏览器的方式实现【python、nodejs、pyexecjs】硬核分析找到内部算法,然后用Python还原实现【Python】地址:https://user.qunar.com/passport/login.jsp1.文本......