Linux 由于目录级别的权限问题,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_log_FULL是用户创建的目录 metro和build位于名为hadoop的同一组中 我可以清楚地看到构建用户对那个HDFS目录有读取权限,那个么为什么我会得到下面的错误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
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的工作原理与Linux文件系统完全相同:目录上的读取权限只允许您读取其名称。要浏览内容,您需要执行权限。@Samson:这是否意味着如果spark应用程序正在读取HDFS目录中的所有文件,那么我们应该对该HDFS目录具有执行权限,并对该HDFS目录中的所有文件具有读取权限?是的,
r
和x
,和r
中的文件。只需运行一个测试!非常感谢。它起作用了,所以您对特定和本地授权问题的解决方案是全局禁止所有授权?!?告诉那些必须为数据访问设置细粒度授权(使用ACL)和审核日志的受监管公司。。。