【发布时间】:2023-03-09 00:41:01
【问题描述】:
我已经设置了一个文件到文件 source/sink ,就像对基本水槽功能的测试一样。
我目前正在使用“exec”源,命令是“tail -F mytmpfile”。
在我的脚本中,我不断地回显 "....." >> mytmpfile ,这样尾部命令就构成了一个流。
但是,我开始在水槽日志中看到以下异常:
java.lang. IllegalStateException:通道关闭 [channel=c1]。由于 java.lang.NullPointerException:空 在 org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:353) 在 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) 在 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) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) 在 java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) ... 1 更多
关于这个 NullPointerException 来自哪里的任何想法?从扫描代码中可以看出,它可能与丢失的文件夹或目录有关。但我在 git hub 分支上找不到确切的行。
这是使用 apache-flume-1.3.1.23-...
【问题讨论】:
-
似乎错误来自“文件”通道(flume.apache.org/FlumeUserGuide.html#file-channel),而不是“执行”源。它的代码在这里:git-wip-us.apache.org/repos/…。为什么不使用标准的“内存”通道(flume.apache.org/FlumeUserGuide.html#memory-channel)?你能展示你的配置吗?
-
上面的源码帮助我意识到错误出在我的配置文件中,需要正确引用通道
-
我已经通过远程调试解决了很多此类问题-尝试将
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=xxxx,suspend=n添加到flume-env-sh中的JVM标志。
标签: stream nullpointerexception flume