2016-12-10 1 views
0

Ich benutze Apache Spark Shell seit einiger Zeit. Also wusste ich, dass wir Spark Shell mit Optionen wie --driver-memory und --executor-memory starten können, um Standardwerte zu ändern.Apache Spark Shell startet nicht mit weniger Speicher

Also begann ich spark-shell mit folgenden Befehl ein:

$ spark-shell --driver-memory 100M 

Aber ich folgende Fehler getroffen wurde:

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
Setting default log level to "WARN". 
To adjust logging level use sc.setLogLevel(newLevel). 
java.lang.OutOfMemoryError: Java heap space 
    at scala.reflect.internal.Names$class.enterChars(Names.scala:70) 
    at scala.reflect.internal.Names$class.body$1(Names.scala:116) 
    at scala.reflect.internal.Names$class.newTermName(Names.scala:127) 
    at scala.reflect.internal.SymbolTable.newTermName(SymbolTable.scala:16) 
    at scala.reflect.internal.Names$class.newTermName(Names.scala:135) 
    at scala.reflect.internal.SymbolTable.newTermName(SymbolTable.scala:16) 
    at scala.reflect.internal.Names$class.newTypeName(Names.scala:139) 
    at scala.reflect.internal.SymbolTable.newTypeName(SymbolTable.scala:16) 
    at scala.tools.nsc.symtab.SymbolLoaders.enterClass(SymbolLoaders.scala:61) 
    at scala.tools.nsc.symtab.SymbolLoaders.enterClassAndModule(SymbolLoaders.scala:119) 
    at scala.tools.nsc.symtab.SymbolLoaders.initializeFromClassPath(SymbolLoaders.scala:167) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1$$anonfun$apply$mcV$sp$1.apply(SymbolLoaders.scala:265) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1$$anonfun$apply$mcV$sp$1.apply(SymbolLoaders.scala:264) 
    at scala.collection.Iterator$class.foreach(Iterator.scala:893) 
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1336) 
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) 
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply$mcV$sp(SymbolLoaders.scala:264) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply(SymbolLoaders.scala:260) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader$$anonfun$doComplete$1.apply(SymbolLoaders.scala:260) 
    at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235) 
    at scala.tools.nsc.symtab.SymbolLoaders$PackageLoader.doComplete(SymbolLoaders.scala:260) 
    at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:211) 
    at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.load(SymbolLoaders.scala:227) 
    at scala.reflect.internal.Symbols$Symbol.typeParams(Symbols.scala:1733) 
    at scala.reflect.internal.Types$class.isRawIfWithoutArgs(Types.scala:3756) 
    at scala.reflect.internal.SymbolTable.isRawIfWithoutArgs(SymbolTable.scala:16) 
    at scala.reflect.internal.tpe.TypeMaps$$anon$1.apply(TypeMaps.scala:328) 
    at scala.reflect.internal.tpe.TypeMaps$$anon$1.apply(TypeMaps.scala:325) 
    at scala.reflect.internal.Symbols$Symbol.modifyInfo(Symbols.scala:1542) 
    at scala.reflect.internal.Symbols$Symbol.cookJavaRawInfo(Symbols.scala:1688) 
    at scala.tools.nsc.typechecker.Infer$Inferencer.checkAccessible(Infer.scala:270) 

ich durch diesen Fehler verwechselt wurde. Seit, können wir spark-shell mit irgendeiner Menge des Gedächtnisses beginnen, als warum es mit 100M scheitert?

Antwort

2

Nichts passiert hier seltsam. Spark ist eine komplexe Engine und benötigt viel Speicher. Der Speicherbedarf eines Leerlauftreiberprozesses liegt bei etwa 250 MB und Sie benötigen viel mehr als das für stabile Arbeit.

+0

Wie kann ich den Footprint des Leerlauftreiberprozesses in Spark überprüfen/sehen? – himanshuIIITian