美文网首页Flink大数据开发
大数据开发:Flink心跳机制简介

大数据开发:Flink心跳机制简介

作者: 成都加米谷大数据 | 来源:发表于2021-05-25 17:54 被阅读0次

对于实时流计算引擎来说,心跳机制是确保客户端及服务端正常运行的重要措施,在Flink当中也同样如此,基于心跳机制,去确保系统的稳定运行。今天的大数据开发学习分享,我们来讲讲Flink心跳机制。

关于心跳机制

常见的心跳检测有两种:

socket套接字SO_KEEPALIVE本身带有的心跳机制,定期向对方发送心跳包,对方在收到心跳包后会自动回复;

应用自身实现心跳机制,同样也是使用定期发送请求的方式。

Flink心跳机制

Flink中ResourceManager、JobMaster、TaskExecutor三者之间存在相互检测的心跳机制,ResourceManager会主动发送请求探测JobMaster、TaskExecutor是否存活,JobMaster也会主动发送请求探测TaskExecutor是否存活,以便进行任务重启或者失败处理。

Flink中心跳机制主要由以下几个类(接口)协作完成:

HeartbeatTarget接口,表示监控目标,包含两个方法,requestHeartbeat发送心跳请求,receiveHeartbeat接受心跳请求;

HeartbeatManager接口,继承了HeartbeatTarget接口,心跳管理者,用于start/stop监控对象;

HeartbeatManagerImpl类,实现了HeartbeatManager接口,其内部包含一个实现了Runnable接口的HeartbeatMonitor静态内部类,它包含了心跳目标HeartbeatTarget以及其状态,如果超时就会调用HeartbeatListener心跳监听者进行相应的处理,HeartbeatManagerImpl所处位置可以理解为client,存在于JobMaster与TaskExecutor中;

HeartbeatManagerSenderImpl类,继承HeartbeatManagerImpl类,用于周期发送心跳请求,所处位置可以理解为server,存在于JobMaster、ResourceManager中。

Flink心跳机制运行

以JobMaster与TaskExecutor之间的心跳检测为例,看下其具体的请求流程。

初始化过程

一、JobMaster在启动过程中会调用HeartbeatServices.createHeartbeatManagerSender方法创建一个HeartbeatManagerSenderImpl对象taskManagerHeartbeatManager,会反复启动一个定时器,定时扫描需要探测的对象并且发送心跳请求。

二、JobMaster在执行任务部署时会向ResourceManager申请slot资源,ResourceManager在向yarn申请到资源后会启动TaskExecutor进程,在TaskExecutor启动过程中会调用HeartbeatServices.createHeartbeatManager方法创建一个HeartbeatManagerImpl对象jobManagerHeartbeatManager。

注册过程

一、在启动TaskExecutor之后,会向其申请slot,调用requestSlot方法,在这个过程中会向JobMaster注册自身信息,通过rpc调用其registerTaskManager方法;

二、JobMaster在收到rpc请求后调用registerTaskManager方法,会通过taskManagerHeartbeatManager.monitorTarget方法将其添加到监控目标中,monitorTarget方法会将监控对象HeartbeatTarget封装在HeartbeatMonitor里面,初始化会调用resetHeartbeatTimeout重置心跳超时时间,启动一个超时时间heartbeatTimeout的定时器;

三、在注册完之后TaskManager之后,TaskExecutor会收到一个注册成功的请求,会调用其establishJobManagerConnection方法,用于与JobMaster建立连接,会向jobManagerHeartbeatManager添加监控目标,同样会封装成为一个HeartbeatMonitor并且启动一个定时器;

由此可见JobMaster与TaskExecutor是双向检测的,在heartbeatTimeout时间内没有收到心跳信息就会认为已超时,JobMaster认为TaskExecutor出现timeout会调用TaskManagerHeartbeatListener的notifyHeartbeatTimeout方法,TaskExecutor任务JobMaster出现timeout会调用JobManagerHeartbeatListener的notifyHeartbeatTimeout方法。但是需要明确心跳的主动请求者是JobMaster。

心跳过程

一、在TaskExecutor注册到JobMaster中之后就代表了心跳机制开始,在taskManagerHeartbeatManager中也就是HeartbeatManagerSenderImpl中定时schedual调用HeartbeatTarget.requestHeartbeat,最后会通过rpc方式调用taskManager的heartbeatFromJobManager方法;

二、TaskExecutor收到heartbeatFromJobManager的rpc请求之后,会调用jobManagerHeartbeatManager也就是HeartbeatManagerImpl的requestHeartbeat方法,在这个过程中有两个处理步骤:

调用对应HeartbeatMonitor的reportHeartbeat方法,cancelTimeout取消注册时候的超时定时任务,并且注册下一个超时检测futureTimeout;

调用monitorTarget的receiveHeartbeat方法,也就是会通过rpc调用JobMaster的heartbeatFromTaskManager方法返回一些负载信息;

三、JobMaster在接收到rpc请求后调用其heartbeatFromTaskManager方法,会调用taskManagerHeartbeatManager的receiveHeartbeat方法,在这个过程中同样有两个处理步骤:

调用对应HeartbeatMonitor的reportHeartbeat方法,cancelTimeout取消注册时候的超时定时任务,并且注册下一个超时检测futureTimeout;

调用TaskManagerHeartbeatListener的reportPayload方法,上报收到TaskExecutor的负载信息

至此一次完整心跳过程已经完成,会根据heartbeatInterval执行下一次心跳。

关于大数据开发学习,Flink心跳机制,以上就为大家做了大致的讲解了。心跳机制这个东西,其实本身不算难,但是具体到复杂的实时数据流场景当中,心跳机制的存在,就非常关键了。

相关文章

  • 大数据开发:Flink心跳机制简介

    对于实时流计算引擎来说,心跳机制是确保客户端及服务端正常运行的重要措施,在Flink当中也同样如此,基于心跳机制,...

  • 大数据开发:Flink ReScale机制

    Flink作为一个热度越来越高的流计算引擎,在越来越多的场景下得到应用,可以说是从寂寂无名到周所周知,其发展态势是...

  • Flink源码阅读(十)--- Flink 心跳机制

    1. 背景 心跳机制通过定期向对方发送请求方式用于检测客户端或者服务端是否存活的一种机制,常见的心跳检测有两种: ...

  • Flink总结

    Flink总结 Flink简介 Apache Flink作为一款高吞吐量、低延迟的针对流数据和批数据的分布式实时处...

  • flink---window机制

    1.简介 流式处理中,数据连续不断的产生,flink使用窗口机制将无限的数据有限化,比如每5s计算一次数据中最大值...

  • 大数据开发:Flink内存模型简介

    作为新一代备受关注的流计算框架,Flink受到的关注越来越多,而Flink的学习,也成为大数据框架学习的一个重要部...

  • flink 学习笔记 — 初识 flink

    Apache flink 简介 Apache flink 是分布式流式数据处理框架,主要用于有界(bounded)...

  • Flink实时性、容错机制、窗口等介绍

    问题导读 1.为什么flink实时性好?2.flink通过什么机制保证数据既不重复,也不丢失?3.flink采用什...

  • 【Flink 精选】Checkpoint 机制如何保证 Exac

    问题1:阐述 Flink 提供的三种数据处理语义,解释 Checkpoint 机制如何保证 Flink 程序结果的...

  • 一、 简介

    Apache Flink的简介 Apache Flink是一个开源的针对批量数据和流数据的处理引擎,已经发展为AS...

网友评论

    本文标题:大数据开发:Flink心跳机制简介

    本文链接:https://www.haomeiwen.com/subject/ccecsltx.html