web-dev-qa-db-fra.com

Comment réparer la réinitialisation de la connexion par le message d'homologue d'Apache-spark?

Je reçois très fréquemment l'exception suivante et je me demande pourquoi cela se produit? Après des recherches, j'ai trouvé que je pouvais faire .set("spark.submit.deployMode", "nio"); mais cela n'a pas fonctionné non plus et j'utilise spark 2.0.0

WARN TransportChannelHandler: Exception in connection from /172.31.3.245:46014
    Java.io.IOException: Connection reset by peer
    at Sun.nio.ch.FileDispatcherImpl.read0(Native Method)
    at Sun.nio.ch.SocketDispatcher.read(SocketDispatcher.Java:39)
    at Sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.Java:223)
    at Sun.nio.ch.IOUtil.read(IOUtil.Java:192)
    at Sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.Java:380)
    at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.Java:221)
    at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.Java:898)
    at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.Java:242)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.Java:119)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.Java:511)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.Java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.Java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.Java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.Java:112)
14
user1870400

J'obtenais la même erreur même si j'essayais beaucoup de choses. Mon travail était bloqué en lançant cette erreur après avoir couru très longtemps. J'ai essayé quelques solutions qui m'ont aidé à résoudre. Bien que j'obtienne toujours la même erreur au moins, mon travail fonctionne bien.

  1. une des raisons pourrait être que les exécuteurs testamentaires se tuent en pensant qu'ils ont perdu la connexion avec le maître. J'ai ajouté les configurations ci-dessous dans le fichier spark-defaults.conf.

    spark.network.timeout 10000000 spark.executor.heartbeatInterval 10000000 fondamentalement, j'ai augmenté le délai d'expiration du réseau et l'intervalle de pulsation

  2. L'étape particulière qui se bloquait, je viens de mettre en cache la trame de données qui est utilisée pour le traitement (à l'étape qui se bloquait)

Remarque: - Ce sont des solutions de contournement, je vois toujours la même erreur dans les journaux d'erreurs mais mon travail n'est pas terminé.

8
braj