Flink业务程序无法读取NFS盘上的文件
用户问题
Flink业务程序无法读取集群节点挂载的NFS盘上的文件。
问题现象
用户开发的Flink业务程序中需要读取用户定义的配置文件,该配置文件放在NFS盘上,NFS盘是挂载在集群节点上的,集群的所有节点均可以访问该盘。用户提交Flink程序后,业务代码访问不到客户自定义的配置文件,导致业务程序启动失败。
原因分析
该问题的根因是NFS盘上的根目录权限不足,导致Flink程序启动后无法访问该目录。
MRS的Flink任务是在YARN运行,当集群未启用Kerberos认证时,在YARN上运行任务的用户为yarn_user。用户自定义的配置文件如果在任务启动之后使用,则文件以及文件的父目录(NFS上的文件所在的父目录,非集群节点上的软连接),必须允许yarn_user可以访问,否则程序中无法获取文件内容。当集群为启用Kerberos认证的集群时,则文件的权限必须允许提交程序的用户访问。
处理步骤
- 以root用户登录集群的Master节点。
- 执行如下命令查看用户自定义配置文件所在父目录的权限。
ll <文件所在路径的父目录路径>
- 进入NFS盘待访问文件所在目录,修改用户自定义配置文件所在父目录的权限为755。
chmod 755 -R /<文件所在路径的父目录路径>
- 确认Core或者Task节点是否可以访问到该配置文件。
建议与总结
当用户提交的任务中要访问自定义的配置文件时,特别是挂载NFS盘时,除了确认文件的权限之外,还要确认文件所在父目录的权限是否正确。NFS盘挂载到MRS集群节点上,一般会新建软连接到NFS目录,这个时候需要查看NFS上的目录权限是否正确。