如何设置Spark作业登台位置

时间:2017-03-10 16:48:04

标签: hadoop apache-spark

我的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。是否有任何属性可以为临时文件和临时文件设置不同的目录?

2 个答案:

答案 0 :(得分:3)

将此属性spark.yarn.stagingDir添加到spark-defaults.conf中所需的暂存位置。默认情况下,登台位置是HDFS文件系统中当前用户的主目录/user/username/

答案 1 :(得分:0)

一个小更新:登台目录需要指定为

--conf spark.yarn.stagingDir=hdfs:///<path/to/staging>

至少在我的集群中,我尝试不使用hdfs:///,但没有成功。添加hdfs:///对我有用。