[Flink03] Flink安装

本文介绍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-2、https://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-2、https://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.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/394180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm 调试过程中控制台 (Console) 窗口内运行命令 - 实时获取中间状态

PyCharm 调试过程中控制台 [Console] 窗口内运行命令 - 实时获取中间状态 1. yongqiang.py2. Debugger -> Console3. Show Python PromptReferences 1. yongqiang.py #!/usr/bin/env python # -*- coding: utf-8 -*- # yongqiang chengfrom __future__ import absolute_imp…

边坡位移监测设备:守护工程安全的前沿科技

随着现代工程建设的飞速发展,边坡位移监测作为预防山体滑坡、泥石流等自然灾害的重要手段,日益受到人们的关注。边坡位移监测设备作为这一领域的关键技术,以其高精度、实时监测的特点,成为守护工程安全的重要武器。 一、边坡位移…

某行的行走艺术: 一项基于SpringBoot的web系统后端专利

各位盆友,听说了没?某银行搞了个大新闻,一项新专利"Cool Walk in Web-ville"(就是那个“基于SpringBoot的web系统后端实现方法及装置”),号称是网页后台的新时尚,走在了技术的最前沿。…

达梦数据库——数据迁移sqlserver-dm报错问题整理

报错情况一:Sql server迁移达梦连接报错’驱动程序无法通过使用安全套接字Q层(SSL)加密与SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferencesITLS127‘ 原因:历史版本的SOL SERVER服务…

notepad++运行python闪一下就没啦

问题:Notepad直接快捷键运行Python代码,出现闪一下就没了 解决措施: ①点击菜单运行(Run) --> 运行(Run)弹出的对话框 ②把 cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT 粘贴进入这个对话框内 ③点击保存&a…

机器人常用传感器分类及一般性要求

机器人传感器的分类 传感技术是先进机器人的三大要素(感知、决策和动作)之一。根据用途不同,机器人传感器可以分为两大类:用于检测机器人自身状态的内部传感器和用于检测机器人相关环境参数的外部传感器。 内部传感器 内部传感…

LiveGBS流媒体平台GB/T28181功能-自定义收流端口区间30000至30249UDP端口TCP端区间配置及相关端口复用问题说明

LiveGBS自定义收流端口区间30000至30249UDP端口TCP端区间配置及相关端口复用问题说明 1、收流端口配置1.1、INI配置1.2、页面配置 2、相关问题3、最少可以开放多少端口3.1、端口复用3.2、配置最少端口如下 4、搭建GB28181视频直播平台 1、收流端口配置 1.1、INI配置 可在lives…

【Jvm】运行时数据区域(Runtime Data Area)原理及应用场景

文章目录 前言:Jvm 整体组成 一.JDK的内存区域变迁Java8虚拟机启动参数 二.堆0.堆的概念1.堆的内存分区2.堆与GC2.1.堆的分代结构2.2.堆的分代GC2.3.堆的GC案例2.4.堆垃圾回收方式 3.什么是内存泄露4.堆栈的区别5.堆、方法区 和 栈的关系 三.虚拟机栈0.虚拟机栈概念…

如何实现批量获取电商数据自动化商品采集?如何利用电商数据API实现业务增长?

随着电子商务的快速发展,数据已经成为了电商行业最重要的资产之一。在这个数据驱动的时代,电商数据API(应用程序接口)的作用日益凸显。通过电商数据API,商家能够获取到大量关于消费者行为、产品表现、市场趋势等有价值…

SpringCloud Ribbon负载均衡的策略总结

1. 轮询策略 2. 权重轮询策略 3. 随机策略 4. 最少并发数策略 5. 在选定的负载均衡策略基础上重试机制 6. 可用性敏感策略。 7. 区域敏感策略

沁恒CH32V30X学习笔记05--串口接收中断和空闲中断组合接收数据

同步异步收发器(USART)** 包含 3 个通用同步异步收发器(USART1/2/3)和 5 个通用异步收发器(UART4/5/6/7/8) 空闲帧,空闲帧是 10 位或 11 位高电平,包含停止位。 断开帧是 10 位或 11 位低电平,后跟着停止位 引脚模式配置 引脚分配 bsp 驱动代码 bsp_uart_it.c /…

解析线性回归:从基础概念到实际应用

目录 前言1 什么是线性回归2 线性回归的一些概念2.1 样本集与样本2.2 实际值与估计值2.3 模型参数与最小二乘法2.4 残差与拟合优度 3 线性回归的应用场景3.1 销售预测3.2 医学数据分析3.3 金融市场分析 结语 前言 线性回归,被誉为统计学与机器学习领域的明星算法&a…

冒泡排序:原理、实现与性能分析

引言 在编程世界中,排序算法是不可或缺的一部分。冒泡排序作为最基本的排序算法之一,虽然其效率并不是最高的,但其实现简单、易于理解的特点使得它成为学习和理解排序算法的入门之选。本文将详细介绍冒泡排序的原理、实现方法以及性能分析&a…

python如何模拟登录Github

首先进入github登录页:https://github.com/login 输入账号密码,打开开发者工具,在Network页勾选上Preserve Log(显示持续日志),点击登录,查看Session请求,找到其请求的URL与Form Da…

【Linux网络】网络编程套接字(预备知识+UDP)

目录 预备知识 1. 理解源IP地址和目的IP地址 2. 理解源MAC地址和目的MAC地址 3. 认识端口号 4. 理解源端口号和目的端口号 5. 端口号(port) vs 进程pid 6. 认识TCP协议和认识UDP协议 7. 网络字节序 socket编程接口 1. socket 常见API 2. sock…

Discuz! X收藏列表页调用封面图片详细教程

Discuz! X默认收藏列表不显示封面图,我们接到客户需求要开发封面图功能在帖子列表,这是我们整理好的详细教程,下载即可查看 修改后,显示封面的收藏列表截图: 详细开发教程下载地址:Discuz! X收藏列表页调用…

ad18学习笔记十八:如何单独设置某一铺铜与导线的间距

网上找的很多内容都是ad18之前的旧版本,ad18对应的介绍特别少。 直接设置全局的铺铜规格比较容易: Altium Designer教程系列:深入学习铺铜操作 (baidu.com) Altium Designer规则及覆铜设计小技巧 (baidu.com) 单独给某一片铺铜区域设置规则…

C语言每日一题(59)左叶子之和

题目链接 力扣网404 左叶子之和 题目描述 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 2…

QGis —— 1、Windows10下载安装QGis及插件

QGis官网 QGIS(自由开源的地理信息系统)是一个专业的GIS应用程序,它建立在免费和开源软件(FOSS)之上,并为此而自豪。QGIS 是一个方便使用的开源地理信息系统 (GIS),根据 GNU 通用公共许可授权。…

【c++ debug】记一次protobuf结构相关的coredump问题

文章目录 1. 问题现象2. 问题描述3. 问题分析4. 问题根因5. 问题修复6. 补充:类成员变量定义为引用类型 1. 问题现象 其中curr_lanes是一个目标上一帧的当前车道current_lanes_curr_lane是lane_id对应的LaneInfo信息现象:在lane_info->lane().success…