前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据入门:Flink状态编程与容错机制

大数据入门:Flink状态编程与容错机制

作者头像
成都加米谷大数据
修改2020-12-16 18:08:35
6010
修改2020-12-16 18:08:35
举报

在大数据技术发展历程当中,Flink框架可以说是新一轮的热点技术框架,主打流批一体的计算模式,成为更适应当下需求的技术框架,因此再也技术领域得到更多的重视。今天的大数据入门分享,我们主要来讲讲Flink框架的状态编程与容错机制。

大数据培训:Flink状态编程与容错机制
大数据培训:Flink状态编程与容错机制

流式计算,通常分为有状态和无状态两种情况:

无状态:无状态的计算观察每个独立事件,并根据最后一个事件输出结果。

有状态:有状态的计算则会基于多个事件输出结果。

Flink流计算理念,官方说法叫做有状态的流计算,将批处理也看作是一种特殊的“流”,即有界的流,在这样的指导思想下,实现了批处理和流计算。

Flink状态编程

Flink有很多算子,数据源source,数据存储sink都是有状态的,流中数据都是buffer records,会保存一定的元素或者元数据。如:ProcessWindowFunction会缓存输入流的数据,ProcessFunction会保存设置的定时器信息等。

Flink中,状态始终与特定算子相关,总的来说有两种类型的状态:算子状态(operator state)和键控状态(keyed state)。

大数据培训:Flink状态编程与容错机制
大数据培训:Flink状态编程与容错机制

算子状态(operator state)

算子状态的作用范围限定在算子任务。也就是说同一并行任务所处理的所有数据都可以访问到相同的状态,状态对于统一任务而言是共享的。算子不能由相同或不同算子的另一个任务访问。

Flink算子状态的三种基本数据结构——

列表状态(List state):将状态表示为一组数据的列表。

联合列表状态(Union list state):将状态表示为一组数据的列表,它与常规列表的区别在于,在发生故障时,或者从保存点(savepoint)启动应用程序时如何恢复。

广播状态(Broadcast state):如果一个算子有多项任务,而它的每项任务状态又都相同,那么这种情况最适合光爆状态

键控状态(keyed state)

键控状态是根据输入数据流中定义的键(key)来维护和访问的。

Flink为每个键值维护一个状态实例,并将具有相同键的所有数据,都分区到一个算子任务中,这个任务会维护和处理这个key对应的状态。

当任务处理处理一条数据时,它会自动将状态的访问范围限定为当前输的key。因此,具有相同key的所有数据都会访问相同的状态。

Keyed State类似于一个分布式的k-v的map数据结构,只能用于KeyedStream(keyby算子处理之后)。

Flink的Keyed State支持的数据类型:

ValueState[T]保存单个值,值得类型为T

get操作:ValueState.value()

set操作:ValueState.update(value:T)

ListState[T]保存一个列表,列表元素的类型T

ListState.add(value:T)

ListState.addAll(values:java.util.List[T])

ListState.get()返回Iterable[T]

ListState.update(values:java.util.List[T])

MapState[K,V]保存key-value对

MapState.get(key:K)

MapState.put(key:K,value:V)

MapState.contains(key:K)

MapState.remove(key:K)

ReducingState[T]

AggregatingState[I,O]

Flink容错机制

1、状态一致

当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是“正确性级别”的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确。

Flink的一个重大价值在于,它既保证了exactly-once,也具有低延迟和高吞吐的处理能力。

2、端到端(end-to-end)状态一致性

端到端的一致性保证,意味着结果的正确性贯穿了整个流处理应用的始终;每一个组件都保证了它自己的一致性,整个端到端一致性级别取决于所有组件中一致性最弱的组件。

大数据培训:Flink状态编程与容错机制
大数据培训:Flink状态编程与容错机制

3、检查点(Checkpoint)

Flink检查点算法的正式名称是异步分界线快照(Asynchronous barrier snapshotting)。该算法大致基于Chandy-Lamport分布式快照算法。

检查点是Flink最有价值的创新之一,因为它使得Flink可以保证exactly-once,并且不需要牺牲性能。

关于大数据入门,Flink状态编程与容错机制,以上就为大家做了简单的介绍了。Flink框架在当前的大数据技术生态当中,热度持续上升,作为大数据开发者,掌握Flink势在必行。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flink状态编程
  • Flink容错机制
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术对外提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、presto、Iceberg、Alluxio 等,以快速构建企业级数据湖、数据仓库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档