Flink概述
- Flink的核心目标:数据流上有状态的计算;
- 什么是:Flink是一个框架和分布式处理引擎,对于无解和有界数据流进行有状态的计算;
- 无界数据流:
- 有定义流的开始,没定义流的结束;
- 它们会无休止的产生数据;
- 无界流的数据必须持续处理,不能等到所有数据都到达了再处理,因为输入是无线的。
- 比如水龙头的水;Kafaka;
- 有界数据流:
- 有定义流的开始,有定义流的结束;
- 等所数据拿到再计算;
- 数据可以被排序,所有并不需有序摄取;
- 有界数据流处理通常被称为批处理;
- 有状态的流处理:把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并更新状态;
- 起源于德国柏林理工大学,flink德语语义是“快速、灵巧”;14年捐赠Apache,15年发布正式版本,19年阿里巴巴收购它的母公司,并发布Blink;
- Flink的主要特点:
-
- 高吞吐、低延迟,毫秒级别延迟;
- 结果准确,Flink提供了事件时间和处理时间,对于乱序事件流,事件时间语义仍然能提供一致且准确的结果;
- 精确一次的状态一致性保证;
- 可以连接到最常用的存储系统,如kafaka、Hive、Redis等。
- 高可用,本身高可用的设置,加上K8s、YARN的紧密集成,加上故障快速恢复和动态扩展任务的能力,Flink能做到用极少的停机时间7*24小时全天候的运行;
- Flink vs SparkStreaming
-
- Spark数据模型:Spark采用RDD模型,Spark Streaming的DStream实际上也就是一组组小批数据RDD的集合;
- Spark运行时架构:Spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个;

-
- Flink以流处理为根本,基本数据模型是数据流,以及事件序列;
- Flink有流式SQL,且有状态,计算模型是“流计算”;
- Spark无流式SQL,且无状态,计算模型是“微批”;
- Flink 分层API,实际开发中,SQL最常用;
