一、配置详解

typeSink类型为hdfshdfs.pathHDFS存储路径,支持按照时间分区集群的NameNode名字:单节点:hdfs://主机名(ip):9000/%Y/%m/%d/%HHA集群:hdfs://nameservice(高可用NameNode服务名称)/%Y/%m/%d/%Hhdfs.filePrefix默认值:FlumeDataEvent输出到HDFS的文件名前缀hdfs.fileSuffixEvent输出到HDFS的文件名后缀hdfs.inUsePrefix临时文件的文件名前缀Flume首先将Event输出到HDFS指定目录的临时文件中,再根据相关规则重命名为目标文件hdfs.inUseSuffix默认值:.tmp临时文件名后缀hdfs.rollInterval默认值:30间隔多久将临时文件滚动成最终目标文件,单位:秒如果设置为0,则表示不根据时间滚动文件注:滚动(roll)指的是,HDFS Sink将临时文件重命名成最终目标文件,并新打开一个临时文件来写数据hdfs.rollSize默认值:1024当临时文件达到该大小时,滚动成目标文件,单位:byte该值设置为0,则表示文件不根据文件大小滚动生成hdfs.rollCount默认值:10当Event数据达到该数量时,将临时文件滚动生成目标文件该值设置为0,则表示文件不根据Event数滚动生成hdfs.idleTimeout默认值:0当目前被打开的临时文件在该参数指定的时间内,没有任何数据写入,则将该临时文件关闭并重命名成目标文件,单位:秒该值设置为0,则表示禁用此功能,不自动关闭临时文件hdfs.round默认值:false用于HDFS文件按照时间分区,时间戳向下取整hdfs.roundValue默认值:1当round设置为true,配合roundUnit时间单位一起使用,例如roundUnit值为minute该值设置为1则表示一分钟之内的数据写到一个文件中,相当于每一分钟生成一个文件hdfs.roundUnit默认值:second按时间分区使用的时间单位,可以选择second(秒)、minute(分钟)、hour(小时)三种粒度的时间单位示例:a1.sinks.k1.hdfs.path = hdfs://nameservice/flume/events/%y/%m/%d/%H/%Ma1.sinks.k1.hdfs.round = truea1.sinks.k1.hdfs.roundValue = 10a1.sinks.k1.hdfs.roundUnit = minute当时间为2022-04-05 17:38:59时候,hdfs.path依然会被解析为:/flume/events/2022/04/05/17/30因为设置的是舍弃10分钟内的时间,因此,该目录每10分钟新生成一个hdfs.batchSize默认值:100每个批次刷写到HDFS的Event数量hdfs.codeC默认值:不采用压缩文件压缩格式,目前支持的压缩格式有gzip、bzip2、lzo、lzop、snappyhdfs.fileType默认值:SequenceFile文件类型,包括:SequenceFile、DataStream、CompressedStream该值设置为DataStream,则输出的文件不会进行压缩,不需要设置hdfs.codeC指定压缩格式。该值设置为CompressedStream,则对输出的文件进行压缩,需要设置hdfs.codeC指定压缩格式hdfs.maxOpenFiles默认值:5000最大允许打开的HDFS文件数,当打开的文件数达到该值,则最早打开的文件将会被关闭hdfs.minBlockReplicas默认值:HDFS副本数写入HDFS文件块的最小副本数该参数会影响文件的滚动配置,一般将该参数配置成1,才可以按照配置正确滚动文件hdfs.writeFormat默认值:Writable文件的格式,目前可以选择Text或者Writable两种格式hdfs.callTimeout默认值:10000操作HDFS文件的超时时间,如果需要写入HDFS文件的Event数比较大或者发生了打开、写入、刷新、关闭文件超时的问题,可以根据实际情况适当增大超时时间,单位:毫秒hdfs.threadsPoolSize默认值:10每个HDFS Sink执行HDFS IO操作打开的线程数hdfs.rollTimerPoolSize默认值:1HDFS Sink根据时间滚动生成文件时启动的线程数hdfs.timeZone默认值:Local Time本地时间写入HDFS文件使用的时区hdfs.useLocalTimeStamp默认值:false是否使用本地时间替换Event头信息中的时间戳hdfs.closeTries默认值:0在发起关闭尝试后,尝试重命名临时文件的次数如果设置为1,表示重命名一次失败后不再继续尝试重命名操作,此时待处理的文件将处于打开状态,扩展名为.tmp如果设置为0,表示尝试重命名操作次数不受限制,直到文件最终被重命名成功如果close调用失败,文件可能仍然会处于打开状态,但是文件中的数据将保持完整,文件会在Flume重启后关闭hdfs.retryInterval默认值:180 秒连续尝试关闭文件的时间间隔。如果设置为0或小于0的数,第一次尝试关闭文件失败后将不会继续尝试关闭文件,文件将保持打开状态或者以“.tmp”扩展名结尾的临时文件如果设置为0,表示不尝试,相当于于将hdfs.closeTries设置成1serializer默认值:TEXT序列化方式,可选值有TEXT、avro_event或者实现EventSerializer.Builder接口的类kerberosPrincipalHDFS安全认证kerberos配置kerberosKeytabHDFS安全认证kerberos配置proxyUser代理用户

二、简单模板

agent_name.sources = source_name
agent_name.channels = channel_name
agent_name.sinks = sink_name# source
agent_name.sources.source_name.type = avro
XXX
XXX# channel
agent_name.channels.channel_name.type = file
XXX
XXX# sink
agent_name.sinks.sink_name.type = hdfs
agent_name.sinks.sink_name.hdfs.path = hdfs://${HA_NameNode_Name}/flume_data/yr=%Y/mon=%m/day=%d/hr=%H
agent_name.sinks.sink_name.hdfs.writeFormat = Text
agent_name.sinks.sink_name.hdfs.fileSuffix = _${hdfsFileSuffix}.log
agent_name.sinks.sink_name.hdfs.fileType = DataStream
agent_name.sinks.sink_name.hdfs.filePrefix = %Y%m%d%H%M
agent_name.sinks.sink_name.hdfs.useLocalTimeStamp = true
agent_name.sinks.sink_name.hdfs.rollInterval = 0
agent_name.sinks.sink_name.hdfs.rollSize = 125829120
agent_name.sinks.sink_name.hdfs.rollCount = 0
agent_name.sinks.sink_name.hdfs.minBlockReplicas = 1
agent_name.sinks.sink_name.hdfs.round = true
agent_name.sinks.sink_name.hdfs.roundValue = 1
agent_name.sinks.sink_name.hdfs.roundUnit = hour
agent_name.sinks.sink_name.hdfs.idleTimeout = 600# source | channel | sink 关联
agent_name.sources.source_name.channels = channel_name
agent_name.sinks.sink_name.channel = channel_name

三、注意事项及异常

  1. idleTimeout 的设置

    • 设置为0,如果flume程序突然宕机,就会导致 hdfs上的 .tmp后缀的文件无法会更改为完成的文件,造成一种假象,以为该文件正在写入。当程序重启时,就会有两个 .tmp文件。

    • 如果idle Timeout有设置值m,当在m秒内没有数据写入,就会把tmp文件改为已完成。后面再有数据过来的时候重新生成.tmp文件。

    • 建议:最好设置一个比较大的值,防止小文件产生,若不设置,宕机的话会有tmp文件

    • 为了能快速查看到数据,可以设置该值较小,没数据进行就滚动,因为临时文件是不能被Hive查询到,但是这样会产生小文件

  2. round 与 rollInterval 理解有误

    • round、roundValue、roundUnit是基于路径path去滚动生成文件夹的,针对文件夹而言

    • rollInterval、rollSize、rollCount是基于文件的条件限制滚动生成文件的,基于文件而言的

  3. 异常:Error while trying to hflushOrSync

    • 问题排查:通过查看不同Flume的Agent日志发现,同名的文件被不同的Flume Agent打开,在文件第二次打开后,先前打开的Agent拥有的token就失效了,因此无法关闭它,就会不断的报错:Error while trying to hflushOrSync!
    • 查看之前的flume配置文件发现,每一个Flume-Agent配置的hdfsSink是完全一样的,每个Flume-Agent读取的source相同,有很大概率会出现多个Fume-Agent同时写同名文件,导致部分Flume-Agent无法继续。
    • 解决方案:不同Flume设置不同的文件后缀名

Flume之HDFS Sink 的参数解析及异常处理相关推荐

  1. Flume之HDFS Sink使用案例

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

  2. Flume中的HDFS Sink配置

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

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

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

  4. flume中hdfs sinks参数配置详解

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

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

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

  6. Flume-ng HDFS sink原理解析

    HDFS sink主要处理过程在process方法: //循环batchSize次或者Channel为空 for(txnEventCount = 0; txnEventCount < batch ...

  7. flume hdfs sink 文件滚动策略

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

  8. flume组件之hdfs sink

    简介 flume的三大组件 source\channel\sink对应着采集位置类型\缓存类型\下沉地类型 本文主要讲解sink中的hdfs sink的常见属性以及常见问题 常用属性 type:指定s ...

  9. Flume HDFS Sink配置详解

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

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

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

最新文章

  1. creator 跳跃弧线_(转)CocosCreator零基础制作游戏《极限跳跃》四、添加游戏主场景控制脚本...
  2. 电脑中毒的表现有哪些?电脑中毒了怎么办?
  3. CML更新 | 新增百度小程序、支付宝小程序
  4. 揭开不一样的世界,这5部纪录片绝对不能错过!
  5. C#使用Sockets操作FTP【转载】
  6. 【BZOJ2594】水管局长加强版,LCT+并查集+二分查找位置
  7. MFC---CComboBox控件添加字符串函数InsertString
  8. ffmpeg 推流同时录像命令_使用FFmpeg将rtsp流摄像头视频转码为rtmp播放
  9. CardView介绍
  10. SQLyog学习笔记04---数据库表操作CRUD基本指令
  11. 常见的数据分析工具有哪些?
  12. 微信小程序-灰度发布
  13. 欧洲哲学发展趋势与中国哲学的机遇
  14. js实现kmp算法_基于KMP算法JavaScript的实现方法分析
  15. java获取所有进程_Java 获取系统的进程列表
  16. 200行Html5+CSS3+JS代码实现动态圣诞树
  17. 个人账号被Facebook封号怎么办
  18. 67.输入若干行文本,每行以回车结束,以 ctrl+z 作为结束符,统计其行数
  19. vue相关的面试题应该怎么答
  20. 基于Netty的WebSocket开发网页版聊天室

热门文章

  1. docker网络问题
  2. OpenGL学习书籍推荐
  3. 计算机网络显示红X无法连接,电脑无线网络连接不上,出现了红x❌
  4. ipad如何与计算机连接网络连接不上,苹果平板ipad的无法连接无线网络WiFi如何解决...
  5. 笔记本连接显示器后没有声音_外接显示器后没声音怎么回事
  6. 从定时任务-到任务调度系统xxl-job
  7. CRM八面体:客户关系管理成功案例2 Yorkshire Water
  8. arcgis10之获取面要素四至点坐标
  9. 1483选票统计(一)(结构体专题)
  10. 陶哲轩实分析 3.2 节 习题试解