超全干货--Flink思维导图,花了3周左右编写、校对

大数据RPC技术链接:RPC研究,从浅到深,含研究笔记:超级全面,包懂

在流式分布式计算领域中,Flink可以和Spark Streaming、Storm叫板了。从我的使用流式情况来看,Flink在流式处理这块完全可以代替其他的框架了。Flink技术点多,容易忘记,为此专门整理了Flink思维导图。方便记忆。

需要说明一下,Flink使用场景:大数据流式计算、金融风控、实时异常监测(订单、传感器、刷单、登录)等。

超级干货--Flink思维导图,花了3周左右编写、校对。下载链接:Flink_思维导图(干货).xmind.zip

                            
 


如果之前对Spark 开发经验的小伙伴,Flink结合起来会更容易深入。以下是我自己整理的Flink相关笔记,同时与主流的Spark Streaming进行类比:

Flink 与 Spark Streaming 组件综合对比

中文名称

Flink

Spark Streaming

作业管理器JobManagerMaster+Driver
作业执行器TaskManagerWorker+Executor
工作线程SlotsCpu Core
最大并发度TaskManager数 * 每个TaskManager 中的Task SlotExecutor数 * 每个Executor 中的cpu core
混洗redistributeshuffle
数据流DStreamDataStream
转换操作TransformationTransformation
触发操作SinkAction
阶段TaskStage
子任务SubTaskTask
DAG DataFlowGraph

JobManager,相当于Spark 中的ApplicationMaster中的Driver;作业管理器,是一个JVM进程,接收作业,分发执行图到taskManager

TaskManager,相当于Spark 中的Executor;任务管理器,是一个JVM进程,执行作业,它可能会在独立的线程上执行一个或多个subtask;Flink中会有多个TaskManager,每个TaskManager都包含一定数量的插槽slots

Slots,相当于Spark Executor中的cpu core,相当于工作线程。但不同的是Slots是静态的,Spark中的Executor是动态的插槽,推荐值是就当前节点的CPU CORES核心数;主要是隔离内存,为了控制一个TaskManager能接收多少个task,TaskManager通过task slot来进行控制(一个TaskManager至少有一个slot)

最大并行度,Spark:  Executor数 * 每个Executor 中的cpu core;  Flink:  TaskManager数 * 每个TaskManager 中的Task Slot

ResourceManger,是资源管理器,负责管理集群资源


Dispatcher,在yarn模式下不会创建生成分发器,为应用提交提供了REST接口, 提供一个Web UI,展示作业流程


Flink中的执行图可以分成四层:
    StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图
    StreamGraph:   是根据用户通过Stream API编写的代码生成的最初的图。用来表示程序的拓扑结构。
    JobGraph:  【Client上生成】StreamGraph经过优化生成了JobGraph,提交给JobManager的数据结构。主要的优化为,将多个符合条件的节点chain在一起作为一个节点
     ExecutionGraph:  【JobManager上生成】JobManager根据JobGraph生成ExecutionGraph。ExecutionGraph是JobGraph的并行化版本,是调度最核心的数据结构。
    物理执行图:【TaskManager运行】JobManager根据ExecutionGraph对Job进行调度后,在各个TaskManager上部署Task后形成的 "图",并不是一个具体的数据结构


Flink的Task和SubTask-划分的依据(叫redistribute,相当于spark中的shuffle(宽依赖)):

  1. 并行度发生变化;比如:之前并行度为4,现在并行度为2,叫:rebalance
  2. 发生keyBy算子,叫HASH
  3. 广播 brodcast
  4. 算子后面调用了 startNewChain/disableChaining

Flink支持数据类型:

  1. 基础数据类型,Java和Scala基础数据类型
  2. Java和Scala元组(Tuples)
  3. Scala样例类(case classes)
  4. Java简单对象(POJOs)
  5. 其它(Arrays, Lists, Maps, Enums,等等

Flink支持时间语义:

  1. Event Time: 事件创建的时间
  2. Ingestion Time: 数据进入Flink的时间
  3. Processing Time: 执行操作算子的本地系统时间,与机器无关

文章最后,给大家推荐一些受欢迎的技术博客链接

  1. JAVA相关的深度技术博客链接
  2. Flink 相关技术博客链接
  3. Spark 核心技术链接
  4. 设计模式 —— 深度技术博客链接
  5. 机器学习 —— 深度技术博客链接
  6. Hadoop相关技术博客链接
  7. 超全干货--Flink思维导图,花了3周左右编写、校对
  8. 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
  9. 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
  10. 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
  11. 深入聊聊Java 垃圾回收机制【附原理图及调优方法】

欢迎扫描下方的二维码或 搜索 公众号“大数据高级架构师”,我们会有更多、且及时的资料推送给您,欢迎多多交流!

                                           

       

  • 39
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不埋雷的探长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值