Flink流式计算里的时间和watermark机制

一 流计算对“批计算”的优势:

    “流计算”是相对于“批计算”来的,MapReduce,Spark底层的计算方式是目前主流的“批计算”实现方式,很多公司在使用这种方式做大数据处理。但是越来越多的公司目前开始关注“流计算”,主要有以下一些原因:

1 对处理时间的要求。随着技术的进步,用户对“延迟”的忍受能力越来越弱,能更及时发现问题、解决问题,能提升用户体验。

2 在大数据分析领域,数据分析得越及时,价值越高。在推荐、风控等很多场景中,对实时性的要求相当苛刻

3 “流计算”天然支持对事件发生的先后顺序、时间关系这方面的分析,这是“mini batch”方式的批处理系统支持不好的

    目前批处理的流行是因为以前的流处理技术不够好,或者说“批处理”是因为技术原因对现实需求所做的妥协。现实中日志、交易、物流等常见的大数据场景,数据都是以“流”的方式产生,适合以“流计算”的方式及时处理。但以前的Storm等流处理系统,在吞吐量、容错性、准确性方面无法满足要求,所以大家才使用成熟度更高的“批处理”系统。人为地发数据切分成一批一批的,每天处理一次或者每小时处理一次等。

    如果“流处理”系统达到批处理系统类似的吞吐量和容错性,“流处理”在实时性和“时间序列”处理方面的优势就非常明显了。

二 Flink里的时间类型:

    有3类时间,分别是数据本身的产生时间、进入Flink系统的时间和被处理的时间,在Flink系统中的数据可以有三种时间属性:

Event Time

Ingestion Time

Processing Time

Event Time 是每条数据在其生产设备上发生的时间。这段时间通常嵌入在记录数据中,然后进入Flink,可以从记录中提取事件的时间戳;Event Time即使在数据发生乱序,延迟或者从备份或持久性日志中重新获取数据的情况下,也能提供正确的结果。这个时间是最有价值的,和挂在任何电脑/操作系统的时钟时间无关。

Processing Time 是指执行相应操作的机器的系统时间。如果流计算系统基于Processing Time来处理,对流处理系统来说是最简单的,所有基于时间的操作(如Time Window)将使用运行相应算子的机器的系统时钟。然而,在分布式和异步环境中,Processing Time并不能保证确定性,它容易受到Event到达系统的速度(例如来自消息队列)以及数据在Flink系统内部处理的先后顺序的影响,所以Processing Time不能准确地反应数据发生的时间序列情况。

Ingestion Time是事件进入Flink的时间。 在Source算子处产生,也就是在Source处获取到这个数据的时间,Ingestion Time在概念上位于Event Time和Processing Time之间。在Source处获取数据的时间,不受Flink分布式系统内部处理Event的先后顺序和数据传输的影响,相对稳定一些,但是Ingestion Time和Processing Time一样,不能准确地反应数据发生的时间序列情况。

三 watermark机制

上面提到Event Time是最能反映数据时间属性的,但是Event Time可能会发生延迟或乱序,Flink系统本身只能逐个处理数据,如何应对Event Time可能会发生延迟或乱序情况呢?

比如需要统计从10:00到11:00发生某个事件的次数,也就是对Event Time是在10:00和11:00之间的数据统计个数。Event Time可能会发生延迟或乱序的情况下,Flink系统怎么判断10:00到11:00发生的事件数据都已到达,可以给出统计结果了呢?长时间地等待会推迟结果输出时间,而且占用更多系统资源。

Watermark是一个对Event Time的标识,内容方面Watermark是个时间戳,一个带有时间戳X的Watermark到达,相当于告诉Flink系统,任何Event Time小于X的数据都已到达。比如上面的例子,如果Flink收到一个时间戳是11:01的Watermark,它就可以把之前统计的Event Time在10:00和11:00之间的事件个数输出,清空相关被占用的资源。

Watermark的产生方式:

Periodic - 一定时间间隔或者达到一定的记录条数会产生一个watermark。

Punctuated – 基于event time通过一定的逻辑产生watermark,比如收到一个数据就产生一个WaterMark,时间是event time + 5秒。

这两种产生方式,都有机制来保证产生的watermark是单调递增的。

即使有了watermark,如果现实中,数据没有满足watermark所保证的条件怎么办?比如Flink处理了11:01的watermark,但是之后遇到了event time是10:00~11:00之间的数据怎么办?首先如果这种事情出现的概率非常小,不影响所要求的准确度,可以直接把数据丢弃;如果这种事情出现的概率比较大,就要调整产生water mark的机制了。

    除了把违反watermark机制的数据丢弃,也有不丢弃的处理方法,比如通过一些机制来更新之前统计的结果,这种方式会有一定的性能开销。

总结:

    本文首先介绍了流计算系统的优势,流计算系统在功能上是“批处理”系统的超集,除了可以做批计算,也可以提供实时性更高,时间序列处理更完善的功能。然后介绍了在流计算系统中的时间类型和watermark机制,流处理系统中数据的时间属性非常重要,流处理系统通过water mark机制来解决现实中的数据延迟,数据乱序问题。

欢迎阅读,有问题可以通过邮件kaiyuan0989爱特163.com一起探讨。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容

  • Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸...
    Alukar阅读 27,099评论 1 48
  • Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸...
    尼小摩阅读 34,086评论 0 85
  • 美丽,在古战场 传说一股脑儿的美丽 西施气喘,范蠡眼盲 为一则典故,遂失踪 转过身去,小荷才露 赤红的蜻蜓已夏季 ...
    曾昭阅读 134评论 0 1
  • 我,她,异地恋,高四,复读。 是因为她才决定复读,亦是以为想要以后在一起才决定异地复读。...
    吾心妄阅读 308评论 0 0
  • 以前,遇到事情总是交给时间, 现在,依然想交给时间。 只是,有些心累, 总想着自己还小, 不想去面对成年人该面对的...
    00b119dd1c13阅读 430评论 0 1