1.Flink简介

大数据Flink从入门到实战

对课程大数据Flink从入门到实战中flink的介绍部分及《Flink原理、实战与性能优化》进行学习记录。

第一讲 Flink流处理简介

一.Flink是什么?

Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
Flink是能够同时支持高吞吐、低延迟、高性能的分布式处理框架。
Flink是德语词,表示快速灵巧。

二.为什么选择Flink?

​ 1)流数据更真实地反映了我们的生活方式

​ 2)传统的数据架构是基于有限数据集的

​ 3)我们的目标:低延迟、高吞吐、结果的准确性和良好的容错性

三.传统数据处理架构

1)事务处理

在这里插入图片描述

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

2)分析处理

在这里插入图片描述

​ 将数据从业务数据库复制到数据仓库,再进行分析和查询。

四.流处理的演变

1.有状态的流式处理架构

​ 在内存中计算数据能做到低延迟。

​ 使用分布式架构能做到高吞吐。

​ 在容错方面定期将数据备份。

在这里插入图片描述


2.lambda架构

​ 用两套系统(流处理和批处理),同时保证低延迟和结果准确
在这里插入图片描述

lambda架构包括三层:

​ 1)Batch layer

​ 这层的功能主要有2点:

​ - 存储数据集

​ - 在数据集上预先计算查询函数,构建查询所对应的view

​ 保存计算结果在view中,lambda可以通过view快速查询结果

​ 2)Speed Layer

​ Speed Layer是用来处理增量的实时数据,对数据进行计算并生成Realtime View。

​ Speed Layer 与 Batch Layer 的区别:

​ - Speed Layer处理最近的增量数据流,Batch Layer处理的是过去一端时间的全体数据集。

​ - Speed Layer必须不断更新Realtime View,而Batch Layer根据离线数据集直接获得Batch View。

​ 3)Serving Layer

​ 这一层用于响应用户的查询请求,合并Batch View 和 Realtime View中的结果数据集到最终的数据集。

lambda存在的问题:框架太多会导致平台复杂度过高、运维成本高等。


3.Flink架构

在这里插入图片描述

​ 1)Flink的主要特点

​ -事件驱动(Event-driven)

在这里插入图片描述

​ -基于流的世界观

​ -分层API

​ 越顶层约抽象,表达含义越简明,使用越方便
​ 越底层越具体,表达能力越丰富,使用越灵活
在这里插入图片描述
​ -支持事件时间(event-time)和处理时间(processing-time)语义

​ -精确一次(exactly-once)的状态一致性保证

​ -低延迟,每秒处理数百万个事件,毫秒级延迟

​ -与众多常用存储系统的连接

​ -高可用,动态扩展,实现7*24小时全天候运行

2)Flink基本组件栈

在这里插入图片描述  Flink的基本架构体系基本上可以分为三层,由上往下一次是API&Libraries层、Runtime层、以及物理部署层。

  • API&Libraries层
      作为分布式数据处理框架,Flink 同时提供了支撑流计算和批计算的接口,同时在此基础上抽象出不同的应用类型的组件库,如基于流处理的 CEP (复杂事件处理库),SQL & TABLE 库 和 基于批处理的 FlinkML(机器学习库),Gelly(图处理库)等。API 层包括构建流计算应用的 DataStream API 和批计算应用的 DataSet API,两者都是提供给用户丰富的数据处理高级 API,例如 Map,FlatMap 等,同时也提供比较低级的 Process Function API ,用户可以直接操作状态和时间等底层数据
  • Runtime核心层
      该层主要负责对上层不同接口提供基础服务,也是 Flink 分布式计算框架的核心实现层,支持分布式 Stream 作业的执行、JobGraph 到 ExecutionGraph 的映射转换、任务调度等。将 DataStream 和 DataSet 转成统一的可执行的 Task Operator,达到在流式引擎下同时处理批量计算和流式计算的目的
  • 物理部署层
      该层主要涉及 Flink 的部署模式,目前 Flink 支持多种部署模式:本地、集群(Standalone / YARN)、云(GCE / EC2)、kubenetes。flink 能够通过该层支持不同平台的部署,用户可以根据需要选择使用对应的部署模式。

3)基本架构图
在这里插入图片描述
  Flink整个生态系统主要由两个组件组成,分别为JobManager和TaskManager,Flink架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为Worker(Slave)节点。所有组件之间的通信都是借助于Akka Framework,包括任务的状态以及checkpoint触发等信息。
  (1)Client客户端
    客户端负责将任务提交到集群,与JobManager构建Akka连接,然后将任务提交到JobManager,通过和JobManager之间进行交互获取任务执行状态。
  (2)JobManager
    JobManager负责整个Flink集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中TaskManager上TaskSlot的使用情况,为提交的应用分配相应的TaskSlots资源并命令TaskManager启动从客户端获取的应用。整个集群有且仅有一个活跃的JobManager,负责整个集群的任务管理和资源管理。
  (3)TaskManager
    TaskManager相当于整个集群的Slave节点,负责具体的任务执行和对应任务在每个节点上的资源申请与管理。

五.Flink vs Spark Straming
  • 流(stream)和微批(micro-batching)

  • 数据模型

    • Spark采用RDD模型,spark streaming的DStreaming 实际上也就是一组组小批数据RDD的集合
    • flink基本数据模型是数据流,以及事件(Event)序列
  • 运行时架构

    • Spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个
    • flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值