Flink基础简介和安装部署

news2025/4/1 4:58:52

文章目录

    • 一、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集群管理,下面是原理图和部署步骤

提交作业
分发任务
分发任务
交换中间结果
发送状态,汇报心跳
交换中间结果
发送状态,汇报心跳
客户端
JobManager
负责申请和管理资源,并管理资源和任务
TaskManager
执行任务
TaskManager
执行任务

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实现的模式

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…

LeetCode算法题(Go语言实现)_11

题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"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体…

matplotlib——南丁格尔玫瑰

南丁格尔玫瑰图&#xff08;Nightingale Rose Chart&#xff09;&#xff0c;是一种特殊形式的柱状图&#xff0c;它以南丁格尔&#xff08;Florence Nightingale&#xff09;命名&#xff0c;她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…

Django与网页表单

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单&#xff0c;用来处理用户从页面输入发送到服务器的数据&#xff0c;页面表单通常会提供复选框、单选按钮和文本字段&#xff0c;方便用户填写各种形式…

ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常

社区王牌专栏《一问一实验&#xff1a;AI 版》改版以来已发布多期&#xff08;51-60&#xff09;&#xff0c;展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验&#xff1a;AI 版》第 62 期&#xff0c;看看 ChatDBA 最新效果以及与热门大模型 De…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作&#xff0c;对噪点比较敏感&#xff0c;所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后&#xff0c;其实把它们连起来边缘检测就算完了…

基于Kubernetes部署Prometheus监控平台

#作者&#xff1a;stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…

往期项目shader着色器实践效果应用合集

1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果

绿色暴政:Relax Max如何用军工科技定义环保新标准

《绿色暴政&#xff1a;Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 &#xff08;洛克希德马丁实验室&#xff0c;2023年&#xff09;当F-35战斗机的隐形涂料配方被改写为卫浴釉料时&#xff0c;环保产业迎来了最硬核的颠覆者。Relax…

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 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窗口&#xff0c;并且需要实现加载模型后重新渲染更新窗口的功能&#xff0c;但是一直无法更新被卡住了&#xff0c;现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…

ESP32驱动BMP280和MQ4传感器

文章目录 前言 一、硬件准备 所需组件 连接方式&#xff1a; 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中&#xff0c;传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…

MQTT协议笔记

消息格式 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;专为低带宽、高延迟或不可靠的网络设计&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;设备之间的通信。MQTT消息体的结构遵循MQTT协议规范&#xff0…

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…

如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志

一、首先按照以下 指引 中的 第1、2步骤&#xff0c;安装一下 AGDE &#xff0c;AGDE 的安装包可以在官网上找到。 UE4 使用AndroidGameDevelopmentExtension&#xff08;AGDE&#xff09;对安卓客户端做“断点调试”与“代码热更”-CSDN博客 在执行第二步骤前&#xff0c;记得…

VSCode 生成HTML 基本骨架

在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权相关工具类代码

系列文章目录 【Spring AI】基于专属知识库的RAG智能问答小程序开发——完整项目&#xff08;含完整前端后端代码&#xff09;【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲&#xff1a;核心ChatClient对象相关构造函数【Spring AI】基于专属知识库的R…

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南&#xff1a; 一、Solr 是什么&#xff1f; • 核心定位&#xff1a;Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台&#xff0c;支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能&#xff1a; • 全…

07_GRU模型

GRU模型 双向GRU笔记:https://blog.csdn.net/weixin_44579176/article/details/146459952 概念 GRU&#xff08;Gated Recurrent Unit&#xff09;也称为门控循环单元&#xff0c;是一种改进版的RNN。与LSTM一样能够有效捕捉长序列之间的语义关联&#xff0c;通过引入两个&qu…