2016-12-07 1 views
1

ich folgende Dateistruktur, wenn i df in einem der Slaves oder Master-Gerät haben -h"Kein Platz auf dem Gerät links", Spark-Auftrag fertig: keine richtige Lösung noch in Stackoverflow

Filesystem   Size Used Avail Use% Mounted on 
    /dev/xvda1   7.9G 4.4G 3.5G 57%/
    tmpfs     7.4G 4.0K 7.4G 1% /dev/shm 
    /dev/xvdb    37G 3.3G 32G 10% /mnt 
    /dev/xvdf    37G 2.0G 34G 6% /mnt2 
    /dev/xvdv    500G 33M 500G 1% /vol0 

Mein spark-env.sh sieht aus wie diese

export SPARK_WORKER_DIR="/vol0" 
export SPARK_WORKER_CORES=2 
export SPARK_WORKER_OPTS="-Dspark.local.dir=/vol0" 
export SPARK_LOCAL_DIRS="/vol0/" 

aber immer noch ich bin immer „Kein Platz mehr auf dem Gerät“ Fehler und Job werden beim Speichern von Dateien beendet.

I Ein Datensatz mit 200 Dateien mit je 1 GB und ein weiterer Datensatz mit 200 Dateien mit je 45 MB. Ich schließe mich ihnen an und speichere in s3 eine neue Datei.

DataFrame dataframe1= sqlContext.read().format("json").json(outputGrowth).coalesce(50); 
     dataframe1.registerTempTable("dataframe1"); 



     DataFrame dataframe2 = sqlContext.read().format("json").json(pdiPath); 
     dataframe2.registerTempTable("dataframe2"); 

     //Joining two tables 
     String query = "join dataframe1 and dataframe2"; 
     DataFrame resultPDI = sqlContext.sql(query); 
     dataPDI.unpersist(); 
     growthData.unpersist(); 
     resultPDI.write().mode("overwrite").json(outputPDI); 

Also, wie kann ich meine Funken zu speichern Datensatz in/vol0 anstelle anderer Datei/mnt/Funken.

Ich habe verschiedene Lösungen aus stackoverflow versucht, und einige Blogs keine Lösungen funktionieren für mich.

Kann jemand mir helfen, dieses Problem loszuwerden. Ich benutze 10 Gerät m1.large in Aws-Server.

+0

Es gibt andere Konfigurationen, die solche Probleme verursachen können. Zum Beispiel Log-Platzierungen, HDFS Local-Dirs usw. Alle zeigen standardmäßig auf/tmp. Ich würde anfangen, sie zu untersuchen. –

+0

Vielen Dank @AssafMendelson für Ihren Vorschlag. Was könnten diese Parameter sein? kannst du mir helfen . und kannst du mir vorschlagen, welche Art von Instanzen ich verwenden soll? –

+0

@AssafMendelson. Wo ist die Datei, in der die Protokollierungseinstellung konfiguriert werden kann? –

Antwort

1

können Sie erstellen cimply den Symlink erstellen für/mnt/Funken/val0 wenn Sie ubuntu wie unten

ln -s /val0 /mnt/spark 

so mit Hilfe von symblink verwenden Sie/val0 mit/mnt/Funken beziehen. Weitere Informationen finden Sie unter dem folgenden Link http://ubuntuhak.blogspot.in/2013/04/symbolic-links-in-ubuntu.html

+0

aber wie macht man das selbe in allen Slaves, manuell? oder können wir dies in einer der Konfigurationsdateien einstellen? –

+0

yess Sie müssen symblink manuell auf allen Worker-Knoten erstellen, aber Sie können auch mit dieser Konfiguration versuchen spark.local.dir spark verwendet dies für seine Scratch-Arbeit und standardmäßig/tmp möglicherweise ur/tmp Ordner hatte nicht genug Platz –

+0

Ich denke, das ist nicht manuell möglich, da die Daten wachsen werden, die Anzahl der Slaves wird mehr als hunderte sein. –

Verwandte Themen