美文网首页大数据平台技术笔记
YARN上运行AM出错“Resource XXX is not

YARN上运行AM出错“Resource XXX is not

作者: OkGogogooo | 来源:发表于2022-03-29 15:24 被阅读0次

    1. 环境信息

    • Apache Hadoop 3.2.2

    2. 问题描述

    情景说明:
    本人正在开发数据工厂的实时计算后台,需要将Flink集群的运行纳入到数据工厂的管控之下。数据工厂中的每一个工作空间,如果它有实时计算管道,那么在开发环境和生产环境分别将提供独立的YARN-SESSION模式的集群。
    例如开发人员试图在数据工厂的DataStudio中运行测试一条计算管道,那么引擎将会去检查一下这个工作空间的Flink集群有没有启动,没有启动的话,将会启动这个Flink集群,然后将计算管道提交到Flink集群运行,DataStudio中实时获取其执行日志、监控其状态。

    后台实现中有如下重要细节:
    1) 将Flink程序包传到HDFS上;

    1. 自己的代码启动集群时,会复制HDFS上的Flink程序包到另一个HDFS目录/user/hadoop/.flink/appXXXX,然后部署启动。

    问题描述
    在启动Flink集群时, 启动失败,从Hadoop YARN原生的监控界面可看到失败消息:
    Resource hdfs://XXX/user/hadoop/.flink/application_1646096734199_0013/plugins/external-resource-gpu/flink-external-resource-gpu-1.14.3.jar is not publicly accessible and as such cannot be part of the public cache.

    3. 问题分析

    此异常消息出自:


    org.apache.hadoop.yarn.util.FSDownload

    跟着进入isPublic方法:


    org.apache.hadoop.yarn.util.FSDownload.isPublic(xxx)
    跟踪进入checkPublicPermsForAll方法:
    org.apache.hadoop.yarn.util.FSDownload.checkPublicPermsForAll(xxx)

    再查看isPublic方法中的一行代码:

    return ancestorsHaveExecutePermissions(fs, current.getParent(), statCache);
    

    跟踪进入:


    org.apache.hadoop.yarn.util.FSDownload.ancestorsHaveExecutePermissions(xxx)

    从源代码分析可知,当YARN从HDFS上离线程序包时,要求程序包及程序包的祖先目录,对于other组,文件夹有r-x权限,文件有r--权限。
    发现程序包的祖先目录“.flink”和“hadoop”文件夹的other组权限缺少“r-w”。


    hdfs文件浏览

    4. 解决办法

    给“.flink”和“hadoop”文件夹的other组添加“r-w”权限。

    [hadoop@XCloud152 bin]$ hadoop fs -chmod o+rx /user/hadoop
    [hadoop@XCloud152 bin]$ hadoop fs -chmod o+rx /user/hadoop/.flink
    

    相关文章

      网友评论

        本文标题:YARN上运行AM出错“Resource XXX is not

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