当前位置: 首页 > news >正文

详解flink java基础(一)

文章目录

      • 1.流式处理flink介绍
      • 2.Flink SQL介绍
      • 3. Flink Runtime
      • 4.使用flink集成kafka
      • 5.使用Flink SQL进行有状态流处理
      • 6.Event time & Watermarks
      • 7. flink Checkpoints & recovery

1.流式处理flink介绍

实时服务依赖流式处理:
在这里插入图片描述
flink优点:

  • 高性能
  • 丰富的特性:
    在这里插入图片描述
    构建flink的4个基础:
    在这里插入图片描述
    Streaming:
    在这里插入图片描述
  • 流是有序的事件
  • 业务数据总是一个流:有界流 或无界流
  • 对于flink,批处理仅是一个特殊的场景,在流运行时
    在这里插入图片描述
    The job Graph(Topology):
    • 运行中的flink 应用称作job
    • 运行中的flink应用(job)以及通过数据管道处理称作JobGraph(工作图)
    • Job Graph是一个有向图(DAG),数据流从source流向sink,被operator处理
      在这里插入图片描述

Stream processing:

  • Parallel:是由于分隔事件流成并行sub-stream,各自可以独立处理
    在这里插入图片描述

  • Forward:重定向一个事件流,优化上下游衔接非常有效

  • Repartition(分隔)
    在这里插入图片描述

  • Rebalance: rebalance非常昂贵,就像网络抖动一样,需要序列化每个事件,并且使用网络
    在这里插入图片描述

  • broadcasting :广播数据到分布式系统集群

Stream processing with SQL:
在这里插入图片描述

2.Flink SQL介绍

在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述
Flink SQL的特点:
在这里插入图片描述
在这里插入图片描述
append-only 、insert-only

Flink SQL 模式:
1. Streaming and Batch
在这里插入图片描述
2. Streaming only模式
在这里插入图片描述
3.Batch only 模式:

在这里插入图片描述

通过docker运行flink SQL CLI

  • 安装dockerdesktop

  • 执行 docker compose version

  • 克隆 flink练习代码仓:https://github.com/confluentinc/learn-apache-flink-101-exercises.git

  • 进入本地clone项目的根目录,执行构建docker compose命令:
    在这里插入图片描述

  • 运行sql-client
    docker compose run sql-client

  • 但sql-client启动成功,可以看到flink SQL CLi提示

    Flink SQL>
    
  • 然后可以进行 Flink SQL的一些操作

3. Flink Runtime

运行时架构(runtime Architecture)
在这里插入图片描述
Flink streaming VS Batch

StreamingBatch
Bounded or unbounded streamsonly bounded streams
Entrie pipeline must always be runningExecution proceeds in stages,running as needed
Input must be processed as it arrivesInput may be pre-sorted by time and key
Results are reported as they become readyResults are repored at the end of the job
Failure recovery resumes from a recent snapshotFailure recovery does a reset and full restart
Flink guarantees effectively exactly-once result ,despite out-of-order data and restarts due to failures.Effectively exactly-once gurantees are more straightforward

flink task有三种状态:

  1. idle
  2. busy
  3. backpressured:the task is unable to send output downstream because the downstream task is busy

总结

streaming 提供了立刻响应的场景,如下:

  • 监控告警
  • 欺诈检测(fraud detection)

Batch processing 更好,因为它效率更高效

4.使用flink集成kafka

kafka主要组件
在这里插入图片描述
kafka架构
在这里插入图片描述
在这里插入图片描述

kafka事件结构:
在这里插入图片描述
flink table 与topic的映射关系
在这里插入图片描述
映射kafka topics成flink table

flink format
在这里插入图片描述
flink需要知道协作的kafka topic的数据格式是什么

在这里插入图片描述

在这里插入图片描述
Flink可以作为kafka,实时应用、流水线的计算层

5.使用Flink SQL进行有状态流处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.Event time & Watermarks

Time
在这里插入图片描述
out-of-order event time
在这里插入图片描述
watermarks
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
kafka source operator 从kafka partition 读取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
waermarkark就是分区的最小值,如:1:05
在这里插入图片描述
一旦watermark被生成,source会发送它到下游

在这里插入图片描述
在这里插入图片描述
flink job不产生结果的原因分析以及解决方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
水印的使用(watermark):
在这里插入图片描述

7. flink Checkpoints & recovery

1.checkpoint

  • checkpoint就是flink自动产生的快照,主要用于失败恢复
  • savepoint是一种手动创建的快照,主要为了运维的目的,如:有状态的升级->升级flink到最新的版本

flink使用Chandy-Lamport 分布式快照算法解决以下问题

  • flink生成不是期望的结果
  • flink生成重复
    在这里插入图片描述
    在这里插入图片描述
    2.故障恢复(recovery)
    在这里插入图片描述
    在这里插入图片描述
    水印衡量着无序流中事件时间的进度

在这里插入图片描述

http://www.lryc.cn/news/623433.html

相关文章:

  • 前端项目的打包部署
  • 【MySQL学习|黑马笔记|Day7】触发器和锁(全局锁、表级锁、行级锁、)
  • Docker Compose 安装 Neo4j 的详细步骤
  • Docker之自定义jkd镜像上传阿里云
  • Docker+飞算JavaAI=未来:全流程容器化AI开发实战
  • 堆(Heap):高效的优先级队列实现
  • 适用监测农作物长势和病虫害的高光谱/多光谱相机有哪些?
  • 已开源:Highcharts.NET,Highcharts Android,与Highcharts iOS集成
  • 【Virtual Globe 渲染技术笔记】8 顶点变换精度
  • p5.js 3D 形状 “预制工厂“——buildGeometry ()
  • 积鼎科技CFD VirtualFlow:引领国产多相流仿真技术,赋能工业智造
  • 6.Ansible自动化之-管理变量和事实
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • 智能化管理:开启海洋牧场新时代
  • Excel 表格数据自动填充
  • C++算法竞赛:位运算
  • Android 组件封装实践:从解耦到架构演进
  • 工作中使用到的 TRPS 【Temporal Residual Pattern Similarity】和 K-sigma 算法
  • 知识点汇集-web
  • Spring 源码学习(十一)—— webmvc 配置
  • 项目发布上线清单
  • 如何在Windows系统中更改用户名(中文转英文全流程)
  • LeetCode 837.新 21 点:动态规划+滑动窗口
  • 【运维进阶】实施任务控制
  • C语言---第一个C语言程序
  • 12.web api 3
  • 网格布局 CSS Grid
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day6
  • k8s集群搭建一主多从的jenkins集群
  • 锂电池SOH预测 | Matlab基于KPCA-PLO-Transformer-LSTM的的锂电池健康状态估计(锂电池SOH预测),附锂电池最新文章汇集