检查点上的Flume NullPointerExceptions

时间:2013-05-11 22:07:38

标签: stream nullpointerexception flume

我已将文件设置为文件源/接收器,就像测试基本的水槽功能一样。

我目前正在使用“exec”源,命令是“tail -F mytmpfile”。

在我的剧本中,我不断回应“.....”>> mytmpfile,以便tail命令构成一个流。

但是,我已经开始在水槽日志中看到以下异常:

  

java.lang中。 IllegalStateException:通道已关闭[channel = c1]。由于   java.lang.NullPointerException:null       在org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:353)       at org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:122)       在org.apache.flume.sink.RollingFileSink.process(RollingFileSink.java:183)       在org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)       在org.apache.flume.SinkRunner $ PollingRunner.run(SinkRunner.java:147)       at java.lang.Thread.run(Thread.java:662)引起:java.lang.NullPointerException       在org.apache.flume.channel.file.Log.writeCheckpoint(Log.java:895)       在org.apache.flume.channel.file.Log.replay(Log.java:406)       在org.apache.flume.channel.file.FileChannel.start(FileChannel.java:303)       在org.apache.flume.lifecycle.LifecycleSupervisor $ MonitorRunnable.run(LifecycleSupervisor.java:236)       at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:439)       at java.util.concurrent.FutureTask $ Sync.innerRunAndReset(FutureTask.java:317)       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)       at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 101(ScheduledThreadPoolExecutor.java:98)       at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)       at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)       at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:895)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:918)       ......还有1个

有关此NullPointerException来自何处的任何想法?从扫描代码看起来可能与丢失的文件夹或目录有关。但我无法在git hub分支上找到确切的行。

这是使用apache-flume-1.3.1.23 -...

1 个答案:

答案 0 :(得分:2)

过去我的文件频道存在问题,而且它们通常归结为两个问题:

1)如果您在同一个盒子上运行多个代理,请确保将它们配置为具有单独的dataDirscheckpointDir

2)在Linux机器上,检查您的tmpfs是否接近其容量。如果它满了,水槽会抱怨。尝试停止水槽代理,卸载tmpfs,放大,重新安装并重新启动代理。