• 一百九十一、Flume——Flume配置文件各参数含义(持续完善中)


    一、目的

    在实际项目的开发过程中,不同Kafka主题的数据规模、数据频率,需要配置不同的Flume参数,而这一切的调试、配置工作,都要建立在对Flume配置文件各参数含义的基础上

    二、Flume各参数及其含义

    (一)filePrefix

    1、含义:写入hdfs的文件名前缀,可以使用flume提供的日期及%{host}表达式

    2、默认值为FlumeData

    (二)fileSuffix

    1、含义:写入hdfs的文件名后缀,比如.lzo .log .txt

    (三)inUsePrefix(一般不用管)

    1、含义:临时文件的文件名前缀,hdfs sink会先往目标目录中写临时文件,再根据相关规则重命名成最终目标文件

    (四)inUseSuffix(一般不用管)

    1、含义:临时文件的文件名后缀

    2、默认值:.tmp

    (五)rollInterval

    1、含义:hdfs sink间隔多长将临时文件滚动成最终目标文件,单位:秒

    2、默认值:30s

    3、如果设置成0,则表示不根据时间来滚动文件

    4、注意:滚动(roll)指的是,hdfs sink将临时文件重命名成最终目标文件,并新打开一个临时文件来写入数据

    (六)rollSize

    1、含义:当临时文件达到该大小(单位:bytes)时,滚动成目标文件

    2、默认值:1024byte

    3、 如果设置成0,则表示不根据临时文件大小来滚动文件

    (七)rollCount

    1、含义:当events数据达到该数量时候,将临时文件滚动成目标文件

    2、默认值:10

    3、如果设置成0,则表示不根据events数据来滚动文件

    (八)idleTimeout

    1、含义:当目前被打开的临时文件在该参数指定的时间(秒)内,没有任何数据写入,则将该临时文件关闭并重命名成目标文件

    2、默认值:0

    (九)batchSize

    1、含义:每个批次刷新到HDFS上的events数量

    2、默认值:100

    (十)codeC

    1、含义:文件压缩格式,包括:gzip, bzip2, lzo, lzop, snappy

    (十一)fileType

    1、含义:文件格式,包括:SequenceFile, DataStream,CompressedStream;默认值:SequenceFile

    2、当使用DataStream时候,文件不会被压缩,不需要设置hdfs.codeC

    3、当使用CompressedStream时候,必须设置一个正确的hdfs.codeC值

    (十二)maxOpenFiles

    1、含义:最大允许打开的HDFS文件数,当打开的文件数达到该值,最早打开的文件将会被关闭

    2、默认值:5000

    (十三)minBlockReplicas

    1、含义:写入HDFS文件块的最小副本数

    2、默认值:HDFS副本数(一般不修改,HDFS副本数默认为3)

    3、 该参数会影响文件的滚动配置,一般将该参数配置成1,才可以按照配置正确滚动文件

    (十四)writeFormat

    1、含义:写sequence文件的格式

    2、包含:Text, Writable(默认)

    (十五)callTimeout

    1、含义:执行HDFS操作的超时时间(单位:毫秒)

    2、默认值:10000 (10s)

    (十六)threadsPoolSize

    1、含义:hdfs sink启动的操作HDFS的线程数

    2、默认值:10

    (十七)rollTimerPoolSize

    1、含义:hdfs sink启动的根据时间滚动文件的线程数

    2、默认值:1

    (十八)kerberosPrincipal

    1、含义:HDFS安全认证kerberos配置

    (十九)kerberosKeytab

    1、含义:HDFS安全认证kerberos配置

    (二十)proxyUser

    1、含义:代理用户

    (二十一)channel

    1、含义:管道

    2、一个sink只能有一个管道,但一根管道可以有多个sink

    (二十二)type

    1、含义:类型

    2、Source类型

    3、Sink类型

    4、Channel类型

    (二十三)path

    1、含义:写入hdfs的路径,需要包含文件系统标识,比如:hdfs://hurys23:8020/user/hive/warehouse/hurys_dc_ods.db/ods_turnratio/day=%Y-%m-%d/

    2、可以使用flume提供的日期及%{host}表达式

    (二十四)round

    1、含义:是否启用时间上的”舍弃”,这里的”舍弃”,类似于”四舍五入”

    2、如果启用,则会影响除了%t的其他所有时间表达式

    3、默认值:false

    (二十五)roundValue

    1、含义:时间上进行“舍弃”的值

    2、默认值:1

    (二十六)roundUnit

    1、含义:时间上进行”舍弃”的单位,包含:second,minute,hour

    2、默认值:seconds

    (二十七)timeZone

    1、含义:时区

    2、默认值:Local Time

    (二十八)useLocalTimeStamp

    1、含义:是否使用当地时间

    2、默认值:flase

    (二十九)closeTries

    1、含义:hdfs sink关闭文件的尝试次数

    2、默认值:0

    3、如果设置为1,当一次关闭文件失败后,hdfs sink将不会再次尝试关闭文件,这个未关闭的文件将会一直留在那,并且是打开状态

    4、如果设置为0,当一次关闭失败后,hdfs sink会继续尝试下一次关闭,直到成功

    (三十)retryInterval

    1、含义:hdfs sink尝试关闭文件的时间间隔

    2、如果设置为0,表示不尝试,相当于于将hdfs.closeTries设置成1

    3、默认值:180(秒)

    (三十一)serializer

    1、含义:序列化类型

    2、其他还有:avro_event或者是实现了EventSerializer.Builder的类名

    3、默认值:TEXT

    (三十二)设置3个round相关参数用来控制多久生成一个文件

        #是否按照时间滚动文件夹
        a1.sinks.k1.hdfs.round = true
        #多少时间单位创建一个新的文件夹
        a1.sinks.k1.hdfs.roundValue = 10
        #重新定义时间单位
        a1.sinks.k1.hdfs.roundUnit = second

    (三十三)设置时间戳、刷新频率以及文件类型

        #是否使用本地时间戳
        a1.sinks.k1.hdfs.useLocalTimeStamp = true
        #积攒多少个 Event 才 flush 到 HDFS 一次
        a1.sinks.k1.hdfs.batchSize = 100
        #设置文件类型,可支持压缩
        a1.sinks.k1.hdfs.fileType = DataStream

    (三十四)设置下方三个条件,任意一个达到都会生成一个新的文件

        #多久生成一个新的文件
        a1.sinks.k1.hdfs.rollInterval = 60
        #设置每个文件的滚动大小大概是 1M
        a1.sinks.k1.hdfs.rollSize = 1024000
        #文件的滚动与 Event 数量无关
        a1.sinks.k1.hdfs.rollCount = 0

    三、Flume配置文件案例

    ### Name agent, source, channels and sink alias
    a1.sources = s1
    a1.channels = c1
    a1.sinks = k1

    ### define kafka source
    a1.sources.s1.type = org.apache.flume.source.kafka.KafkaSource

    # Maximum number of messages written to Channel in one batch
    a1.sources.s1.batchSize = 5000

    # Maximum time (in ms) before a batch will be written to Channel The batch will be written whenever the first of size and time will be reached.
    a1.sources.s1.batchDurationMillis = 2000

    # set kafka broker address
    a1.sources.s1.kafka.bootstrap.servers = 192.168.0.27:9092

    # set kafka consumer group Id and offset consume
    # 官网推荐1.9.0版本只设置了topic,但测试后不能正常消费,需要添加消费组id(自己写一个),并定义偏移量消费方式
    a1.sources.s1.kafka.consumer.group.id = evaluation_group
    a1.sources.s1.kafka.consumer.auto.offset.reset = earliest

    # set kafka topic
    a1.sources.s1.kafka.topics = topic_b_evaluation


    ### defind hdfs sink

    a1.sinks.k1.type = hdfs
    a1.sinks.k1.hdfs.path = hdfs://hurys23:8020/user/hive/warehouse/hurys_dc_ods.db/ods_queue/day=%Y-%m-%d/
    a1.sinks.k1.hdfs.filePrefix = queue
    a1.sinks.k1.hdfs.fileSuffix = .log
    a1.sinks.k1.hdfs.round = true
    a1.sinks.k1.hdfs.roundValue = 10
    a1.sinks.k1.hdfs.roundUnit = second
    a1.sinks.k1.hdfs.rollSize = 10240000
    a1.sinks.k1.hdfs.rollCount = 0
    a1.sinks.k1.hdfs.rollInterval = 0
    a1.sinks.k1.hdfs.idleTimeout = 60
    a1.sinks.k1.hdfs.minBlockReplicas = 1


    ### define channel from kafka source to hdfs sink
    # memoryChannel:快速,但是当设备断电,数据会丢失
    # FileChannel:速度较慢,即使设备断电,数据也不会丢失
    a1.channels.c1.type = file
    # 这里不单独设置checkpointDir和dataDirs文件位置,参考官网不设置会有默认位置
    # channel store size
    a1.channels.c1.capacity = 100000
    # transaction size
    a1.channels.c1.transactionCapacity = 10000


    ### 绑定source、channel和sink
    a1.sources.s1.channels = c1
    a1.sinks.k1.channel = c1

  • 相关阅读:
    第10章_瑞萨MCU零基础入门系列教程之中断控制单元简介
    从零开始配置 vim(14)——目录管理插件
    docker 可用镜像服务地址(2024.10.31亲测可用)
    高效率开发Web安全扫描器之路(一)
    6年,我从手工测试到测试开发,写给即将进入或者正在做测试的你...
    稀碎从零算法笔记Day55-LeetCode:100291. 统计特殊字母的数量 II
    竞赛选题 深度学习YOLO安检管制物品识别与检测 - python opencv
    QT学习之路(一)ubuntu 18.04的Qt Creator在线安装
    用《斗破苍穹》的视角打开C#3 标签与反射(人物创建与斗技使用)
    Matlab 常用快捷键
  • 原文地址:https://blog.csdn.net/tiantang2renjian/article/details/133921518