浅学Flink

1、简介


 1. Apache Flink就是近些年来在社区中比较活跃的分布式处理框架;Flink相对简单的编程模型加上其高吞吐、低延迟、高性能以及支持exactly-once语义的特性,让它在工业生产中较为出众。
 2. Flink 主页在其顶部展示了该项目的理念:“**Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架**” 。
 3. Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
 4. Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。


2、特性

1、支持高吞吐、 低延迟、 高性能的流处理
2、支持带有事件时间的窗口(Window) 操作
3、支持有状态计算的 Exactly-once 语义
4、支持高度灵活的窗口(Window) 操作, 支持基于 time、 count、 session,以及 data-driven 的窗口操作
5、支持具有 Backpressure 功能的持续流模型
6、支持基于轻量级分布式快照(Snapshot) 实现的容错
7、一个运行时同时支持 Batch on Streaming 处理和 Streaming 处理
8、Flink 在 JVM 内部实现了自己的内存管理
9、支持迭代计算
10、支持程序自动优化: 避免特定情况下 Shuffle、 排序等昂贵操作, 中间结果有必要进行缓存

3、Flink基石

Flink 之所以能这么流行,离不开它最重要的四个基石: Checkpoint、 State、 Time、Window。

首先是 Checkpoint 机制,这是 Flink 最重要的一个特性。 Flink 基于 Chandy-Lamport 算法实现了一个分布式的一致性的快照, 从而提供了一致性的语义。 Chandy-Lamport 算法实际上在 1985 年的时候已经被提出来, 但并没有被很广泛的应用,而 Flink 则把这个算法发扬光大了。Spark 最近在实现 Continue streaming, Continue streaming 的目的是为了降低它处理的延时,其也需要提供这种一致性的语义, 最终采用 Chandy-Lamport 这个算法, 说明 Chandy-Lamport 算法在业界得到了一定的肯定。

提供了一致性的语义之后, Flink 为了让用户在编程时能够更轻松、 更容易地去管理状态,还提供了一套非常简单明了的 State API, 包括里面的有 ValueState、 ListState、MapState,近期添加了 BroadcastState, 使用 State API 能够自动享受到这种一致性的语义。

除此之外,Flink 还实现了 Watermark 的机制,能够支持基于事件的时间的处理,或者说基于系统时间的处理, 能够容忍数据的延时、 容忍数据的迟到、 容忍乱序的数据。另外流计算中一般在对流数据进行操作之前都会先进行开窗, 即基于一个什么样的窗口上做这个计算。 Flink 提供了开箱即用的各种窗口, 比如滑动窗口、 滚动窗口、 会话窗口以及非常灵活的自定义的窗口。

添加链接描述

你可能感兴趣的:(flink,大数据,java)