加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

一文读懂Apache Flink技术

发布时间:2018-11-12 17:23:00 所属栏目:教程 来源:大数据首席数据师
导读:副标题#e# 本文是先介绍 Flink,再说 Flink的过去和现在 一、Flink介绍 Flink是一款分布式的计算引擎,它可以用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时地处理一些实时数据流,实时地产生数据的结果;也可以用来做一些基于

在Flink 1.3.0时期,引入了增量的checkpoint这个比较重要的功能。只有基于增量的checkpoint才能更好地支持含有超大State的Job。在阿里内部,这种上TB的State是非常常见。如果每一次都把全量上TB的State都刷到远程的HDFS上那么这个效率是很低下的。而增量checkpoint只是把checkpoint间隔新增的那些状态发到远程做存储,每一次checkpoint发的数据就少了很多,效率得到提高。在这个版本里面还引入了一个细粒度的recovery,细粒度的recovery在做恢复的时候,有时不需要对整个Job做恢复,可能只需要恢复这个Job中的某一个子图,这样便能够提高恢复效率。

在Flink 1.5.0时期,引入了Task local 的State的recovery。因为基于checkpoint机制,会把State持久化地存储到某一个远程存储,比如HDFS,当发生Failover的时候需要重新把这个数据从远程HDFS再download下来,如果这个状态特别大那么该download操作的过程就会很漫长,导致Failover恢复所花的时间会很长。Task local state recovery提供的机制是当Job发生Failover之后,能够保证该Job状态在本地不会丢失,进行恢复时只需在本地直接恢复,不需从远程HDFS重新把状态download下来,于是就提升了Failover recovery的效率。

一文读懂Apache Flink技术

2.4 Flink Runtime的历史变迁

Runtime的变迁历史是非常重要的。

在Flink 1.2.0时期,提供了Async I/O功能。如果任务内部需要频繁地跟外部存储做查询访问,比如说查询一个HBase表,在该版本之前每次查询的操作都是阻塞的,会频繁地被I/O的请求卡住。当加入异步I/O之后就可以同时地发起N个异步查询的请求,这样便提升了整个job的吞吐量,同时Async I/O又能够保证该job的Async语义。

在Flink 1.3.0时期,引入了HistoryServer的模块。HistoryServer主要功能是当job结束以后,它会把job的状态以及信息都进行归档,方便后续开发人员做一些深入排查。

在Flink 1.4.0时期,提供了端到端的exactly once的语义保证,Flink中所谓exactly once一般是指Flink引擎本身的exactly once。如果要做到从输入到处理再到输出,整个端到端整体的exactly once的话,它需要输出组件具备commit功能。在kafka老版本中不存在commit功能,从最近的1.1开始有了这个功能,于是Flink很快便实现了端到端exactly once。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读