flume组件之hdfs sink
简介
flume的三大组件 source\channel\sink对应着采集位置类型\缓存类型\下沉地类型
本文主要讲解sink中的hdfs sink的常见属性以及常见问题
常用属性
type:指定sink的类型,那肯定是hdfs
hdfs.path:指定采集文件到hdfs后的路径
hdfs.filePrefix:指定在hdfs上生成文件后的前缀名
hdfs.fileSuffix:指定在hdfs上生成文件后的后缀名
hdfs.round:是否打开时间上的舍弃(就是在固定的时间内产生一个文件夹)
hdfs.roundValue:设置时间舍弃的间隔时间,默认为1
hdfs.roundUnit:设置时间舍弃的单位,默认为秒(注意跟上面的两个属性必须一块使用)
hdfs.rollInterval:设置多长时间在hdfs上产生一个新的文件,默认是30秒
hdfs.rollSize:设置文件大小等于多大时候开始滚动产生新的文件,默认是1024个字节
hdfs.rollCount:设置文件收到多少个event后开始滚动新的文件,默认是10个
举例
采集服务器/root/use.txt文件到hdfs的/flume/test下
操作:
vim exec_hdfs.conf //编辑一个新的文件在flume的conf路径下
//设置组件名
a1.sources = r1
a1.channels = c1
a1.sinks = k1//设置source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/user.txt//设置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000//设置sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/test/%y-%m-%d/%H%M/
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute//连接
a1.sinks.k1.channel = c1
a1.sources.r1.channels = c1
常见问题
假设我们只设置了滚动条件按文件的大小滚动,只有当文件大小等于128M的时候才开始滚动新文件,那么我们在配置hdfs sink的滚动条件时候如下:
hdfs.rollInterval = 0
hdfs.rollSize = 128*1024*1024
hdfs.rollCount = 0
这个时候我们会遇到一些问题
问题1:如果文件大小一直到达不了128M的时候,文件在hdfs上会一直以临时文件的形式存在
解决方案: ①停掉flume(虽然可以解决,但是一定不要用)
②使用hdfs sink的idleTimeOut属性(例如hdfs.idleTimeOut = 30,单位为秒),监听文件的状态,如果在设置的时间内没有收到新的数据,将会把临时文件修改为最终文件
切记,这个时间没有固定的值,但是需要大于数据采集的频率,假如数据10秒钟才发送一条,那么你设置为5秒钟,那么会造成一直产生新文件
问题2:由于hdfs的副本机制,在向hdfs上上传文件的时候 ,在最后一个副本接收完成后才会认为一条数据刚传递完(不懂的同学去了解一下hdfs的上传文件的流程),这个过程是需要一定的时间的,假如第一台datanode刚好已经接收了128M的文件,但是第三台datanode还没有接收完毕,这个时候hdfs sink还没有接收到成功反馈,会继续发送,最后造成文件的大小大于128M
解决方案:让flume在检测是否上传成功的时候,只检测一个副本接收成功即可
flume组件之hdfs sink相关推荐
- Flume中的HDFS Sink配置
Flume中的HDFS Sink配置参数说明 type:hdfs path:hdfs的路径,需要包含文件系统标识,比如:hdfs://namenode/flume/webdata/ filePrefi ...
- Flume中的HDFS Sink配置参数说明
Flume中的HDFS Sink应该是非常常用的,其中的配置参数也比较多,在这里记录备忘一下. channel type:hdfs path:写入hdfs的路径,需要包含文件系统标识,可以使用flum ...
- Flume sinks案例HDFS Sink(每 5 秒在 hdfs 上创建一个新的文件夹)
参考网址:hdfs sinks %t Unix 时间戳,毫秒 %{host} 替换名为"host"的事件 header 的值.支持任意标题名称. %a 星期几的短名,即 Mon, ...
- flume 中的 hdfs sink round 和roll
http://blog.csdn.net/kntao/article/details/49278239 http://flume.apache.org/FlumeUserGuide.html#exec ...
- [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)
一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...
- 大数据——Flume组件Source、Channel和Sink具体使用
Flume组件Source.Channel和Sink使用说明 Flume Sources Avro Source 配置范例 Thrift Source 配置范例 Exec Source 配置范例 JM ...
- Flume HDFS Sink配置详解
Name Default Description channel – type – 组件的名称,必须为:HDFS hdfs.path – HDFS目录路径,例如:hdfs://namenode/f ...
- flume hdfs sink 文件滚动策略
一般使用hdfs sink都会采用滚动生成文件的方式,hdfs sink滚动生成文件的策略有: 基于时间 基于文件大小 基于hdfs文件副本数(一般要规避这种情况) 基于event数量 基于文件闲置时 ...
- Flume之HDFS Sink使用案例
前言 操作系统:CentOS 7 Java版本:1.8.0_221 Flume版本:1.8.0 HDFS版本:2.7.7 Flume agent配置:Netcat TCP Source.Memory ...
最新文章
- [译稿]同步复制提议 2010-09
- 在大厂干了 5 年产品后,如今她裸辞回家开店去了
- ASP.NET MVC Core的TagHelper (高级特性)
- Flume实操(三)【实时读取目录文件到HDFS案例】
- php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
- c# 服务器性能监控,C#服务器性能监控之WMI的代码示例详解
- 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
- 极简潮流!最新海报欣赏给你设计灵感
- 数据绑定--Repeater, DataList, or GridView?
- java中==与equal()的区别
- 计算机考苏州公务员考试,苏州公务员考试难度
- 信息安全技术(黑客攻防) 入门
- Nginx的HTTP健康检测
- [html] 你有使用过blockquote标签吗?说说它的用途有哪些?
- 扒谱大杂烩-都是前辈写的
- ioi2020集训队作业_IOI2020 集训队作业 Part 3
- android+4.4+打印功能,安卓android4.4新增打印支付功能
- Python_爬虫_中文乱码
- 《Java8实战》第5章 使用流
- Android开发本地及网络Mp3音乐播放器(五)实现专辑封面图片