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 ...
最新文章
- 「Python」一文读懂装饰器
- TDD 与 CI 在 Python 中的实践
- Linux中pthread源码在哪,pthread - 源码下载|系统编程|Linux/Unix编程|源代码 - 源码中国...
- Spring+SpringMVC项目搭建
- 内存映射MMAP和DMA【转】
- 史上最全换档讲解手动档汽车的换挡技巧
- 网页弹出框----播放视频
- 【摘转留用】35前要考虑的
- react生命周期(自己的方式理解)
- Linux学习总结(30)——优秀程序员喜欢用Linux操作系统
- 【01】SylixOS下LWIP的实现---动态内存管理
- Android Binder -- AIDL 原理
- 网站SQL注入漏洞检测
- PNP三极管的一个暗黑技巧
- React启动时报Plugin “react“ was conflicted between “package.json ......错误的解决办法。
- Go 语言中三个点的用法
- OMAP3530资料
- FIR窗函数和IIR模拟、数字滤波器的MATLAB实现
- SSM整合(搭建一个Web脚手架)
- matlab geoshow 地质,Matlab 绘制三维立体图(以地质异常体为例)
热门文章
- Hold the door! mosquitto——使用ESP8266以及网络调试助手测试通信
- mini6410利用定时器1把GPE2 和GPE4口输出可调PWM
- 禁用计算机的网络连接无线网络连接不上,windows 7 无法连接无线网络,网络连接出现黄色感叹号,但其他设备连接无线网络正常...
- TokenGazer评级丨Civic:受市场认可无法掩盖行业痛点 线下布局谋求未来价值体现...
- Android手机实现自动挂断功能
- 行业前沿 | 攻关·赋能·筑基,打造金融科技创新生态
- matplotlib显示彩色图片还是黑白图片
- 【蓝桥杯真题】本金利息
- C语言中 按位与、或、异或运算
- python自定义异常类一般继承于_自定义异常类一般继承自_______或其子类。