Flume-ng HDFS Sink “丢数据”

简介:

线上对Flume流入HDFS配置path:p1,每分钟切一个文件,定期从p1move完成的(rename)文件到外部表进行计算分析,发现有“丢数据”现象:即在p1下经常看到几GB.tmp文件,查看Flume日志发现当出现CallTimeout Exception :HDFS IO ERROR后,sink一直向.tmp写入,而不进行rename.

Flume HDFS Sink正常写入流程见:http://boylook.blog.51cto.com/7934327/1298627

默认情况下,当BucketWriter flush超过calltimeoutdefault:10s)时,会报出异常,这时可能HDFS或者网络异常,如果恰好到达了rollintervalbucketWriter执行close->flush也会报出同样的异常:Unexpectederror,没有执行到renameBucket,此后该bucketWriter保持打开状态(因为intervalroll只在bucketWriter打开时进行一次调度),一直进行数据写入不再roll直到1.创建写的路径2.Flume重启 3.打开到达maxOpenFiles,这些是不可接受的.

查看源码发现在每次flush时会判断是否使用idleTime,如果使用则会调度一个idleHandler thread进行清理:1.关闭bucketWriter 2.LRUList中摘除掉bucketWriter,而默认竟然是不启用的=.=,后设置idleTime稍大于roll interval后,不再出现“数据丢失”

BTW,对于HDFS SINKcallTimeoutidleTimeout的默认值真是太傻了...



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1308188,如需转载请自行联系原作者


相关文章
|
3月前
|
存储 分布式计算 Java
HDFS的数据读取流程是怎样的?请描述数据读取的过程。
HDFS的数据读取流程是怎样的?请描述数据读取的过程。
27 0
|
3月前
|
Java API
HDFS的数据写入流程是怎样的?请描述数据写入的过程。
HDFS的数据写入流程是怎样的?请描述数据写入的过程。
20 0
|
4月前
|
存储 Linux
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
[hadoop3.x]HDFS之银行海量转账数据分层案例(八)
110 1
|
9月前
|
消息中间件 存储 分布式计算
Flume实现Kafka数据持久化存储到HDFS
Flume实现Kafka数据持久化存储到HDFS
416 0
|
9月前
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的核心机制理解的数据读/写原理
在 Hdfs 中,数据的读写原理是基于块的分布式存储。
52 0
|
5月前
|
算法 数据中心
HDFS数据的读写流程
HDFS数据的读写流程
42 0
|
6月前
|
SQL 分布式计算 大数据
大数据问题排查系列 - 因HIVE 中元数据与HDFS中实际的数据不一致引起的问题的修复
大数据问题排查系列 - 因HIVE 中元数据与HDFS中实际的数据不一致引起的问题的修复
|
7月前
|
存储 分布式计算 负载均衡
HDFS服役新数据节点和退役旧节点步骤
HDFS服役新数据节点和退役旧节点步骤
181 1
|
7月前
|
缓存 分布式计算 负载均衡
HDFS 的写数据流程分析
HDFS的写数据流程是一道比较常见的面试题,同时梳理了写流程也可以帮助我们更加深入一点的了解 HDFS 的主要原理和各个组件的交互过程
|
8月前
|
JSON 缓存 关系型数据库
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)
5、DataX(DataX简介、DataX架构原理、DataX部署、使用、同步MySQL数据到HDFS、同步HDFS数据到MySQL)(二)