Flink安装及简单使用
目录
转载处(个人用最新1.17.1测试)
依赖环境
安装包下载地址
Flink本地模式搭建
安装
启动集群
查看WebUI
停止集群
Flink Standalone搭建
安装
修改flink-conf.yaml配置文件
修改workers文件
复制Flink安装文件到其他服务器
启动集群
查看WebUI
Flink Standalone HA搭建
HA模式介绍
角色分配
修改masters文件
修改flink-conf.yaml文件设置高可用模式
修改zoo.cfg文件
复制Flink安装文件到其他节点
启动ZooKeeper集群
启动Flink Standalone HA集群
访问WebUI
停止集群
转载处(个人用最新1.17.1测试)
http://www.mangod.top/articles/2023/07/26/1690349392449.html
依赖环境
操作系统:Rocky 8.8
提前安装JDK 8以上版本,JDK 只要不低于 1.8 就行。
https://mohen.blog.csdn.net/article/details/109465678
安装包下载地址
现在最新版本为 1.17.1
https://archive.apache.org/dist/flink/flink-1.17.1/flink-1.17.1-bin-scala_2.12.tgz
wget https://archive.apache.org/dist/flink/flink-1.17.1/flink-1.17.1-bin-scala_2.12.tgz
Flink本地模式搭建
安装
解压安装包
tar -zxvf flink-1.17.1-bin-scala_2.12.tgz
启动集群
进入到解压目录下,执行以下脚本
./bin/start-cluster.sh
通过 jps 命令查询相关进程
若出现上述进程,则代表启动成功。StandaloneSessionClusterEntrypoint为Flink主进程,即JobManager;TaskManagerRunner为Flink从进程,即TaskManager。
查看WebUI
在浏览器中访问服务器8081端口即可查看Flink的WebUI,比如http://10.20.0.93:8081/,从WebUI中可以看出,当前本地模式的Task Slot数量和TaskManager数量。访问结果如下图所示:
默认只允许本地访问
打开远程访问web
关闭防火墙
systemctl stop firewalld.service 修改配置
vim conf/flink-conf.yaml
停止集群
./bin/stop-cluster.sh
Flink Standalone搭建
安装
搭建Flink Standalone模式,需要3台服务器。角色安排见下图:
在JobManager服务器下载安装包,解压安装包:
tar -xzf flink-1.17.1-bin-scala_2.12.tgz -C /data/software/
修改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
修改workers文件
workers文件必须包含所有需要启动的TaskManager节点的主机名,且每个主机名占一行。在JobManager服务器,执行以下操作
vim conf/workers
修改为其余两台TaskManager的ip地址:
10.20.0.92
10.20.0.90
复制Flink安装文件到其他服务器
在JobManager服务器执行命令,将安装文件复制到其余TaskManager服务器,命令如下:
scp -r /data/software/flink-1.17.1/ 10.20.0.92:/data/software/flink-1.17.1/
scp -r /data/software/flink-1.17.1/ 10.20.0.90:/data/software/flink-1.17.1/
启动集群
在启动或关闭集群的时候应该会让你输入 Worker 节点的登陆密码,而且是每一个 Worker 节点都要输入一遍。显然这样就太麻烦了,因此我们可以提前配置一下。
# 生成私钥和公钥,一路回车即可
# 生成的私钥存放在 id_rsa 文件中、公钥则存放在 id_rsa.pub 文件中
ssh-keygen -t rsa
cd ~/.ssh # 进入到家目录的 .ssh 目录中
touch authorized_keys # 创建 authorized_keys 文件
在每个节点上都执行上面几个步骤,那么所有节点的 .ssh 目录中都有 id_rsa、id_rsa.pub 和 authorized_keys 这三个文件。如果想要实现免登陆的话,假设在 A 节点中远程登陆 B 节点想不输入密码,那么就把 A 节点的 id_rsa.pub 里面的内容添加到 B 节点的 authorized_keys 文件中即可。但是注意,这个过程是单向的,如果在 B 节点中远程登陆 A 节点也不想输入密码的话,那么就把 B 节点的 id_rsa.pub 里面的内容添加到 A 节点的 authorized_keys 中。
# 可以通过 ssh-copy-id 命令帮助我们完成这一过程
[root@satori-001 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90
...... 一堆输出 .......
...... 提示你输入 10.20.0.90 节点的密码 ......
...... 一堆输出 ......[root@satori-001 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
...... 一堆输出 .......
...... 提示你输入 10.20.0.92 节点的密码 ......
...... 一堆输出 ......[root@satori-001 .ssh]#
以上我们在 satori-001 节点远程登录 satori-002 和 satori-003 就无需再输入密码了,同理我们还要在 satori-002、satori-003 上也重复相同的操作,让集群中所有节点之间的通信都畅通无阻。
[root@satori-002 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
[root@satori-002 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90[root@satori-003 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.92
[root@satori-003 .ssh]# ssh-copy-id -i id_rsa.pub root@10.20.0.90
在JobManager节点上进入Flink安装目录,执行以下命令启动Flink集群:
bin/start-cluster.sh
启动完毕后,在集群各服务器上通过jsp命令查看Java进程。若各节点存在以下进程,则说明集群启动成功:
JobManager节点:StandaloneSessionClusterEntrypoint
TaskManager1节点:TaskManagerRunner
TaskManager2节点:TaskManagerRunner
尝试提交一个简单任务,如果任务正常执行完毕,则集群一切正常。提交Flink自带的简单任务如下:
./bin/flink run examples/streaming/WordCount.jar
查看WebUI
通过JobManager节点访问WebUI,可以看到此时是1个JobManager,2个TaskManager,也能以上执行完毕的任务,如下图:
Flink Standalone HA搭建
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存储,以便能够进行故障恢复,如图下图所示:
角色分配
下面仍然采用前面的的3个节点,在前面已经搭建好的Flink Standalone集群上进行操作。集群角色分配如下图:
修改masters文件
Flink的masters文件用于配置所有需要启动的JobManager节点以及每个JobManager的WebUI绑定的端口。
进入centos01节点的Flink安装目录,修改conf/masters文件,修改内容如下:
centos01:8081
centos02:8082
上述配置表示在集群centos01和centos02节点上启动JobManager,并且每个JobManager的WebUI访问端口分别为8081,8082。
修改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-1.17.1/ha# 获取storageDir也可用hdfs,如果使用hdfs的话,则需要单独安装hdfs,本文暂不使用
#high-availability.storageDir: hdfs://centos01:9000/flink/recovery
修改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:3888
上述配置表示在centos01、centos02和centos03节点上启动ZooKeeper服务,其中1、2、3表示每个ZooKeeper服务器的唯一ID。
复制Flink安装文件到其他节点
继续采用scp命令,复制centos01的文件到其他节点,scp命令会把相同文件覆盖。
scp -r /data/software/flink-1.17.1/ centos02:/data/software/flink-1.17.1/
scp -r /data/software/flink-1.17.1/ centos03:/data/software/flink-1.17.1/
启动ZooKeeper集群
如果使用Flink内置的ZooKeeper,在centos01节点执行以下命令,即可启动整个ZooKeeper集群:
./bin/start-zookeeper-quorum.sh
启动过程见下图
启动成功后,在每个Flink节点上都会产生一个名为FlinkZooKeeperQuorumPeer的进程,该进程是ZooKeeper服务的守护进程。使用jsp可以查看到如下进程:
启动Flink Standalone HA集群
在centos01节点上执行以下命令,启动Flink Standalone HA集群:
bin/start-cluster.sh
启动过程类似下图:
单独查看centos01的进程,如下图:
单独查看centos02的进程,如下图:
单独查看centos03的进程,如下图:
在查看/tmp目录,可以看到相关元数据信息:
访问WebUI
之前的防止,只有centos01可以访问dashboard,现在centos01、centos02都可以访问。
在提交一个测试,如果能正常执行,说明整个集群正常。
./bin/flink run examples/streaming/WordCount.jar
停止集群
若要停止Flink Standalone HA集群,在centos01节点上首先执行以下命令停止整个Flink集群:
bin/stop-cluster.sh
然后执行以下命令,停止ZooKeeper集群:
bin/stop-zookeeper-quorum.sh
以上是Flink的安装步骤!下一篇介绍Flink DataStream的概念和使用案例。
相关文章:
Flink安装及简单使用
目录 转载处(个人用最新1.17.1测试) 依赖环境 安装包下载地址 Flink本地模式搭建 安装 启动集群 查看WebUI 停止集群 Flink Standalone搭建 安装 修改flink-conf.yaml配置文件 修改workers文件 复制Flink安装文件到其他服务器 启动集群 查…...
QT信号槽
目录 信号槽的概念 按钮的常用信号 自定义槽函数 自定义信号函数 自定义槽和信号注意的事项 信号与槽的拓展 lambda表达式 信号槽的概念 信号槽是Qt框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,…...
Spring Boot 技术架构图(InsCode AI 创作助手辅助)
Spring Boot 技术架构是一种用于构建现代应用程序的框架,它可以与各种前端、代理、网关、业务服务、中间件、存储、持续集成和容器服务集成在一起,以创建功能强大的应用程序。 源文件下载链接!!!!ÿ…...
python使用mitmproxy和mitmdump抓包在手机上抓包(三)
现在手机的使用率远超过电脑,所以这篇记录用mitmproxy抓手机包,实现手机流量监控。 环境:win10 64位,Python 3.10.4,雷电模拟器4.0.78,android版本7.1.2(设置-拉至最底部-关于平板电脑…...
react create-react-app v5 从零搭建(使用 npm run eject)
前言: 好久没用 create-react-app做项目了,这次为了个h5项目,就几个页面,决定自己搭建一个(ps:mmp 好久没用,搭建的时候遇到一堆问题)。 我之前都是使用 umi 。后台管理系统的项目 使用 antd-…...
在微信小程序中跳转到另一个小程序(多种实现方式)
方式一: 配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版;trial体验版;release正式版envVersion: release, success(res) {// 打开成功console.log("跳…...
beanstalkd 启动跟停止【经常使用 nohup 和 配合来启动程序,如: nohup ./test 同时免疫SIGINT和SIGHUP信号】
启动命令: nohup /usr/bin/beanstalkd -l 0.0.0.0 -p 11300 & >> /dev/null 2>&1 正常启动后,利用 【lsof -i:11300】查看 该服务是否正常启动 停止命令: /etc/init.d/beanstalkd stop 正常停止后,利用 【l…...
企业年报API的应用:从金融投资到市场研究
引言 在数字化时代,企业年报不再仅仅是一份财务报告,它们变成了宝贵的信息资源,可用于各种商业应用。企业年报API已经改变了金融投资和市场研究的方式,使得从中获取数据变得更加高效和灵活。本文将深入探讨企业年报API的应用&…...
基于Matlab实现评价型模型求解方法(附上源码+数据)
评价型模型求解方法是一种用于评估和比较不同方案或决策的方法。本文将介绍如何使用Matlab来实现评价型模型求解方法,并通过一个简单的案例研究来说明其应用。 文章目录 引言方法案例研究结果分析结论更多源码 引言 评价型模型求解方法在决策分析、风险评估和性能…...
Prettier - Code formatter格式化规则文件
文章目录 前言安装使用 前言 先前公司在规范代码时,由于个人业务繁忙跟技术总监是后端出身用的IDEA不熟悉vsCode;以及大多数时都自己一个人负责一个项目,当时并不看重这些;最近在整理vue3tsvite的脚手架模板(平时工作用的react),开始整理格式化代码,方便之后 vue 和 react 中应…...
用C++实现文件读写操作
文件读写操作是C编程中非常常见的操作之一。下面是一个简单的示例,演示如何使用C读取和写入文件。 读取文件: #include <iostream> #include <fstream>int main() {std::ifstream inputFile("input.txt");if (!inputFile) {std:…...
【我的创作纪念日】使用pix2pixgan实现barts2020数据集的处理(完整版本)
使用pix2pixgan (pytorch)实现T1 -> T2的基本代码 使用 https://github.com/eriklindernoren/PyTorch-GAN/ 这里面的pix2pixgan代码进行实现。 进去之后我们需要重新处理数据集,并且源代码里面先训练的生成器,后训练鉴别器。 一般情况下…...
背包算法(Knapsack problem)
背包算法(Knapsack problem)是一种常见的动态规划问题,它的基本思想是利用动态规划思想求解给定重量和价值下的最优解。具体来说,背包算法用于解决一个整数背包问题,即给定一组物品,每个物品有自己的重量和…...
“童”趣迎国庆 安全“童”行-柿铺梁坡社区开展迎国庆活动
“金秋十月好心境,举国欢腾迎国庆。”国庆节来临之际,为进一步加强梁坡社区未成年人爱国主义教育,丰富文化生活,营造热烈喜庆、文明和谐的节日氛围。9月24日上午,樊城区柿铺街道梁坡社区新时代文明实践站联合襄阳市和时…...
常用压缩解压缩命令
在Linux中常见的压缩格式有.zip、.rar、.tar.gz.、tar.bz2等压缩格式。不同的压缩格式需要用不同的压缩命令和工具。须知,在Linux系统中.tar.gz为标准格式的压缩和解压缩格式,因此本文也会着重讲解tar.gz格式压缩包的压缩和解压缩命令。须知,…...
第四十一章 持久对象和SQL - Storage
文章目录 第四十一章 持久对象和SQL - StorageStorage存储定义概览持久类使用的Globals注意 第四十一章 持久对象和SQL - Storage Storage 每个持久类定义都包含描述类属性如何映射到实际存储它们的Global的信息。类编译器为类生成此信息,并在修改和重新编译时更新…...
【Java接口性能优化】skywalking使用
skywalking使用 提示:微服务中-skywalking使用 文章目录 skywalking使用一、进入skywalking主页二、进入具体服务1.查看接口 一、进入skywalking主页 二、进入具体服务 可以点击列表或搜索后,点击进入具体服务 依次选择日期、小时、分钟 1.查看接口 依次…...
大学各个专业介绍
计算机类 五米高考-计算机类 注:此处平均薪酬为毕业五年平均薪酬,薪酬数据仅供参考 来源: 掌上高考 电气类 五米高考-电气类 机械类 五米高考-机械类 电子信息类 五米高考-电子信息类 土木类 五米高考-土木类...
linux 列出网络上所有活动的主机
列出网络上所有活动的主机 #!/bin/bash# {start..end}会由shell对其进行扩展生成一组ip地址for ip in 192.168.0.{1..255} ;do ping $ip -c 2 &> /dev/null ; # $?获取退出状态,顺利退出则为0 if [ $? -eq 0 ]; then echo $ip is alive fidone https://zh…...
基于vue+Element Table Popover 弹出框内置表格的封装
文章目录 项目场景:实现效果认识组件代码效果分析 封装:代码封装思路页面中使用 项目场景: 在选择数据的时候需要在已选择的数据中对比选择,具体就是点击一个按钮,弹出一个小的弹出框,但不像对话框那样还需…...
机器人过程自动化(RPA)入门 4. 数据处理
到目前为止,我们已经了解了RPA的基本知识,以及如何使用流程图或序列来组织工作流中的步骤。我们现在了解了UiPath组件,并对UiPath Studio有了全面的了解。我们用几个简单的例子制作了我们的第一个机器人。在我们继续之前,我们应该了解UiPath中的变量和数据操作。它与其他编…...
java导出word(含图片、表格)
1.pom 引入 <!--word报告生成依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupI…...
MySQL数据库记录的修改与更新
数据的修改和更新是数据库管理的核心任务之一,尤其是在动态和快速变化的环境下。本文将深入探讨如何在MySQL数据库中有效地进行记录的修改和更新。特别是将通过使用《三国志》游戏数据作为例子,来具体展示这些操作如何实施。文章主要面向具有基础数据库知识的读者。 文章目录…...
开具数电票如何减少认证频次?
“数电票”开具需多次刷脸认证,如何减少认证频次? 法定代表人、财务负责人可以在“身份认证频次设置”功能自行设置身份认证时间间隔,方法如下: 第一步 登录电子税务局。企业法定代表人或财务负责人通过手机APP“扫一扫”&#x…...
【进阶C语言】动态内存分配
本章大致内容介绍: 1.malloc函数和free函数 2.calloc函数 3.realloc函数 4.常见错误案例 5.笔试题详解 6.柔性数组 一、malloc和free 1.malloc函数 (1)函数原型 函数参数:根据用户的需求需要开辟多大的字节空间ÿ…...
手机上记录的备忘录内容怎么分享到电脑上查看?
手机已经成为了我们生活中不可或缺的一部分,我们用它来处理琐碎事务,记录生活点滴,手机备忘录就是我们常用的工具之一。但随着工作的需要,我们往往会遇到一个问题:手机上记录的备忘录内容,如何方便地分享到…...
LeetCode 2251. 花期内花的数目:排序 + 二分
【LetMeFly】2251.花期内花的数目:排序 二分 力扣题目链接:https://leetcode.cn/problems/number-of-flowers-in-full-bloom/ 给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 st…...
【3】贪心算法-最优装载问题-加勒比海盗
算法背景 在北美洲东南部,有一片神秘的海域,那里碧海蓝天、阳光 明媚,这正是传说中海盗最活跃的加勒比海(Caribbean Sea)。 有一天,海盗们截获了一艘装满各种各样古董的货船,每一 件古董都价值连…...
JavaScript 的 for 循环应该如何学习?
JS for 循环语法 JS for 循环适合在已知循环次数时使用,语法格式如下: for(initialization; condition; increment) {// 要执行的代码 }for 循环中包含三个可选的表达式 initialization、condition 和 increment,其中: initial…...
C++核心编程--对象篇
4.2、对象 4.2.1、对象的初始化和清理 用于对对象进行初始化设置,以及对象销毁前的清理数据的设置。 构造函数和析构函数 防止对象初始化和清理也是非常重要的安全问题 一个对象或变量没有初始化状态,对其使用后果是未知的同样使用完一个对象或变量&…...
创建企业需要什么条件/免费seo推广软件
vector<vector<Point>>::const_iterator itc contours.begin();int cmin 50;while (itc!contours.end()){if (itc->size() < cmin)itc contours.erase(itc);else itc;}...
wordpress通杀注入/app拉新怎么做
被包含的a.jsp文件; a.jsp文件的page指令要么不要写。要么与主jsp文件的page指令一样。转载于:https://www.cnblogs.com/zhaoleigege/p/5622816.html...
兰州网站建设哪家好/今日头条搜索优化
http://www.cnblogs.com/jxsoft/archive/2011/05/06/2038952.html ) 行、列的隐藏 [VB.NET] DataGridView1的第一列隐藏 DataGridView1.Columns(0).Visible False DataGridView1的第一行隐藏 DataGridView1.Rows(0).Visible False [C#] // DataGridView1的第一列…...
彩票网站开发有连带/qq空间秒赞秒评网站推广
通过前面的学习,我们了解到一个PHP文件在服务器端的执行过程包括以下两个大的过程:递给php程序需要执行的文件, php程序完成基本的准备工作后启动PHP及Zend引擎, 加载注册的扩展模块。初始化完成后读取脚本文件,Zend引…...
宣威网站建设c3sales/适合小学生的最新新闻
jQuery Easyui datagrid 数据表格的使用 1、 在页面显示表格的位置 提供<table>标签,指定 id 元素 2、 在 JS 代码 $(“#grid”).datagrid({…}); 完成对表格设置 表格列定义 远程数据加载 分页 顶部工具栏 代码效果...
必要这个网站怎么样/郑州网站关键词推广
注:这篇文章是应人人都是产品经理社区之邀而写就,本来的主题就只是陌陌新推出的7.0版本,不过我还是尝试把陌陌从1.0版本开始在产品和运营等方面发展的大框架给梳理出来了,并尽力想做到又全面又深入,但由于时间仓促等原…...