Fllink学习

Posted ssqq5200936

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fllink学习相关的知识,希望对你有一定的参考价值。

1、Apache Flink 是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。

现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为他们所提供的SLA(Service-Level-Aggreement,服务等级协议) 是完全不相同的:

(1)、流处理一般需要支持低延迟、Exactly-once 保证

(2)、批处理需要支持高吞吐、高效处理。

Flink 从另一个视角看待流处理和批处理,将二者统一起来:

(1)、Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的

(2)、批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。

 

flink的一些实现细节和原理相关


两个分类:

1、flink的架构分析

standalone:

YARN;
resourcemanager
nodemanager

mareduce v1:
jobtracker
tasktracker

spark:
master
worker

flink
jobmanager
taskmanager

以上这些集群都是属于管理资源和分配资源给对应的提交的应用程序执行的

所有的主节点都是:(管理者)
管理所有从节点的状态
分配对应的资源给应用程序去执行

所有的从节点都是:(工作者)
提供资源,然后汇报自己的状态给主节点
派发任务下来,由每个从节点执行

主管资源 Resouce...
主管调度 Scheduler
关于主控程序管理相关
ApplicationMaster
....


hadoop能否被取代?

hdfs
yarn
mapreduce 太慢,功能上有一定的缺陷
执行效率低,编码复杂,只能做离线批处理

hive-2.x
mapreduce
tez
spark

一个分布式计算引擎是一定要去考虑shuffle的
但是不是说,所有的应程序都一定会要进行shuffle


spark各模块的依赖关系:
spark core: 核心实现
sparksql: 处理结构化数据, 基于spark core
sparkstreaming: 构建流式应用程序,基于spark core
structured streaming: 构建流式应用程序,基于spark sql

 

YARN:
资源单位:container 默认1G

Flink
资源单位:slot
根据两个因素来决定slot的内存多大:

一个taskamanager的内存:a
一个taskmanager的slot数量: b

一个slot的内存: a/b

由每隔slot占用多少内存来倒推应该设置a和b是多少

64G 8G内操作系统
4G 其他程序

52G:
每个slot: 1G内存
taskManager 的slot数量: 52个


ChainOperator

backend
pressure

反压

JobGraph

2、flink的四大特性

flink:有状态的分布式计算引擎

checpoint
保存状态 到 HDFS
分布式快照
snapshot id 管理者:jobmanager去管理
barriers 屏障

state
ValueState
ListState
MapState
快照

window

滚动窗口: 没有数据被重复消费
每隔4s钟统计过去4s内数据的xx结果
滑动窗口
每隔4s钟统计过去6s内数据的xx结果
会话窗口
碰到有相邻两条数据超过指定的某个时间差距,就切开形成两个不同的会话

时间 time
数量 count

spark窗口计算的重点:

基于时间的滑动窗口

需求:
每隔4s钟统计过去6s内数据的xx结果

new StreamingContext(2s)
window(windowTime, slideTime)
6 4

车流量

time

event time 事件时刻:当前这个日志生成的时刻
ingest time 进入flink应用程序的时刻
process time 计算的时刻


watermark
水位线

主要用来计算无序的,延迟抵达的数据

 

aggregateByKey(状态)((旧状态,值) => 新状态, (状态,状态) => 状态)
aggregateByKey(C)((C,V) => C, (C,C) => C)


state

窗口计算

updateStateByKey

window


ValueState 存储一个值
ListState 存储一堆值
MapState 存储一堆key-vlaue类型的值

 

服务降级:

at least once

以上是关于Fllink学习的主要内容,如果未能解决你的问题,请参考以下文章

Fllink实时计算运用Flink Table API & SQL 深入详解

Fllink实时计算运用Flink Table API & SQL 案例实战

Fllink实时计算运用Flink 自定义序列化Protobuf接入实现方案

Flink StreamSQL 原理介绍

《机器学习实战》-机器学习基础

机器学习系列1-学习资料和学习路线