Flink 学习一 Flink 简介

Flink 学习一

https://flink.apache.org/

1.快速认识Flink

1.1 离线批计算与实时流式计算

批计算:有界流

流式计算:无界流

Flink 学习一 Flink 简介_第1张图片

  • 批计算:针对有界流,在计算结果前可以看到整个数据集;
  • 流计算:针对无界流,永远无法看到输入数据的整体,数据的输入无法看到结束,数据到达就计算,输出当时(实时)的计算结果;输出结果也是一个无界流;数据到达也可以理解为可以把无界流变成有界流在计算,比如时间划分,数据量划分

思考:如果批很小,是不是也可以理解为流计算,流计算中如果每次数据到达都是一批数据,是不是也是可以理解成为批计算;

是的,两个概念有重复的地方,这里Flink 把流计算和批计算进行了API 层面的统一,是一个流批一体的计算框架;

1.2 Flink 基本框架

分布式,有状态的实时流式处理框架

Flink 学习一 Flink 简介_第2张图片

数据来源可能是数据库,日志,LOT,页面Click 等产生的数据,经过结构化数据之后,可以是存数据库,或者是队列形式 提供给Flink ,在经过计算后输出给Application,日志输出,或者是数据库存储;

Flink 主要是使用java语言开发,对用户提供java,Scala ,python 编程 api,

Flink 以流式数据作为基础,引入有界流来实现批计算,从而实现流批一体

1.3 Flink 运行时架构

一个Flink程序,用户会编写数据的处理逻辑,数据的处理不会直接使用这些处理逻辑;Flink 计算框架会把用户编写的处理逻辑当做一个任务提交给系统,然后由计算框架来把处理逻辑拆分成task ,然后再集群上运行task ;

Flink 学习一 Flink 简介_第3张图片

Flink 计算采用 Master-Slave 架构

  • Master的角色是 JobManager ,负责集群和作业管理
  • Slave 的角色是 TaskManager, 负责执行计算逻辑
  • 客户端程序,提交任务到 集群

1.4 Flink 的特性

1.使用场景

  • 事件驱动引用:实时风控,实时推荐,实时营销
  • 流,批数据分析:
  • 数据管道及ETL:读取数据,处理数据,写入数据

2. 状态管理(状态管理机制)

有状态的Flink应用程序针对本地状态访问进行了优化。任务状态始终保持在内存中,或者,如果状态大小超过可用内存,则保持在磁盘数据结构上的高效访问中。因此,任务通过访问本地(通常在内存中)状态来执行所有计算,从而产生非常低的处理延迟。

Flink通过定期异步地将本地状态检查点指向持久存储,在出现故障时保证了一次状态的一致性。

Flink 学习一 Flink 简介_第4张图片

3.强大的准确性保证

  • exactly-once 状态一致性
  • 事件时间处理
  • 专业的迟到数据处理

4.灵活丰富的API

越往下越底层,拿到的数据越多,可控的细节越多

  • 流批数据之上的SQL 查询
  • 流批数据之上的 TableAPI
  • datastream 流处理算子api , dataset 批处理api
  • 精细可控的processFunction

Flink 学习一 Flink 简介_第5张图片

5.规模弹性可控

  • 可扩展的分布式框架 算子粒度每个task 的并行度控制
  • 支持超大状态管理
  • 增量checkpoint 机制

6.运维能力

  • 灵活部署
  • 高可用性设置
  • 保存点恢复机制

你可能感兴趣的:(大数据之路,flink,学习,大数据)