Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 由于目录级别的权限问题,Spark作业失败_Linux_Apache Spark - Fatal编程技术网

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

Linux 由于目录级别的权限问题,Spark作业失败,linux,apache-spark,Linux,Apache Spark,我在scala中创建了一个spark应用程序。我从shell脚本调用了spark submit命令 我的spark应用程序正在从HDFS输入目录读取文件 我以用户作为构建运行spark作业。我的spark工作是尝试从/data/published/source/oogway/tracking\u id\u log/tracking\u id\u log\u FULL读取和处理所有文件 /data/published/source/omega/omega_tracking_log/omega_lo

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

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

我以用户作为构建运行spark作业。我的spark工作是尝试从/data/published/source/oogway/tracking\u id\u log/tracking\u id\u log\u 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目录中的所有文件并对其进行处理,那么spark用户是否也需要对HDFS目录具有执行访问权限?

此问题是因为HDFS的权限。你能试试这个吗

  • 从根用户登录 更改HDFS的权限

    hadoop fs-chmod-R777/

  • 试着运行spark job

  • HDFS的工作原理与Linux文件系统完全相同:目录上的读取权限只允许您读取其名称。要浏览内容,您需要执行权限。@Samson:这是否意味着如果spark应用程序正在读取HDFS目录中的所有文件,那么我们应该对该HDFS目录具有执行权限,并对该HDFS目录中的所有文件具有读取权限?是的,
    r
    x
    ,和
    r
    中的文件。只需运行一个测试!非常感谢。它起作用了,所以您对特定和本地授权问题的解决方案是全局禁止所有授权?!?告诉那些必须为数据访问设置细粒度授权(使用ACL)和审核日志的受监管公司。。。