Si prega di aiutare a capire come serializzatore Kryo alloca la memoria per il suo buffer.Come serializzatore Kryo alloca il buffer in Spark
L'app My Spark non riesce in una fase di raccolta quando tenta di raccogliere circa 122 MB di dati a un driver dai lavoratori.
com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 57197
at com.esotericsoftware.kryo.io.Output.require(Output.java:138)
at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:220)
at com.esotericsoftware.kryo.io.Output.writeBytes(Output.java:206)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:29)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ByteArraySerializer.write(DefaultArraySerializers.java:18)
at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:549)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:312)
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:293)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:568)
at org.apache.spark.serializer.KryoSerializerInstance.serialize(KryoSerializer.scala:161)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
Questa eccezione viene visualizzato dopo ho aumentato la memoria del driver a 3 Gb di memoria e l'esecutore a 4Gb e aumentato la dimensione del buffer per kryoserializer (sto usando Spark 1,3)
conf.set('spark.kryoserializer.buffer.mb', '256')
conf.set('spark.kryoserializer.buffer.max', '512')
Credo ho impostato il buffer per essere abbastanza grande, ma la mia app scintilla continua a bloccarsi. Come posso verificare quali oggetti stanno usando il buffer Kryo su un executor? C'è un modo per ripulirlo?
Sembra che il problema sia che Spark 1.3 non ha la proprietà 'spark.kryoserializer.buffer.max' - ha' spark.kryoserializer.buffer.max.mb'. Sto testando l'app ora con il set di proprietà corretto. – vvladymyrov
Ho un problema simile, potresti risolverlo? se é cosi, come? –
@AlbertoBonsanto la mia risposta ti ha aiutato con il tuo problema? – vvladymyrov