我的spark工作失败,因为用户无法访问spark试图写入临时数据集或临时数据集的目录。
2017-03-10 10:25:47,0928错误JniCommon fs / client / fileclient / cc / jni_MapRClient.cc:2072线程:26413 mkdirs 失败了 /user/cxpdiprod/.sparkStaging/application_1488190062017_14041,错误 13线程“main”中的异常 org.apache.hadoop.security.AccessControlException:用户cxpdiprod(用户 id 99871)被拒绝访问创建 application_1488190062017_14041 在com.mapr.fs.MapRFileSystem.makeDir(MapRFileSystem.java:1250) 在com.mapr.fs.MapRFileSystem.mkdirs(MapRFileSystem.java:1270) 在org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1913) 在org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:634) 在org.apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:356) at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:727) 在org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:142) 在org.apache.spark.deploy.yarn.Client.run(Client.scala:1021) 在org.apache.spark.deploy.yarn.Client $ .main(Client.scala:1081) 在org.apache.spark.deploy.yarn.Client.main(Client.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497) 在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:742)
用户'cxpdiprod'可以访问群集中的其他目录,即/mapr/ui/abc
。是否有任何属性可以为临时文件和临时文件设置不同的目录?
答案 0 :(得分:3)
将此属性spark.yarn.stagingDir
添加到spark-defaults.conf
中所需的暂存位置。默认情况下,登台位置是HDFS文件系统中当前用户的主目录/user/username/
。
答案 1 :(得分:0)
一个小更新:登台目录需要指定为
--conf spark.yarn.stagingDir=hdfs:///<path/to/staging>
至少在我的集群中,我尝试不使用hdfs:///
,但没有成功。添加hdfs:///
对我有用。