2017-03-10 2 views
2

Mein Spark-Job schlägt fehl, da der Benutzer keinen Zugriff auf das Verzeichnis hat, in dem Spark versucht, Staging- oder temporäre Datasets zu schreiben.So legen Sie den Staging-Speicherort für den Spark-Job fest

2017-03-10 10:25:47,0928 ERROR JniCommon fs/client/fileclient/cc/jni_MapRClient.cc:2072 Thread: 26413 mkdirs failed for /user/cxpdiprod/.sparkStaging/application_1488190062017_14041, error 13 Exception in thread "main" org.apache.hadoop.security.AccessControlException: User cxpdiprod(user id 99871) has been denied access to create application_1488190062017_14041 at com.mapr.fs.MapRFileSystem.makeDir(MapRFileSystem.java:1250) at com.mapr.fs.MapRFileSystem.mkdirs(MapRFileSystem.java:1270) at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1913) at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:634) at org.apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:356) at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:727) at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:142) at org.apache.spark.deploy.yarn.Client.run(Client.scala:1021) at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1081) at 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) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:742)

Der Benutzer 'cxpdiprod' hat Zugriff auf ein anderes Verzeichnis in dem Cluster d.h. /mapr/ui/abc. wie man spark anweist, ein anderes Verzeichnis für temporäre Dateien zu verwenden? Gibt es ein Argument?

Antwort

2

Fügen Sie diese Eigenschaft spark.yarn.stagingDir mit dem gewünschten Staging-Speicherort in spark-defaults.conf hinzu. Der Staging-Speicherort ist standardmäßig das Ausgangsverzeichnis /user/username/ des aktuellen Benutzers im HDFS-Dateisystem.

+0

Danke..ich verwende Mapr-Cluster und ich habe keinen Zugriff auf Spark-default.conf-Datei zu aktualisieren. Wie vorgeschlagen habe ich einen zusätzlichen Parameter zum Job hinzugefügt, aber es hat nicht funktioniert, ich bekomme immer noch denselben Fehler: - conf "spark.yarn.stagingDir =/mapr/Helios/cxpdi/warehouse" \ –

+1

Kannst du ohne die Anführungszeichen versuchen, ' --conf spark.yarn.stagingDir =/mapr/Helios/cxpdi/warehouse'. Und was ist die Version von Spark? Diese Eigenschaft wurde erst kürzlich hinzugefügt [SPARK-13063] (https://issues.apache.org/jira/browse/SPARK-13063) – franklinsijo

Verwandte Themen