• flume file channel 异常解决


    1. 错误提示

      

    2016-04-21 05:40:51,393 (SinkRunner-PollingRunner-DefaultSinkProcessor) [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:160)] Unable to deliver event. Exception follows.
    java.lang.IllegalStateException: Channel closed [channel=channel1]. Due to java.io.EOFException: null
            at org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:329)
            at org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:122)
            at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:376)
            at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
            at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
            at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.EOFException
            at java.io.RandomAccessFile.readInt(RandomAccessFile.java:827)
            at java.io.RandomAccessFile.readLong(RandomAccessFile.java:860)
            at org.apache.flume.channel.file.EventQueueBackingStoreFactory.get(EventQueueBackingStoreFactory.java:79)
            at org.apache.flume.channel.file.Log.replay(Log.java:417)
            at org.apache.flume.channel.file.FileChannel.start(FileChannel.java:279)
            at org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:251)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            ... 1 more
    2016-04-21 05:40:51,972 (pool-4-thread-1) [ERROR - org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:256)] FATAL: Spool Directory source source1: { spoolDir: /home/hadoop_admin/movielog }: Uncaught exception in SpoolDirectorySource thread. Restart or reconfigure Flume to continue processing.
    java.lang.IllegalStateException: Channel closed [channel=channel1]. Due to java.io.EOFException: null
            at org.apache.flume.channel.file.FileChannel.createTransaction(FileChannel.java:329)
            at org.apache.flume.channel.BasicChannelSemantics.getTransaction(BasicChannelSemantics.java:122)
            at org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:181)
            at org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:235)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
            at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.EOFException
            at java.io.RandomAccessFile.readInt(RandomAccessFile.java:827)
            at java.io.RandomAccessFile.readLong(RandomAccessFile.java:860)
            at org.apache.flume.channel.file.EventQueueBackingStoreFactory.get(EventQueueBackingStoreFactory.java:79)
            at org.apache.flume.channel.file.Log.replay(Log.java:417)
            at org.apache.flume.channel.file.FileChannel.start(FileChannel.java:279)
            at org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:251)
            ... 7 more

     配置文件:

      

    agent1.sources = source1
    agent1.channels = channel1
    agent1.sinks = sink1
    
    
    # Each channel's type is defined.
    agent1.channels.channel1.type = file
    agent1.channels.channel1.checkpointDir = /home/hadoop_admin/flumeTemp/fchannel/spool/checkpoint
    agent1.channels.channel1.dataDirs = /home/hadoop_admin/flumeTemp/fchannel/spool/data
    agent1.channels.channel1.capacity = 200000000
    agent1.channels.channel1.keep-alive = 30
    agent1.channels.channel1.write-timeout = 30
    agent1.channels.channel1.checkpoint-timeout = 600
    
    # For each one of the sources, the type is defined
    agent1.sources.source1.type = spooldir
    agent1.sources.source1.inputCharset = GBK
    agent1.sources.source1.spoolDir =/home/hadoop_admin/movielog
    agent1.sources.source1.fileHeader = true
    agent1.sources.source1.deletePolicy = immediate
    agent1.sources.source1.batchSize = 1000
    agent1.sources.source1.channels = channel1
    
    # Each sink's type must be defined
    agent1.sinks.sink1.type = hdfs
    agent1.sinks.sink1.channel = channel1
    agent1.sinks.sink1.hdfs.path = hdfs://master:9000/flumeTest
    agent1.sinks.sink1.hdfs.filePrefix = master-
    agent1.sinks.sink1.hdfs.writeFormat = Text
    agent1.sinks.sink1.hdfs.fileType = DataStream
    agent1.sinks.sink1.hdfs.rollInterval = 0
    agent1.sinks.sink1.hdfs.idleTimeout = 0
    agent1.sinks.sink1.hdfs.rollCount = 0
    agent1.sinks.sink1.hdfs.rollSize = 102400
    agent1.sinks.sink1.hdfs.batchSize = 1000
    agent1.sinks.sink1.hdfs.callTimeout = 30000

    2. 解决方法

      链接: http://serverfault.com/questions/690588/flume-error-log-while-using-filechannel

      只要把配置文件中的关于channel配置checkpointDir和dataDir目录清空就可以

  • 相关阅读:
    Java之JDBC操作
    Ubuntu17安装MySql5.7
    应用解决告诉你什么时候该用ajax
    jquery插件大全
    面试题:谈谈如何优化MYSQL数据库查询
    1亿条数据在PHP中实现Mysql数据库分表100张
    DEDECMS教程:首页实现分页的两种方法
    Dedecms当前位置{dede:field name='position'/}修改,去掉>方法
    mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?
    COOKIE和SESSION关系和区别等
  • 原文地址:https://www.cnblogs.com/linux-wangkun/p/5435826.html
Copyright © 2020-2023  润新知