2017-10-19 4 views
1

ich die folgende Konfiguration im lokalen Modus auf Sparklyr bin mit:wenn mehr Kerne verwendet Funken (Sparklyr) Fehler zu viele Dateien öffnen

conf <- spark_config() 
conf$`sparklyr.cores.local` <- 28 
conf$`sparklyr.shell.driver-memory` <- "1000G" 
conf$spark.memory.fraction <- 0.9 

sc <- spark_connect(master = "local", 
       version = "2.1.1", 
       config = conf) 

Dies funktioniert gut, wenn ich lese in einem csv spark_read_csv verwenden. Jedoch, wenn ich mehr Kerne verwendet wie

conf <- spark_config() 
conf$`sparklyr.cores.local` <- 30 
conf$`sparklyr.shell.driver-memory` <- "1000G" 
conf$spark.memory.fraction <- 0.9 

ich die folgende Fehlermeldung erhalten:

Blockquote Error in value[3L] : Failed to fetch data: org.apache.spark.SparkException: Job aborted due to stage failure: Task 10 in stage 3.0 failed 1 times, most recent failure: Lost task 10.0 in stage 3.0 (TID 132, localhost, executor driver): java.io.FileNotFoundException: /tmp/blockmgr-9ded7dfb-20b8- 4c72-8a6f-2db12ba884fb/1f/temp_shuffle_e69d56ba-80b4-499f-a91f- 0ae63fe4553f (Too many open files) at java.io.FileOutputStream.open0(Native Method) at java.io.FileOutputStream.open(FileOutputStream.java:270) at java.io.FileOutputStream.(FileOutputStream.java:213) at org.apache.spark.storage.DiskBlockObjectWriter.initialize(DiskBlockObjectWriter.scala:102) at org.apache.spark.storage.DiskBlockObjectWriter.open(DiskBlockObjectWriter.scala:115) at org.apache.spark.storage.DiskBlockObjectWriter.write(DiskBlockObjectWriter.scala:235) at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:152) at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMa

I ulimit 1040-419430 erhöht (weich und hart) und das machte keinen Unterschied.

Meine VM hat 128 Kerne und 2T Speicher und ich möchte alles nutzen können.

Irgendwelche Vorschläge?

Antwort

1

Spark local Modus ist für Low-Volume-Experimente und Komponententests, nicht für den Produktionseinsatz gedacht und Probleme mit Systemgrenzen sind nur ein Höhepunkt des Eisbergs. Es funktioniert in einer einzigen JVM und Sie können viele verschiedene Probleme nur mit der Speicherverwaltung erwarten.

Overall Spark ist für die Skalierung ausgelegt, nicht für die Skalierung. Sie sollten keine Leistungssteigerungen und einen reibungslosen Betrieb erwarten, wenn Sie Ressourcen im lokalen Modus erhöhen. Wenn Rechenressourcen nicht mit Festplattenkonfiguration mit hohem Durchsatz gesichert werden, werden Ihre Ressourcen außerdem nicht ausreichend genutzt.

Verwandte Themen