zoukankan      html  css  js  c++  java
  • flume到底会丢数据吗?

    什么时候最容易出问题呢?——flush到HDFS的时候组容易出问题

    Flume的两套事务流程,确保不丢数据(一下针对FileChannel):

    Put事务:可以理解为Source和Channel为一个整体的事务(比如说,source对接kafka,真正到了Channel(Sink? 根据监控来看,应该是sink成功了,消费的延迟性才下来)中,才是真正的消费成功Kafka的数据)

    Take事务:可以理解为Channel和Sink为一个整体的事务 (同上,真正Sink到HDFS上,才是真正的sink文件成功)

    如:flush到HDFS的时候,可能由于网络原因超时(或者集群宕机)导致数据传输失败,这个时候同样地调用doRollback方法来进行回滚,回滚的时候,由于takeList中还有备份数据,所以将takeList中的数据原封不动地还给channel,这时候就完成了事务的回滚。

      但是,如果flush到HDFS的时候,数据flush了一半之后出问题了,这意味着已经有一半的数据已经发送到HDFS上面了,现在出了问题,同样需要调用doRollback方法来进行回滚,回滚并没有“一半”之说,它只会把整个takeList中的数据返回给channel,然后继续进行数据的读写。这样开启下一个事务的时候就容易造成数据重复的问题。

      所以,在某种程度上,flume对数据进行采集传输的时候,它有可能会造成数据的重复,但是其数据不丢失。

    一般报错日志如下:

    13 四月 2021 18:33:32,966 ERROR [hdfs-k8-call-runner-26] (org.apache.flume.sink.hdfs.AbstractHDFSWriter.hflushOrSync:268)  - Error while trying to hflushOrSync!
    13 四月 2021 18:33:32,966 WARN  [hdfs-k8-roll-timer-0] (org.apache.flume.sink.hdfs.BucketWriter.close:364)  - failed to close() HDFSWriter for file (hdfs://mycluster/user/root/flume/xxx/ds=2021-04-13/hs=18//FlumeData.1618308212916.tmp). Exception follows.
    java.io.EOFException: Premature EOF: no length prefix available
            at org.apache.hadoop.hdfs.protocolPB.PBHelper.vintPrefixed(PBHelper.java:2280)
            at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.transfer(DFSOutputStream.java:1020)
            at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.addDatanode2ExistingPipeline(DFSOutputStream.java:990)
            at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.setupPipelineForAppendOrRecovery(DFSOutputStream.java:1131)
            at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.processDatanodeError(DFSOutputStream.java:876)
            at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:402)

    参考:

    https://blog.csdn.net/zhang7761/article/details/110240653

  • 相关阅读:
    Python解释器安装
    有钱就放余额宝的人,这个习惯恐怕要改一改!
    这么详细的存储基础知识,你不看看? 会后悔的!
    超全!华为交换机端口vlan详解~
    华为:鸿蒙绝不是安卓换皮!!!
    VS Code 真的会一统江湖吗?
    用户与安全 -(1)Linux用户及组管理
    运维必看!这个技能薪水28.8万,工资竟然还只是零花钱....
    原来 Linux 日志文件系统是这样工作的~
    干货长文:Linux 文件系统与持久性内存介绍
  • 原文地址:https://www.cnblogs.com/-courage/p/14657884.html
Copyright © 2011-2022 走看看