由于目录级别的权限问题,Spark作业失败

时间:2017-06-12 14:51:59

标签: linux apache-spark

我在scala中创建了一个spark应用程序。我从shell脚本中调用了spark submit命令

我的spark应用程序正在从HDFS输入目录中读取文件。

我以用户身份运行spark作业。我的火花工作是尝试从/ data / published / source / oogway / tracking_id_log / TRACKING_ID_LOG_FULL读取和处理所有文件

/ data / published / source / omega / omega_tracking_log / OMEGA_LOG_FULL是用户地铁创建的目录

metro和build位于名为hadoop的同一组中

我可以清楚地看到构建用户对该HDFS目录具有读取权限,那么为什么我会得到以下错误?

 Exception in thread "main"  org.apache.hadoop.security.AccessControlException: Permission denied:  user=build, access=READ_EXECUTE,\
    inode="/data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL":metro:hadoop:drwxr-----
            at  org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:257)
            at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:238)
            at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkPermission(DefaultAuthorizationProvider.java:151)
            at org.apache.sentry.hdfs.SentryAuthorizationProvider.checkPermission(SentryAuthorizationProvider.java:174)
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:138)

以下是该HDFS目录的访问权限

bash-4.1$ hdfs dfs -ls /data/published/source/omega/omega_tracking_log
Found 3 items

 drwxr-----   - metro hadoop          0 2017-06-12 13:12 /data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL

如果spark想要从HDFS目录中读取所有文件并进行处理,那么我们是否还需要在HDFS目录上为spark用户进行EXECUTE访问?

1 个答案:

答案 0 :(得分:1)

这个问题是因为HDFS的许可。你能试试吗

  1. 从root用户登录 更改HDFS的权限

    hadoop fs -chmod -R 777 /

  2. 并尝试运行spark job