这是我参与「第四届青训营 」笔记创作活动的的第4天
Flink概述
Apache Flink的诞生背景
什么是大数据
大数据指无法在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合
四大特点(4V)
价值化(value):数据整体价值高,但价值密度低
海量化(volumes):量和规模大
快速化(velocity):数据产生和处理速度快
多样化(variety):数据结构和规模多样
例如:有结构化数据,半结构化数据...
大数据计算框架发展历史
史前阶段:传统数仓、Oracle、单机、黑箱使用
Hadoop:分布式、Map-Reduce、离线计算
Map-Reduce主要是Map算子及Reduce算子,提供的接口单一
Spark:批处理、流处理、SQL高阶API、内存迭代计算
SQL API表达更多语义,让业务更简单
Flink:流计算、实时更快、流批一体、Streaming/Batch SQL
为什么需要流式计算
-
大数据的实时性带来价值更大,比如:
- 1.监控场景:如果能实时发现业务系统的健康状态,就能提前避免业务故障;
- 2.金融风控:如果实时监测出异常交易的行为,就能及时阻断风险的发生;
- 3.实时推荐:比如在抖音,如果可以根据用户的行为数据发掘用户的兴趣、偏好,就能向用户推荐更感兴趣的内容;
- 4....
- 大数据实时性的需求,带来了大数据计算架构模式的变化
- 批式计算
-
- 离线计算,非实时
- 静态数据集
- 小时/天等周期性计算
理解为 等待一批数据到齐才开始计算
- 流式计算
-
- 实时计算,快速,低延迟
- 无限流、动态、无边界
- 7*24小时持续运行
- 流批一体
数据源源不断,处理不断
为什么Apache Flink会脱颖而出
流式计算引擎的发展历程
大数据如果从 Google对外发布MapReduce论文算起,已经前后跨越将近二十年,业内常用的计算框架演化历史(红框是流式计算框架)
流式计算引擎对比
| Storm | Spark Streaming | Flink | |
|---|---|---|---|
| Streaming Model | Native | mini-batch> 微批处理 | Native |
| 一致性保证 | At Least/Most Once | Exactly-Once | Exactly-Once |
| 延迟 | 低延迟(毫秒级) | 延迟较高(秒级) | 低延迟(毫秒级) |
| 吞吐 | Low | High | High |
| 容错 | ACK | RDD Based Checkpoint | Checkpoint(Chandy-Lamport) |
| StateFul | No | Yes(DStream) | Yes(Operator) |
| SQL支持 | No | Yes | Yes |
Why Flink
Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments,perform computations at in-memory speed and at any scale. ---来自Apache Flink社区官方介绍
apache flink是一个用于在无界和有界数据流上进行有状态计算的分布式处理框架和引擎。Flink被设计成可以在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
在运行过程中发送错误,状态不丢失
Apache Flink开源生态
1、Flink是计算框架,本身没有存储能力,但是Flink跟业内主要的存储引擎进行集成
2、中间框是Flink内部的架构设计
3、Flink部署可以在虚拟机、本机、大数据框架等方面进行部署
4、Flink提出的框架:图计算相关的框架、Flink ML、对于有状态存储的场景提出Stateful Function