我在应用程序中使用spark-sql-2.4.1v。
在将数据写入hdfs文件夹时,我在spark流应用程序中遇到了这个问题
错误:
yarn.Client: Deleted staging directory hdfs://dev/user/xyz/.sparkStaging/application_1575699597805_47
20/02/24 14:02:15 ERROR yarn.Client: Application diagnostics message: User class threw exception: org.apache.hadoop.security.AccessControlException: Permission denied: user= xyz, access=WRITE, inode="/tmp/hadoop-admin":admin:supergroup:drwxr-xr-x
.
.
.
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=xyz, access=WRITE, inode="/tmp/hadoop-admin":admin:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:350)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:251)
在将数据写入hdfs文件夹时,我在spark流应用程序中遇到了这个问题。当我在Yarn簇模式下运行时,我面临这个问题,即。
--master yarn \
--deploy-mode cluster \
但是当我在“Yarn客户机”模式下运行时,它运行得很好。
--master yarn \
--deploy-mode client \
这个问题的根本原因是什么?
根本问题是,为什么要写在 /tmp/hadoop-admin/
而不是相应的用户目录。 hdfs://qa2/user/xyz/
?
我遇到了这个问题:
https://issues.apache.org/jira/browse/spark-26825
如何在spark sql应用程序中实现它?
1条答案
按热度按时间ddrv8njm1#
唯一不同的是
--deploy-mode client
以及失败--deploy-mode cluster
箱子是司机的位置。在客户机部署模式下,驱动程序在您执行的计算机上运行spark-submit
(通常是一个边缘节点,配置为使用一个Yarn簇,但它不是它的一部分)在集群部署模式下,驱动程序作为Yarn簇的一部分(Yarn控制下的一个节点)运行。看起来您的边缘节点配置错误。
如果常规的sparksql-only-spark应用程序也会失败,我也不会感到惊讶。听说它与流式查询(spark structured streaming)没有任何关系,对于任何spark应用程序都会失败,我不会感到惊讶。