flume kafka sparkstreaming整合后spark executor dead 及集群报错java.io.IOException: Connection reset by peer

来源:互联网 发布:wifi网络共享软件 编辑:程序博客网 时间:2024/05/24 16:15
简介
            整个项目架构是在CDH中,flume采集数据到kafka,然后sparkstreaming消费(flume1.7版本,kafka0.10版本,spark 2.1版本)。然后在集群中执行的时候,发现日志中会有下面这个错误,但是程序并没有死掉,结果也和本地环境测试的结果一样。同时发现,3个spark executor中,有一个会死掉。
  


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:379)
        at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:221)
        at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:899)
        at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:275)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:119)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:652)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:575)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:489)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:451)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
        at java.lang.Thread.run(Thread.java:745)

原因分析及解决
          分析上面的错误日志,大概信息是连接被对等方关闭。同时联想到被消费的kafka topic 一共有只有2个partition,而3个spark executor中active的刚好是2个,死了一个。初步猜测和分区数有关系,有一个executor分不到数据,所以抛出错误,并且被关闭。于是进行测试,新建一个topic,给了3个partition,再次启动应用消费数据,这次便没有报错信息,同时3个executor都是active了。
阅读全文
0 0
原创粉丝点击