我已将文件设置为文件源/接收器,就像测试基本的水槽功能一样。
我目前正在使用“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 -...
答案 0 :(得分:2)
过去我的文件频道存在问题,而且它们通常归结为两个问题:
1)如果您在同一个盒子上运行多个代理,请确保将它们配置为具有单独的dataDirs
和checkpointDir
。
2)在Linux机器上,检查您的tmpfs是否接近其容量。如果它满了,水槽会抱怨。尝试停止水槽代理,卸载tmpfs,放大,重新安装并重新启动代理。