简介

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. [译稿]同步复制提议 2010-09
  2. 在大厂干了 5 年产品后,如今她裸辞回家开店去了
  3. ASP.NET MVC Core的TagHelper (高级特性)
  4. Flume实操(三)【实时读取目录文件到HDFS案例】
  5. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
  6. c# 服务器性能监控,C#服务器性能监控之WMI的代码示例详解
  7. 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
  8. 极简潮流!最新海报欣赏给你设计灵感
  9. 数据绑定--Repeater, DataList, or GridView?
  10. java中==与equal()的区别
  11. 计算机考苏州公务员考试,苏州公务员考试难度
  12. 信息安全技术(黑客攻防) 入门
  13. Nginx的HTTP健康检测
  14. [html] 你有使用过blockquote标签吗?说说它的用途有哪些?
  15. 扒谱大杂烩-都是前辈写的
  16. ioi2020集训队作业_IOI2020 集训队作业 Part 3
  17. android+4.4+打印功能,安卓android4.4新增打印支付功能
  18. Python_爬虫_中文乱码
  19. 《Java8实战》第5章 使用流
  20. Android开发本地及网络Mp3音乐播放器(五)实现专辑封面图片

热门文章

  1. 我们去工作到底为了什么?
  2. 领导的决策力提升:抓大放小而果断决策
  3. 玩转KubeEdge
  4. lenovo thinkpad t460s opensuse linux 保护电池设置电池充电阀值...
  5. pyinstall安装错误解决方法
  6. php 二维数组分组,php 二维数组的分组排序实现代码
  7. Python爬取m3u8格式的视频
  8. Matlab向量与矩阵相乘
  9. linux下查询当前所有连接的ip
  10. Ubuntu系统中Webot机器人配置