Flink基础简介和安装部署
文章目录
- 一、Flink基础简介
- 1、什么是Flink
- 2、Flink流处理特性
- 3、Flink四大基石
- 4、Flink中的角色
- 二、Flink集群搭建
- 1、Local模式
- ①上传Flink安装包
- ②启动交互窗口
- ③提交任务测试
- ④访问WebUI页面查看
- ⑤退出停止集群
- 2、Standalone模式
- ①修改配置⽂件 conf/flink-conf.yaml
- ②修改conf/masters⽂件
- ③修改conf/slaves⽂件
- ④分发flink⽬录到其它节点
- ⑤启动集群
- ⑥提交测试作业
- 3、Flink on Yarn模式
一、Flink基础简介
1、什么是Flink
Flink是⼀个分布式,高性能,随时可⽤的以及准确的流处理计算框架,Flink可以对无界数据(流处理)和有界数据(批处理)进⾏有状态计算的分布式,⾼性能的计算框架。
⽆界数据流:数据流是有⼀个开始但是没有结束;
有界数据流:数据流是有⼀个明确的开始和结束,数据流是有边界的。
2、Flink流处理特性
1.支持高吞吐、低延迟、高性能的流处理
2.支持带有事件时间的窗口(Window)操作
3.支持有状态计算的 Exactly-once 语义
4.支持高度灵活的窗口(Window)操作,支持基于 time、count、session,以及 data-driven 的窗口操作
5.支持具有 Backpressure(背压) 功能的持续流模型
6.支持基于轻量级分布式快照(Snapshot)实现的容错
7.一个运行时同时支持 Batch on Streaming 处理和 Streaming 处理
8.Flink 在 JVM 内部实现了自己的内存管理
9.支持迭代计算;
10.程序自动优化:避免特定情况下 Shuffle、排序等昂贵操作,中间结果有必要进行缓存
3、Flink四大基石
checkpoint,state,time,window
checkpoint:
基于chandy-lamport算法实现分布式计算任务的⼀致性语义;state:
flink中的状态机制,flink 天生支持state,state可以认为程序的中间计算结果或者是历史计算结果;time:
flink中⽀持基于事件时间和处理时间进⾏计算,spark streaming只能按照process time进⾏处理;基于事件时间的计算我们可以解决数据延迟和乱序等问题。window:
flink提供了更多丰富的window,基于时间,基于数量,session window,同样⽀持滚动和滑动窗
⼝的计算。
4、Flink中的角色
JobManager: 负责资源申请,任务分发,任务调度执行,checkpoint的协调执行;
TaskManager: 负责任务的执行,基于Dataflow(Spark中DAG)划分出的Task;与JobManager保持⼼跳,汇报任务状态。
二、Flink集群搭建
1、Local模式
单机模式,适合自测学习使用,下面是简单部署步骤
①上传Flink安装包
准备服务器JDK1.8及以上版本,配置免密登录;详情可参考hadoop搭建模块
上传安装包 flink-1.7.2-bin-hadoop27-scala_2.11.tgz 然后解压到/opt目录(之前上传hadoop的目录),注意修改所属用户和用户组
注意: 服务器需要配置JDK8的环境tar -zxvf flink-1.7.2-bin-hadoop27-scala_2.11.tgz
mv flink-1.7.2 flink
chown -R root:root flink
如下图所示:

②启动交互窗口
进入Flink的bin目录下启动shell交互式窗口
cd /opt/flink
bin/start-scala-shell.sh local
如下图所示

③提交任务测试
注意: 提前创建一个测试文件/root/words.txt,随便写入一些文本作为测试文件

benv.readTextFile("/root/words.txt").flatMap(_.split("")).map((_,1)).groupBy(0).sum(1).print()
④访问WebUI页面查看
http://192.168.88.101:8081

⑤退出停止集群
:quit

2、Standalone模式
Flink自带集群,资源管理由Flink集群管理,下面是原理图和部署步骤
hadoop-1: 部署JobManager+TaskManager
hadoop-2: 部署TaskManager
hadoop-3: 部署TaskManager
①修改配置⽂件 conf/flink-conf.yaml
jobmanager.rpc.address: hadoop-1
jobmanager.rpc.port: 6123
jobmanager.heap.size: 1024
taskmanager.heap.size: 1024
taskmanager.numberOfTaskSlots: 2
taskmanager.memory.preallocate: false
parallelism.default: 1
jobmanager.web.port: 8081
taskmanager.tmp.dirs: /opt/flink/tmp
web.submit.enable: true
②修改conf/masters⽂件
hadoop-1:8081
③修改conf/slaves⽂件
hadoop-1
hadoop-2
hadoop-3
④分发flink⽬录到其它节点
scp -r /opt/flink hadoop-2:/opt/flink
scp -r /opt/flink hadoop-3:/opt/flink#flink on yarn模式需要配置hadoop_conf_dir到/etc/profile中,并分发到其他节点
vim /etc/profile
#添加这一行
export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
#执行 source /etc/profile
#分发 到其他节点
scp -r /etc/profile hadoop-2:/etc/profile
scp -r /etc/profile hadoop-3:/etc/profile到其他节点
⑤启动集群
启动集群
bin/start-cluster.sh停止集群
bin/stop-cluster.sh单独启停jobmanager
bin/jobmanager.sh start/stop单独启停taskmanager
bin/taskmanager.sh start/stop


注意 : 如果6123端口被占用,启动服务后这里的三个数据都会显示为0
# 检查 6123 端口是否被占用
netstat -tuln | grep 6123
# 查询PID
lsof -i :6123
# 如果占用,杀死相关进程(谨慎操作!)
sudo kill -9 <PID>
⑥提交测试作业
/opt/flink/bin/flink run /opt/flink/examples/batch/WordCount.jar --input hdfs://hadoop-1:8020/input/wordcount/hello.txt --output hdfs://hadoop-1:8020/output/result.txt --parallelism 2

注意: 启动hadoop的是hadoop 用户, 需要授权root用户output目录的写权限才可以
授权命令(完全开放权限,仅供测试,生产环境不推荐): hdfs dfs -chmod 777 /output
3、Flink on Yarn模式
资源管理交给Yarn实现的模式
相关文章:
Flink基础简介和安装部署
文章目录 一、Flink基础简介1、什么是Flink2、Flink流处理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上传Flink安装包②启动交互窗口③提交任务测试④访问WebUI页面查看⑤退出停止集群 2、Standalone模式①修改配置⽂件 conf/flink-conf.yaml②修改…...
SpringBoot分布式项目实战:观察者模式的高阶应用与避坑指南
一、痛点场景:当观察者遇上分布式 在某电商平台重构项目中,我们遭遇了这样的困境:订单中心完成支付后需要触发库存扣减、积分结算、物流调度等12个后续操作。最初的实现采用了硬编码调用: // 伪代码示例 public void paySuccess…...
How to use pgbench to test performance for PostgreSQL?
pgbench 是一个用于测试 PostgreSQL 数据库性能的基准测试工具。通过模拟多个客户端并发执行 SQL 查询,它可以帮助你评估数据库的性能。以下是使用 pgbench 的基本步骤: 安装 pgbench pgbench 是 PostgreSQL 的一部分,因此在安装 PostgreSQ…...
C#基础学习(五)函数中的ref和out
1. 引言:为什么需要ref和out? 问题背景:函数参数默认按值传递,值类型在函数内修改不影响外部变量;引用类型重新赋值时外部对象不变。核心作用:允许函数内部修改外部变量的值,实现“双向传参…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…...
关于CodeJava的学习笔记——9
一、IO流 1、定义 IInput输入 OOutput输出 流 : 数据从源点传输到汇点的"管道"而已 2、流的分类 按照方向分: 输入流 输出流 *:参照物当前Java程序为参照物 按照单位分: 字节流 字符流 按照功能分: 节点流 过滤流(包装流 处…...
LeetCode算法题(Go语言实现)_11
题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列&a…...
Python----数据分析(足球运动员数据分析)
一、数据展示 1.1、数据 1.2、列名 字段名备注Name姓名Nationality国籍National_Position国家队位置National_Kit国家队号码Club所在俱乐部Club_Position所在俱乐部位置Club_Kit俱乐部号码Club_Joining加入俱乐部时间Contract_Expiry合同到期时间Rating评分Height身高Weight体…...
Day38 | 1365. 有多少小于当前数字的数字、941. 有效的山脉数组、1207. 独一无二的出现次数、283. 移动零、189. 轮转数组
1365. 有多少小于当前数字的数字 题目链接:1365. 有多少小、于当前数字的数字 - 力扣(LeetCode) 题目难度:简单 代码: class Solution {public int[] smallerNumbersThanCurrent(int[] nums) {Map<Integer,Inte…...
Docker-清理容器空间prune
docker system prune -a 是一个非常有用的命令,用于清理 Docker 系统中未使用的资源,包括停止的容器、未使用的网络、卷以及未被任何容器引用的镜像(悬空镜像和所有未使用的镜像)。以下是关于该命令的详细说明: 命令格…...
matplotlib——南丁格尔玫瑰
南丁格尔玫瑰图(Nightingale Rose Chart),是一种特殊形式的柱状图,它以南丁格尔(Florence Nightingale)命名,她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…...
Django与网页表单
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单,用来处理用户从页面输入发送到服务器的数据,页面表单通常会提供复选框、单选按钮和文本字段,方便用户填写各种形式…...
Rust从入门到精通之入门篇:10.包和模块
包和模块 在本章中,我们将学习 Rust 的包和模块系统,它们是组织和重用代码的重要工具。随着项目规模的增长,良好的代码组织变得越来越重要,Rust 提供了一套强大的机制来管理代码结构。 包和 Crate Crate Crate 是 Rust 中最高…...
ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
社区王牌专栏《一问一实验:AI 版》改版以来已发布多期(51-60),展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验:AI 版》第 62 期,看看 ChatDBA 最新效果以及与热门大模型 De…...
dify忘记密码
特别好,非常好,一把年纪忘了dify的账号、密码了,very good!!! 参考如下教程 https://zhuanlan.zhihu.com/p/24515387167 rootbae577d82ec7:/# psql -U postgres psql: error: connection to server on so…...
Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)
一、 高斯滤波 边缘检测本身属于锐化操作,对噪点比较敏感,所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后,其实把它们连起来边缘检测就算完了…...
vue3(笔记)5.0--pinia工具的知识扩展
pinia工具 defineStore(创建pinia) 作用:用于定义一个 Pinia store。 用法: 接收一个唯一的 ID 和一个配置对象,配置对象中可以定义 state、getters 和 actions。state 是一个函数,返回初始状态。getters 类似于 Vue 组件中的计…...
基于Kubernetes部署Prometheus监控平台
#作者:stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…...
往期项目shader着色器实践效果应用合集
1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果...
如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载?
大白话如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载? 在 React 项目里,有时候组件功能多、体积大,要是一次性把所有组件都加载进来,网页加载速度就会变慢。而 React 提供了 React.lazy 和 Suspense 这两个好东西…...
绿色暴政:Relax Max如何用军工科技定义环保新标准
《绿色暴政:Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 (洛克希德马丁实验室,2023年)当F-35战斗机的隐形涂料配方被改写为卫浴釉料时,环保产业迎来了最硬核的颠覆者。Relax…...
蓝桥杯刷题 Day 4 栈与链表
蓝桥杯刷题 Day 4 栈与链表 文章目录 蓝桥杯刷题 Day 4 栈与链表前言一、栈1. 解题思路2. 拆解代码(不复杂,不拆了) 二、链表1. 解题思路1.1 主函数1.2 自定义列表类1.2.1 插入操作1.2.2 删除操作1.2.3 按要求输出 三、 题后收获3.1 知识点 前…...
第十三届蓝桥杯单片机省赛程序设计试题
目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…...
QOpenGLWidget动态加载功能实现教程(Qt+OpenGL)
QOpenGLWidget动态加载功能实现教程 我需要在Qt里面使用QOpenGLWidget显示OpenGL窗口,并且需要实现加载模型后重新渲染更新窗口的功能,但是一直无法更新被卡住了,现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…...
机器学习正则化技术:Ridge、Lasso与ElasticNet全解析
机器学习中的正则化技术 在机器学习中,正则化技术(如 Ridge 和 Lasso)主要用于解决过拟合问题,通过限制模型复杂度提高泛化能力。以下是详细说明及实例代码: 一、正则化解决的问题 过拟合:模型在训练集表…...
数字转换(c++)
【题目描述】 如果一个数 xx 的约数和 yy (不包括他本身)比他本身小,那么 xx 可以变成 yy ,yy 也可以变成 xx 。例如 44 可以变为 33 ,11 可以变为 77 。限定所有数字变换在不超过 nn 的正整数范围内进行,…...
ESP32驱动BMP280和MQ4传感器
文章目录 前言 一、硬件准备 所需组件 连接方式: 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中,传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…...
洛谷题单1-B2002 Hello,World!-python-流程图重构
题目描述 编写一个能够输出 Hello,World! 的程序。 提示: 使用英文标点符号;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 无 输出格式 无 输入输出样例 #1 输入 #1 无输出 #1 Hello,World!方式-print() 代码 class Solut…...
MQTT协议笔记
消息格式 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,专为低带宽、高延迟或不可靠的网络设计,广泛应用于物联网(IoT)设备之间的通信。MQTT消息体的结构遵循MQTT协议规范࿰…...
CentOS系统下安装tesseract-ocr5.x版本
CentOS系统下安装tesseract-ocr5.x版本 安装依赖包: yum update -y yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel yum install automake libtool bzip2 -y手动编译安装GCC(因系统默认安装的GCC版本比较…...
