简介

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相关推荐

  1. Flume中的HDFS Sink配置

    Flume中的HDFS Sink配置参数说明 type:hdfs path:hdfs的路径,需要包含文件系统标识,比如:hdfs://namenode/flume/webdata/ filePrefi ...

  2. Flume中的HDFS Sink配置参数说明

    Flume中的HDFS Sink应该是非常常用的,其中的配置参数也比较多,在这里记录备忘一下. channel type:hdfs path:写入hdfs的路径,需要包含文件系统标识,可以使用flum ...

  3. Flume sinks案例HDFS Sink(每 5 秒在 hdfs 上创建一个新的文件夹)

    参考网址:hdfs sinks %t Unix 时间戳,毫秒 %{host} 替换名为"host"的事件 header 的值.支持任意标题名称. %a 星期几的短名,即 Mon, ...

  4. flume 中的 hdfs sink round 和roll

    http://blog.csdn.net/kntao/article/details/49278239 http://flume.apache.org/FlumeUserGuide.html#exec ...

  5. [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)

    一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...

  6. 大数据——Flume组件Source、Channel和Sink具体使用

    Flume组件Source.Channel和Sink使用说明 Flume Sources Avro Source 配置范例 Thrift Source 配置范例 Exec Source 配置范例 JM ...

  7. Flume HDFS Sink配置详解

    Name Default Description channel –   type – 组件的名称,必须为:HDFS hdfs.path – HDFS目录路径,例如:hdfs://namenode/f ...

  8. flume hdfs sink 文件滚动策略

    一般使用hdfs sink都会采用滚动生成文件的方式,hdfs sink滚动生成文件的策略有: 基于时间 基于文件大小 基于hdfs文件副本数(一般要规避这种情况) 基于event数量 基于文件闲置时 ...

  9. Flume之HDFS Sink使用案例

    前言 操作系统:CentOS 7 Java版本:1.8.0_221 Flume版本:1.8.0 HDFS版本:2.7.7 Flume agent配置:Netcat TCP Source.Memory ...

最新文章

  1. 「Python」一文读懂装饰器
  2. TDD 与 CI 在 Python 中的实践
  3. Linux中pthread源码在哪,pthread - 源码下载|系统编程|Linux/Unix编程|源代码 - 源码中国...
  4. Spring+SpringMVC项目搭建
  5. 内存映射MMAP和DMA【转】
  6. 史上最全换档讲解手动档汽车的换挡技巧
  7. 网页弹出框----播放视频
  8. 【摘转留用】35前要考虑的
  9. react生命周期(自己的方式理解)
  10. Linux学习总结(30)——优秀程序员喜欢用Linux操作系统
  11. 【01】SylixOS下LWIP的实现---动态内存管理
  12. Android Binder -- AIDL 原理
  13. 网站SQL注入漏洞检测
  14. PNP三极管的一个暗黑技巧
  15. React启动时报Plugin “react“ was conflicted between “package.json ......错误的解决办法。
  16. Go 语言中三个点的用法
  17. OMAP3530资料
  18. FIR窗函数和IIR模拟、数字滤波器的MATLAB实现
  19. SSM整合(搭建一个Web脚手架)
  20. matlab geoshow 地质,Matlab 绘制三维立体图(以地质异常体为例)

热门文章

  1. Hold the door! mosquitto——使用ESP8266以及网络调试助手测试通信
  2. mini6410利用定时器1把GPE2 和GPE4口输出可调PWM
  3. 禁用计算机的网络连接无线网络连接不上,windows 7 无法连接无线网络,网络连接出现黄色感叹号,但其他设备连接无线网络正常...
  4. TokenGazer评级丨Civic:受市场认可无法掩盖行业痛点 线下布局谋求未来价值体现...
  5. Android手机实现自动挂断功能
  6. 行业前沿 | 攻关·赋能·筑基,打造金融科技创新生态
  7. matplotlib显示彩色图片还是黑白图片
  8. 【蓝桥杯真题】本金利息
  9. C语言中 按位与、或、异或运算
  10. python自定义异常类一般继承于_自定义异常类一般继承自_______或其子类。