2014-10-20 2 views
0

Как решить проблему? Когда я настраиваю сервер flume, у него были следующие квесты.Flume: org.apache.avro.ipc.NettyServer: Неожиданное исключение из нисходящего потока. java.nio.channels.ClosedChannelException

2014-10-20 22:24:01,480 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /ip:57063 => /ip:34001] OPEN 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /ip:57063 => /ip:34001] BOUND: /ip:34001 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /10.182.4.70:57063 => /ip:34001] CONNECTED: /ip:57063 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /ip:57063 :> /ip:34001] DISCONNECTED 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /ip:57063 :> /10.182.4.79:34001] UNBOUND 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: [id: 0x2fe09f1a, /10.182.4.70:57063 :> /10.182.4.79:34001] CLOSED 
2014-10-20 22:24:01,481 INFO org.apache.avro.ipc.NettyServer: Connection to /10.182.4.70:57063 disconnected. 
2014-10-20 22:24:01,481 WARN org.apache.avro.ipc.NettyServer: Unexpected exception from downstream. 
java.nio.channels.ClosedChannelException 
     at org.jboss.netty.channel.socket.nio.AbstractNioWorker.cleanUpWriteBuffer(AbstractNioWorker.java:673) 
     at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:400) 
     at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:120) 
     at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:59) 
     at org.jboss.netty.channel.Channels.write(Channels.java:733) 
     at org.jboss.netty.channel.Channels.write(Channels.java:694) 
     at org.jboss.netty.handler.codec.compression.ZlibEncoder.finishEncode(ZlibEncoder.java:380) 
     at org.jboss.netty.handler.codec.compression.ZlibEncoder.handleDownstream(ZlibEncoder.java:316) 
     at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:55) 
     at org.jboss.netty.channel.Channels.close(Channels.java:821) 

И flume.conf является как belows.

instance_35001.channels.channel1.checkpointDir=editlog/checkpoint 
instance_35001.channels.channel1.dataDirs=editlog/data 
instance_35001.channels.channel1.capacity=200000000 
instance_35001.channels.channel1.transactionCapacity=1000000 
instance_35001.channels.channel1.checkpointInterval=10000 

instance_35001.sources=source1 
instance_35001.sources.source1.type=avro 
instance_35001.sources.source1.bind=0.0.0.0 
instance_35001.sources.source1.port=34001 
instance_35001.sources.source1.compression-type=deflate 
instance_35001.sources.source1.channels=channel1 

instance_35001.sources.source1.interceptors = inter1 
instance_35001.sources.source1.interceptors.inter1.type = host 
instance_35001.sources.source1.interceptors.inter1.hostHeader = servername 

instance_35001.sinks=sink1 

instance_35001.sinks.sink1.type=hdfs 
instance_35001.sinks.sink1.hdfs.path=hdfs://address:5000/user/admin/%{appname}/%Y/%m/%d/ 
instance_35001.sinks.sink1.hdfs.filePrefix=%{appname}-%{hostname}-%{servername}.34001 
instance_35001.sinks.sink1.hdfs.rollInterval=0 
instance_35001.sinks.sink1.hdfs.rollCount=0 
instance_35001.sinks.sink1.hdfs.rollSize=21521880492 

Окружающая среда - CDH5. А раковина - это программа hdfs. Журнал обычно очень нормальный. но раковина очень медленно. Пожалуйста, помогите мне. Благодарю.

ответ

0

Единственное, что я вижу здесь, это то, что размер вашего рулона значительно больше, чем емкость канала. Поэтому перед перекачкой файла все сохраняется в канале, который заполняется после точки и начинает выдавать ошибку.

instance_35001.channels.channel1.capacity=200000000 

instance_35001.sinks.sink1.hdfs.rollSize=21521880492 

Сохраните свой размер роли вокруг размера блока, установленного для HDFS. Кроме того, HDFS-приемник имеет размер пакета по умолчанию 100. Измените его на некоторое большее значение и посмотрите, как он себя ведет.

0

capacity измеряется в # событиях в то время как rollsize в фактических байтах, поэтому трудно правильно соотнести эти два.
Однако вы хотите, чтобы размер вашего ролика был близок к размеру вашего блока hdfs (по умолчанию 128 МБ).

rollsize = 21521880492 -> 21GB