Flume——sink(每5秒记录写入HDFS)

目录

设置

属性名称 默认值 说明
channel -
type - 组件类型名称,必须是hdfs
hdfs.path - HDFS路径,例如:hdfs://mycluster/flume/mydata
hdfs.filePrefix FlumeData flume在hdfs目录中创建文件的前缀
hdfs.fileSuffix - flume在hdfs目录中创建文件的后缀
hdfs.inUsePrefix - flume正在写入的临时文件的前缀
hdfs.inUseSuffix .tmp flume正在写入的临时文件的后缀
hdfs.rollInterval 30 多长时间写一个新的文件 (0 = 不写新的文件),单位:秒
hdfs.rollSize 1024 文件多大时写新文件,单位:字节(0: 不基于文件大小写新文件)
hdfs.rollCount 10 当写一个新的文件之前要求当前文件写入多少事件(0 = 不基于事件数写新文件)
hdfs.idleTimeout 0 多长时间没有新增事件则关闭文件(0 = 不自动关闭文件),单位:秒
hdfs.batchSize 100 写多少个事件开始向HDFS刷数据
hdfs.codeC - 压缩格式:gzip, bzip2, lzo, lzop, snappy
hdfs.fileType SequenceFile 支持的值有:SequenceFile,DataStream,CompressedStream
hdfs.maxOpenFiles 5000 最大打开文件数。如果数量超了则关闭最旧的文件
hdfs.minBlockReplicas - 对每个hdfs的block设置最小副本数。不指定则使用hadoop的配置值(默认为1)
hdfs.writeFormat - 对于sequence file记录的类型。Text或者Writable(默认值)
hdfs.callTimeout 10000 为HDFS操作(如open、write、flush、close)准备的时间,单位:毫秒
hdfs.threadsPoolSize 10 每个HDFS sink用于HDFS io操作的线程数
hdfs.rollTimerPoolSize 1 每个HDFS sink用于调度计时文件滚动的线程数
hdfs.round false 是否需要新建文件夹以支持文件夹滚动
hdfs.roundValue 1 与roundUnit一起指定文件夹滚动的时长,会四舍五入
hdfs.roundUnit second 控制文件夹个数。多长时间生成新文件夹,可设置为second, minute或hour
hdfs.timeZone Local Time 用于解析目录路径的时区名称,例如:America/Los_Angeles
hdfs.useLocalTimeStamp false 一般设置为true以使用本地时间。若不使用,则要求flume发送的事件header中带有时间戳

时间参数

别名 描述
%t Unix时间戳,毫秒
%{host} 替换名为"host"的事件header的值。支持任意标题名称。
%a 星期几的短名,例如:Mon, Tue, ...
%A 星期几的全名,例如:Monday, Tuesday, ...
%b 月份短名,例如:Jan, Feb, ...
%B 月份全名,例如:January, February, ...
%c 时间和日期,格式如:Thu Mar 3 23:05:25 2030
%d 月份中的天数,两位数字表示(01-31)
%e 月份中的天数,不补零(1-31)
%D 日期,与%m/%d/%y格式相同
%H 小时,24小时制,两位数字表示(00-23)
%I 小时,12小时制,两位数字表示(01-12)
%j 一年中的天数,三位数字表示(001-366)
%k 小时,24小时制,不补零(0-23)
%m 月份,两位数字表示(01-12)
%n 月份,不补零(1-12)
%M 分钟,两位数字表示(00-59)
%p 本地化的上午或下午标识
%s 自1970-01-01 00:00:00 UTC以来的秒数
%S 秒,两位数字表示(00-59)
%y 年份的最后两位,两位数字表示(00-99)
%Y 年份,四位数字表示(例如:2030)
%z 数字时区,例如:+hhmm(如-0400)

配置文件

spooldir-logger-hdfs01.conf

配置文件内部具体的参数可以参考上面的两张表格

bash 复制代码
# Name the components on this agent
# a1--agent
# all source of a1
a1.sources = r1
# all sinks of a1
a1.sinks = k1
# all channels of a1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = spooldir
# 
a1.sources.r1.spoolDir = /opt/module/jar/test
a1.sources.r1.fileSuffix= .wunaiieq
a1.sources.r1.ignorePattern=([^ ]*\.tmp)
a1.sources.r1.fileHeader = true

# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/enents/%m-%d/%H%M/%S
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 5
a1.sinks.k1.hdfs.roundUnit =second
a1.sinks.k1.hdfs.useLocalTimeStamp = true

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

执行效果

使用spooldir进行source设置,监控目录下新产生的文件

输出端的sink则连接至hdfs,以每5秒频率产生一个文件夹,同时flume会将日志写入到此文件夹中。(当监控的source没有产生变化时,不会有events输出,因此不会产生文件)

文件读取

报错了,产生的是二进制文件

atguigu@master test\]$ hdfs dfs -cat /flume/enents/12-06/1045/50/events-.1733453151446 2024-12-06 10:53:06,283 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false ²3ڂOaag.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritablV񧳮;ꨄn ²3;

相关推荐
yumgpkpm3 天前
CMP7(类Cloudera CMP 7 404版华为Kunpeng)用开源软件Label Studio做数据标注
hdfs·flink
橙-极纪元4 天前
文件存储服务有哪些?他们优缺点分别是什么?FastDFS、MinIO、Ceph、HDFS、MooseFS、TFS、七牛云、阿里云 OSS
hdfs·minio·七牛云·tfs·fastdfs·阿里云 oss·文件存储服务
easy_coder5 天前
从HDFS NN报错看Flink+K8s+HDFS:基础、架构与问题关联
hdfs·flink·kubernetes
笨蛋少年派10 天前
使用hdfs命令报错:Unknown command:dfs(环境变量正确)
大数据·hadoop·hdfs
赵渝强老师15 天前
【赵渝强老师】大数据日志采集引擎Flume
大数据·flume
OkGogooXSailboat15 天前
flume的log4j日志无输出排查
java·flume·1024程序员节
vivo互联网技术20 天前
vivo HDFS EC 大规模落地实践
大数据·hdfs
vivo互联网技术24 天前
vivo HDFS EC大规模落地实践
大数据·hdfs·大数据计算与存储·erasure coding
洛克大航海25 天前
Ubuntu中使用Hadoop的HDFS和MapReduce
hadoop·ubuntu·hdfs·mapreduce
yumgpkpm1 个月前
CMP平台(类Cloudera CDP7.3)在华为鲲鹏的Aarch64信创环境中的性能表现
大数据·flink·kafka·big data·flume·cloudera