文档首页/ MapReduce服务 MRS/ 故障排除/ 使用Flink/ Flink业务程序无法读取NFS盘上的文件
更新时间:2023-11-18 GMT+08:00
分享

Flink业务程序无法读取NFS盘上的文件

用户问题

Flink业务程序无法读取集群节点挂载的NFS盘上的文件。

问题现象

用户开发的Flink业务程序中需要读取用户定义的配置文件,该配置文件放在NFS盘上,NFS盘是挂载在集群节点上的,集群的所有节点均可以访问该盘。用户提交Flink程序后,业务代码访问不到客户自定义的配置文件,导致业务程序启动失败。

原因分析

该问题的根因是NFS盘上的根目录权限不足,导致Flink程序启动后无法访问该目录。

MRS的Flink任务是在YARN运行,当集群未启用Kerberos认证时,在YARN上运行任务的用户为yarn_user。用户自定义的配置文件如果在任务启动之后使用,则文件以及文件的父目录(NFS上的文件所在的父目录,非集群节点上的软连接),必须允许yarn_user可以访问,否则程序中无法获取文件内容。当集群为启用Kerberos认证的集群时,则文件的权限必须允许提交程序的用户访问。

处理步骤

  1. root用户登录集群的Master节点。
  2. 执行如下命令查看用户自定义配置文件所在父目录的权限。

    ll <文件所在路径的父目录路径>

  3. 进入NFS盘待访问文件所在目录,修改用户自定义配置文件所在父目录的权限为755。

    chmod 755 -R /<文件所在路径的父目录路径>

  4. 确认Core或者Task节点是否可以访问到该配置文件。

    1. root用户登录Core/Task节点。

      如果当前集群已启用Kerberos认证,请以root用户登录Core节点。

    2. 执行su - yarn_user命令切换到yarn_user用户。

      如果当前集群已启用Kerberos认证,请执行 su - 提交作业的用户命令切换用户。

    3. 执行如下命令查看用户权限,文件所在路径请使用该文件的绝对路径。

      ll <文件所在路径>

建议与总结

当用户提交的任务中要访问自定义的配置文件时,特别是挂载NFS盘时,除了确认文件的权限之外,还要确认文件所在父目录的权限是否正确。NFS盘挂载到MRS集群节点上,一般会新建软连接到NFS目录,这个时候需要查看NFS上的目录权限是否正确。

相关文档