java.lang.IllegalArgumentException: Der Systemspeicher 100663296 muss mindestens 4.718592E8 sein. Bitte verwenden Sie einen größeren Heap.
Beim Entwickeln eines Spark- Projekts in Eclipse und beim Versuch, das Programm direkt in Spark auszuführen, ist der folgende Fehler aufgetreten:
Dies liegt offensichtlich daran, dass der von der JVM angeforderte Speicher nicht ausreicht und der SparkContext nicht gestartet werden kann. Aber wie richte ich es ein?
Überprüfte aber das Startskript
[Java] Einfache Kopie anzeigen
- #! / bin / bash
- /usr/local/spark-1.6.0/bin/spark-submit \
- --class cn.spark.study.Opt17_WordCount \
- --num-executors 3 \
- --Treiberspeicher <strong> 100 m </ strong> \
- --executor-memory <strong> 100m </ strong> \
- --executor-Farben 3 \
- /root/sparkstudy/Java/spark-study-java-0.0.1-SNAPSHOT-jar-with-dependencies.jar \
- --master spark: // yun01: 7077
- <pre code_snippet_id = "1674698" snippet_file_name = "blog_20160506_2_7762008" name = "code" class = "java" style = "color: rgb (51, 51, 51); font-size: 14px; line-height: 26px;">
Es scheint, dass der Speicher des Treibers nicht ausreicht. Wenn ich versuche, den Speicher des Treibers auf 400 MB zu erhöhen
Immer noch brach der folgende Fehler
Ausnahme im Thread "main" java.lang.IllegalArgumentException: Der Systemspeicher 402128896 muss mindestens 4.718592E8 sein. Bitte verwenden Sie einen größeren Heap.
Zu diesem Zeitpunkt können Sie es erneut erhöhen und auf 1 g geben (dieses Problem sollte nur nach dem Upgrade von Spark 1.5 oder 1.6 auftreten).
Führen Sie dann erneut aus und erhalten Sie das Ergebnis normal
Sie können im Code auch Folgendes angeben:
val conf = new SparkConf (). setAppName ("Wortanzahl")
conf.set ("spark.testing.memory", "1g") // Der folgende Wert beträgt mehr als 512 m
Ursprünglicher Link: https://blog.csdn.net/wangshuminjava/article/details/79598720
[Java] Einfache Kopie anzeigen
- / **
- * Gibt die Gesamtmenge des zwischen Ausführung und Speicher gemeinsam genutzten Speichers in Byte zurück.
- * /
- private def getMaxMemory (conf: SparkConf): Long = {
- val systemMemory = conf.getLong ("spark.testing.memory", Runtime.getRuntime.maxMemory)
- val reservedMemory = conf.getLong ("spark.testing.reservedMemory",
- if (conf.contains ("spark.testing")) 0 else RESERVED_SYSTEM_MEMORY_BYTES)
- val minSystemMemory = reservedMemory * 1.5
- if (systemMemory <minSystemMemory) {
- Neue IllegalArgumentException auslösen (s "Systemspeicher $ systemMemory muss" +
- s "mindestens $ minSystemMemory sein. Bitte verwenden Sie einen größeren Heap.")
- }}
- val usableMemory = systemMemory - reservedMemory
- val memoryFraction = conf.getDouble ("spark.memory.fraction", 0,75)
- (usableMemory * memoryFraction) .toLong
- }}
Hier ist also hauptsächlich val systemMemory = conf.getLong ("spark.testing.memory", Runtime.getRuntime.maxMemory).
Die Definition und Erklärung von conf.getLong () lautet
[Java] Einfache Kopie anzeigen
- getLong (Schlüssel: String, defaultValue: Long): Long
- Holen Sie sich einen Parameter als Long und greifen Sie auf einen Standard zurück, wenn er nicht festgelegt ist