You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark 3.3.0独立集群Java程序读取挂载驱动器文件时权限拒绝

Spark 3.3.0独立集群模式下Java应用目录权限异常问题

问题背景

我在Spark 3.3.0独立集群中运行Java应用,需定期读取挂载驱动器内的文件。应用以spark用户运行,挂载驱动器由其他团队管理,已将spark用户加入4BANK组,目标目录权限如下:

drwxrwx--- 300  4BANK input

其中300为目录所有者,4BANK为所属用户组。

通过命令行以spark用户身份可正常访问input目录下的文件,但运行Java应用时抛出权限拒绝异常:

java.nio.file.AccessDeniedException: /home/ftpnis/FM/input

我在应用中添加日志输出当前用户及目录权限信息:

10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: Owner: 300
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: Group: 4BANK
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: Permissions: [OWNER_READ, GROUP_EXECUTE, OWNER_WRITE, GROUP_WRITE, GROUP_READ, OWNER_EXECUTE]
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: The file is not readable.
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: The file is not writable.
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: Current User: spark
10:42:03 INFO  javaconnect.spooldir.domain.FileProcessor: Groups: spark 4BANK gbdcs gbdpmx

日志显示spark用户确实属于4BANK组,目录组权限也包含读、写、执行权限,但应用判定目录不可读。另外,用其他拥有相同权限的用户在客户端模式运行应用可正常访问,仅集群模式下出现问题。


解决方向

1. 重启Spark Worker进程刷新组信息

用户组变更后,已运行的进程不会自动加载新的组配置。集群模式下,Spark Worker进程负责启动Executor,需:

  • 重启所有集群节点上的Spark Worker服务,让Worker进程重新读取spark用户的组列表。
  • 验证Worker进程的组信息:找到Worker进程ID,执行cat /proc/<pid>/status | grep Groups,确认输出包含4BANK对应的GID。

2. 检查远程挂载目录的权限配置

如果挂载的是NFS等远程共享目录,需排查:

  • 共享服务器的squash规则:确认是否开启root_squash/all_squash导致spark用户权限被映射为匿名用户。
  • 挂载参数:查看mount命令输出,确认是否有uid/gid强制指定,导致实际访问时组权限未生效。

3. 检查Spark文件系统访问配置

Spark默认可能通过Hadoop FileSystem抽象访问本地文件,需:

  • 在Spark配置中添加spark.hadoop.fs.file.impl=org.apache.hadoop.fs.LocalFileSystem,强制使用本地文件系统实现,避免Hadoop权限检查干扰。
  • 若应用直接使用Java NIO访问文件,检查代码中权限判断逻辑是否存在bug(比如错误忽略组权限)。

4. 同步集群节点的用户组配置

确认所有Spark集群节点上的spark用户都已加入4BANK组:

  • 在每个Worker节点执行id spark,检查输出的组列表是否包含4BANK,避免部分节点未同步导致Executor权限不足。

内容的提问来源于stack exchange,提问作者Petar Markov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:26:02