【问题标题】:Flume NullPointerExceptions on checkpoint检查点上的 Flume NullPointerExceptions
【发布时间】: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-...

【问题讨论】:

标签: stream nullpointerexception flume


【解决方案1】:

过去我遇到过文件通道问题,通常归结为两个问题:

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

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

【讨论】:

  • 3) 配置文件中的错误输入
  • 4) 如果 dataDirs 和 checkpointDir 碰巧不同步,您也可以考虑清除它们。但请注意,如果您的数据源无法重新提交,这可能会导致数据丢失。
猜你喜欢
  • 2019-08-22
  • 1970-01-01
  • 2020-12-12
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
相关资源
最近更新 更多