【跟小嘉学 Apache Flink】一、Apache Flink 介绍

系列文章目录

【跟小嘉学 Apache Flink】一、Apache Flink 介绍

一、Apache Flink

1.1、Apache Flink是什么

Apache Flink 是一个框架分布式处理引擎,用于对无界(Unbounded streams)和有界数据流(bounded streams)进行状态计算。Flink 被设计在所有的常见的集群环境,以内存中的速度和任意规模执行计算。
无界数据流(Unbounded streams): 可以定义数据的开始,无法定义数据的结尾,会无休止的产生数据,因此无界数据流必须会被持续处理,即数据背接受后需要立刻被处理,我们无法等待所有数据都到达后再进行处理,在处理无界时候一般会以特定的顺序及逆行处理,比如数据的产生顺序而不是数据进入处理程序的顺序,以此来推断处理结果的完整性。
有界数据流(bounded streams): 可以定义数据的开始,也可以定义数据的结尾,其非常适合需要访问全部数据才能完成计算工作的数据,同事处理有界数据流不需要有序获取数据,所以有界数据流的所有数据可以被排序,相对于无界数据流,有界数据流处理数据的有序性十分简单。
官网地址:https://flink.apache.org/

flink 发展时间线:

  • 2014年8月,Flink 第一个版本 0.6 正式发布,与此同时Flink的几位核心开发者创办了 Data Artisans 公司;
  • 2014年12月,Flink 项目完成孵化;
  • 2015年4月,Flink 发布了里程碑的重要版本0.9.0;
  • 2019年1月,长期对Flink投入研发的阿里巴巴,以9000万欧元的价格收购了 Data Artisans 公司;
  • 2019年8月,阿里巴巴将内部版本 Blink 开源,合并入 Flink 1.9.0 版本;

1.2、Apache Flink 框架处理流程

image.png

1.3、Flink 的应用场景

批处理:数据攒够了一批处理一批,比如Hive、数据库、Spark等传统数据处理方式,批处理的场景就像发邮件,一次可以说好多话,可以了解美女某段时间的心理状态。
流处理:数据来一条就实时处理一条,流处理场景就像聊天,你一句我一句,可以实时了解对方当前的心理需求。
image.png

1.4、为什么要用Flink

  • 批处理和流处理;
  • 流数据更真实的反映了我们的生活方式;
  • 我们的目标:
    • 低延迟;
    • 高吞吐;
    • 结果的准确性和良好的容错性;

1.5、数据处理框架演变

1.5.1、传统数据处理框架:事务处理(OLTP)

image.png

1.5.2、传统数据处理框架:分析处理(OLAP)

数据量可以很大,但是不够实时;HIVE

1.5.3、有状态的流式处理

apache storm:
image.png

1.5.4、lambda 架构

用两套系统,同时保证低延迟和结果准确;
image.png

1.5.5、Kappa架构

核心特点:

  • 高吞吐,低延迟;
  • 结果的准确性;
  • 精确一次(exactly-once)的状态一致性保证;
  • 可以与众多存储系统连接;
  • 高可用,支持动态扩展;

1.6、流处理的应用

1.6.1、事件驱动型应用

image.png
无须查询远程的事务性数据库,本地访问使它具有更高的时吞吐量和更低的延迟,由于定期向远处持久化存储系统写入检查点的工作可以异步,增量式完成,因此对于正常的事件处理的影响甚微。并且它的优势不仅于此,传统分层架构下,通常多个应用会共享一个数据库,因此对任何数据对修改都需要谨慎协调;反而它由于只要考虑自身数据,因此在应用更新或服务扩容对协调工作将大大减少。

1.6.2、数据分析型应用

image.png

1.6.3、数据管道型应用

提取——转换——加载(ETL)是一种在存储系统之间进行数据转换和迁移的常用方法。ETL作业通常会周期性触发,将数据从事务性数据库复制到分析型数据库或数据仓库中。
数据管道和ETL作业的用途相似,都可以转换和加载数据,并将其从某个存储系统移动到另一个。但数据管道是以持续流处理模式运行的,而非周期性触发。因此它支持一个不断生成数据的源头读取记录,并将它们以极低的延迟发送到终点。
image.png

  • 电子商务中的实时搜索索引构建
  • 电子商务中持续的ETL

1.7、分层API

越顶层越抽象,表达含义越简明,使用越方便;
越底层越具体,表达能力越丰富,使用越灵活;
image.png

1.8、Flink Vs Spark

1.8.1、数据处理架构

image.png

1.8.2、数据模型

  • spark 采用 RDD 模型, Spark streaming 的 DStream 实际上也就是一组小批数据 RDD的集合;
  • flink 基本数据抹稀泥个就是数据流以及事件(Event)序列;

1.8.3、运行时架构

  • spark 是批计算,将DAG划分为不同的 stage,一个完成后才可以计算下一个;
  • flink 是标准的流执行模式。一个事件在一个节点处理完成后可以直接发往下一个节点进行处理;

猜你喜欢

转载自blog.csdn.net/fj_Author/article/details/131501724