2017-06-12 121 views
0

我在scala中创建了一个spark应用程序。我从shell脚本中调用了spark提交命令由于目录级别上的权限问题导致Spark作业失败

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

我用用户作为构建运行spark工作。我的火花的工作是试图读取并处理所有文件/数据/出版/源/乌龟/ tracking_id_log/TRACKING_ID_LOG_FULL

/数据/出版/源/欧米茄/ omega_tracking_log/OMEGA_LOG_FULL是由用户的地铁创建的目录

地铁和建造是在同一组名为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 

如果火花想从一个HDFS目录读取所有文件,并进行处理,然后它我们需要有EXECUTE对HDFS目录的访问的访问引发用户以及?

+0

HDFS作品完全像一个Linux文件系统:目录上的READ权限只是让你读取它的*名称*。要*浏览内容*您需要EXECUTE特权。 –

+0

@Samson:这是否意味着如果一个Spark应用程序正在读取HDFS目录中的所有文件,那么我们应该对该HDFS目录执行EXECUTE访问,并且可以读取该HDFS目录中的所有文件? –

+0

是的,目录中的'r'和'x'以及内部文件中的'r'。只是运行测试! –

回答

1

此问题是由于HDFS的许可。你可以尝试从根用户这个

  1. 登录 改变

    Hadoop的FS -chmod -R 777/

  2. HDFS的许可,并尝试运行火花工作
+0

因此,您对特定和本地授权问题的解决方案是** **全局授权**!告诉管理那些必须设置细粒度授权(使用ACL)和数据访问审核日志的公司... –

相关问题