大数据技术原理与应用学习笔记(十二)

  • Flink
  • Flink简介
  • 为什么选择Flink
  • 传统数据处理架构
  • 大数据lambda架构
  • 流处理架构
  • Flink是理想的流处理框架
  • Flink的优势
  • 应用场景
  • 事件驱动型应用
  • 数据分析应用
  • 数据流水线应用
  • Flink技术栈
  • 物理部署层
  • Runtime核心层
  • APIs & LIBRARIES层
  • Flink体系结构
  • Flink编程模型
  • Flink编程实践



Flink

Flink简介

Flink特性:

  • 批流一体化
  • 精密的状态管理
  • 事件时间支持
  • 精确一次的状态一致性保障

为什么选择Flink

传统数据处理架构

特点是采用一个中心化的数据库系统来存储。随着业务量增大,负载会增大,容易发生问题。

大数据lambda架构

如图所示:

flink 高可用性部署 flink集群高可用原理_流处理


缺点:导致平台复杂度过高,运维成本高。

流处理架构

如图所示:

flink 高可用性部署 flink集群高可用原理_flink_02


流处理架构具有如下特点:

  • 不存在大型集中式数据库,避免了数据节点不堪重负;
  • 将批处理看成流处理的子集

Flink是理想的流处理框架

如下表所示:

框架

性能

Flink

低延迟√ 高吞吐√ 高性能√

Storm

低延迟√ 高吞吐× 准确计算×

SparkStreaming(微批处理)

高吞吐√ 容错性√ 低延迟(实时处理)×

Flink的优势

高级特性:

  • 提供有状态的计算
  • 支持状态管理
  • 支持强一致性语义
  • 支持对乱序消息的处理

优势:

  • 同时支持高吞吐、低延迟、高性能
  • 同时支持批处理、流处理
  • 高度灵活的流式窗口
  • 支持有状态计算
  • 具有良好的容错性
  • 具有独立的内存管理
  • 支持迭代和增量迭代

应用场景

应用基本可分为 事件驱动型应用、数据分析应用和数据流水线应用

事件驱动型应用

优势:

  • 访问本地数据,无需访问远程查询
  • 每个应用只需考虑自己的数据,很少做协调工作

例子:反欺诈、异常检测、基于规则的报警、业务流程监控等。

数据分析应用

优势:

  • 获取洞察结果的延迟更低
  • 更加简单的应用架构

例子:电信网络质量分析、消费者技术中实时数据即席分析,大规模图分析等。

数据流水线应用

优势: 减少了数据转移过程的延迟

例子:电子商务实时查询索引构建,电子商务中持续ETL等。

Flink技术栈

Flink的层次结构可大体分为:物理部署层、Runtime核心层、APIs & LIBRARIES层

物理部署层

物理部署层为底层,运行模式包括:

  • GCE/EC2
  • Local
  • Standalone集群
  • YARN集群

Runtime核心层

该层为核心实现层,包括两套API:

  • 流处理 DataStream API
  • 批处理 DataSet API

APIs & LIBRARIES层

该层提供批处理和流处理的接口,并抽象出不同的应用类型的组件库:

  • CEP(基于流处理的复杂事件处理库)
  • SQL & Table库(流/批处理)
  • FlinkML(基于批处理的机器学习库)

Flink体系结构

Flink系统主要由两个组件组成,分别为JobManager和TaskManager,Flink 架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为Slave节点。

flink 高可用性部署 flink集群高可用原理_flink_03

Flink编程模型

Flink编程模型如图所示:

flink 高可用性部署 flink集群高可用原理_大数据技术_04

Flink编程实践

关于Flink编程实践请参考厦大数据库博客:Flink安装与编程实践(Flink1.9.1)