欢迎光临散文网 会员登陆 & 注册

大数据Apache Flink原理介绍

2021-04-24 14:13 作者:编程大战  | 我要投稿

    大数据时代Spark的快速发展的同时,或许我们也该为 Flink 的发展速度点个赞。

Apache Flink是由Apache软件基金会内的Apache Flink社区基于Apache许可证2.0开发的,Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。目前主要还是依靠开源社区的贡献而发展。

该项目已有超过100位代码提交者和超过460贡献者。

概述一下Apache Flink :

1.简介:

Apache Flink 是一个框架和分布式处理引擎,用于在无边界有边界数据流上进行有状态的计算。

Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。Flink 集成了所有常见的集群资源管理器,例如 Hadoop YARN、 Apache Mesos 和 Kubernetes,但同时也可以作为独立集群运行。特点如下:

  1)无边界:数据流有开始没有结束,持续处理到来的数据(实时处理)

  2)有边界:数据的批处理(如等待一定量的数据到达后进行处理、存储后处理)

  3)有状态:处理后一个数据时会用到之前处理过的数据的特点,该特点即为状态,需要保存。任务的状态始终保留在内存中,如果状态大小超过可用内存,则会保存在能高效访问的磁盘数据结构中。

2.Flink状态特点

        1)多种状态基础类型:多种状态基础类型,例如原子值(value),列表(list)以及映射(map)。

  2)插件化的State Backend:State Backend 负责管理应用程序状态,并在需要的时候进行 checkpoint。可以将状态存在内存或者 RocksDB。RocksDB 是一种高效的嵌入式、持久化键值存储引擎。Flink 也支持插件式的自定义 state backend 进行状态存储。

  3)精确一次语义:checkpoint 和故障恢复算法保证了故障发生后应用状态的一致性。

  4)超大数据量状态:利用其异步以及增量式的 checkpoint 算法,存储数 TB 级别的应用状态。

  5)可弹性伸缩的应用:Flink 能够通过在更多或更少的工作节点上对状态进行重新分布,支持有状态应用的分布式的横向伸缩。

3.Flink时间语义  

  1)事件时间模式:使用事件时间语义的流处理应用根据事件本身自带的时间戳进行结果的计算。因此,无论处理的是历史记录的事件还是实时的事件,事件时间模式的处理总能保证结果的准确性和一致性。如,用户点击某一页面后一个小时内再次返回该页面的次数,此时使用事件时间。

  2)Watermark 支持:衡量事件时间进展,是一种平衡处理延时和完整性的灵活机制。如处理数据的顺序(判断是否等待更早的数据到来)可以根据水印判断。

  3)迟到数据处理:当以带有 watermark 的事件时间模式处理数据流时,在计算完成之后仍会有相关数据到达。这样的事件被称为迟到事件。Flink 提供了多种处理迟到数据的选项,如将这些数据重定向到旁路输出(side output)或者更新之前完成计算的结果。

  4)处理时间模式:处理时间模式根据处理引擎的机器时钟触发计算,一般适用于有着严格的低延迟需求,并且能够容忍近似结果的流处理应用。如处理11:00-12:00内的页面点击数。

4.分层API

  根据抽象程度分层,提供了三种不同的 API。每一种 API 在简洁性和表达力上有着不同的侧重,并且针对不同的应用场景。

  

在今天 尚学堂 为大家准备一套“大数据Flink”实战项目课程,本套课程是由尚学堂老师在线课程录制,该课程花费三天时间为大家讲述


大数据Apache Flink原理介绍的评论 (共 条)

分享到微博请遵守国家法律