• 阅读: 118 回复: 0
    澜小二

    FlinkSQL作业运行几天后自动退出,可规律复现,怎么办?

    楼主 发表于 2021-09-07 10:03:19

    最近在项目中遇到了一个问题,FlinkSQL作业运行几天后自动退出,可规律复现,错误信息如下:

    org.apache.hadoop.ipc.Client[] - Exception encountered while connecting to the server : org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): Invalid AMRMToken from appattempt_1628650090030_0117_000001
    
     问题主要原因:AM和RM沟通的过程中,突然AM提供的Token不被认可,导致拒绝连接,进而AM被kill,为Yarn 2.6版本的BUG:https://issues.apache.org/jira/browse/YARN-3103

    但是由此也产生了相应的疑惑,Yarn的bug为啥到导致Flink作业运行失败呢?

  • dipper709691
    沙发 发表于 2021-09-09 14:58:48

    Re FlinkSQL作业运行几天后自动退出,可规律复现,怎么办?


    • 首先大致了解一下什么是AM、RM

      • AM:Yarn组件ApplicationMaster(简写AM),AM与每个具体任务对应,负责管理任务的整个生命周期内的所有事宜

      • RM:Yarn组件ResourceManager(简写RM),负责管理分配全局资源

    • 为什么Yarn的 AM 与 RM 无法通信会导致Flink任务失败

      • 先看一下Flink on Yarn 运行流程图


        • 第一步:Flink client(同时也是 YARN client)会先上传作业依赖(jar包及配置)到 HDFS。

        • 第二步:Flink client向Yarn RM发送请求,申请一个Yarn Container去启动AM。

        • 第三步:Yarn RM会在NodeManager上分配一个Container,启动AM,其中包括了 Flink JobManager。Yarn NodemManager会将配置文件和jar包下载到对应的container中,进行container容器的初始化,初始化完成后AM构建完成。AM会为TaskManagers生成新的Flink配置文件

        • 第四步:AM为该Flink应用的TaskManagers分配containers,这个过程会从HDFS上下载jar和配置文件(此处的配置文件是AM修改过的,包含了JobManager的一些信息,比如说JobManager的地址)并启动container。

    • 综上所述,Yarn AM 与Flink JobManager在同一个container中,当AM与RM因为Token不被认可无法连接的时候,AM无法在一定时间(10min)内未汇报心跳信息,RM则认为它死掉了,它上面的所有正在运行的Container将被设置为失败状态,Flink JobManager也被终止,从而导致Flink作业运行失败自动退出。

热门文章

数据中台系列(一):你的企业真的需要「数据中台」吗?

数据中台案例 | 一呼百应:激活 670 万企业用户数据,赋能智慧供应链

数据中台案例 | 数字化为零售行业创造新可能

辨析BI、数据仓库、数据湖和数据中台内涵及差异点(建议收藏)

最新文章

数据标签的分类、设计及实现方法

公共数据资产凭证是什么?有什么作用?一文解决你所有疑问!

组织需要掌握数据管理

两个使用 Pandas 读取异常数据结构 Excel 的方法,拿走不谢!

  • 未登录

    回复楼主

    登录后可回复
    /1000