Flume Source channel Sink专题

Flume->Source channel Sink三剑客专题分享

华为权威参考地址:https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0396.html

Source:

​ exec Source:

作用:启动一个用户所指定的linux shell命令,采集这个linux shell命令的标准输出,作为收集到的数据,转为event写入
参数: type:exec
      command: tail -f/-F 日志文件路径

​ spooldir Source:

作用:监听目录下新增文件,缺点:只能监听目录下新增文件,如果某一个文件已经采集完成,后续再向该文件中写入新内容,flume不会进行采集
,而且不能断点续传
参数: type:spooldir
      spoolDir: 监听的目录
	  includePattern: 通过正则表达式监听符合要求的文件  
	  batchSize:定义每批次采集多少数据, 必须<=事务容量大小
	  fileSuffix = .COMPLETED:当文件传输成功,添加,COMPLETED后缀
	  ignorePattern:([^ ]*\.tmp) 过滤某些后缀名的文件

​ kafka Source:

作用:通过kafka的消费者连接到kafka,然后读取数据,将其转化为 Event 发送给channel
参数:
# source类型
agent.sources.s1.type = org.apache.flume.source.kafka.KafkaSource
# kafka brokers列表
agent.sources.s1.kafka.bootstrap.servers = localhost:9092
# 配置消费的kafka topic
agent.sources.s1.kafka.topics = testTopic3
# 配置消费者组的id
agent.sources.s1.kafka.consumer.group.id = consumer_testTopic3
# 自动提交偏移量的时间间隔
agent.sources.s1.kafka.consumer.auto.commit.interval.ms = 60000

​ http Source:

作用:接受get和post的http请求,这些http请求会被httpHeapler接口的实现类处理,然后将http请求转化为event,发送给channel
参数:
type	 	http (org.apache.fluem.source.httpSource)
bind	 	绑定的IP地址或主机名
port	 	绑定的端口号
enableSSL	false	 
keystore	 	使用的keystore文件的路径
keystorePassword	 	能够进入keystore的密码
handler	JSONHandler	HTTP SOURCE使用的处理程序类
handler.*	 	传给处理程序类的任何参数 可以 通过使用此参数(*)配置传入

​ avro Source:

作用:通过监听一个网洛端口来接受数据,接受的数据必须是通过arvo框架序列化后的数据,它会把数据处理成event发送给channel
参数:
                type: avro
				bind: 监听哪个主机
				port: 监听哪个端口

​ taldir Source

          作用:taildir 对一个目录进行监测,目录不支持 正则,等表达式,会生成一个json文件,其中记录了每个文件的消费偏移量,宕机后,会从偏移量继续消费 ,所以一般不存在数据重复发送的问题
          参数:
                type: TAILDIR
				filegroups: 定义文件组的名称,多个文件组名称通过空格分隔
				filegroups.<filegroupName> : 定义对应的文件组监听的目录、文件
				positionFile: 记录上一次采集到了文件的哪个位置的文件
				batchSize:定义每批次采集多少数据, 必须<=事务容量大小 

Channel:

​ file channel:

作用:  将event事件保存在磁盘上,可靠性高,但是吞吐量低于memory channel ,如果对数据安全性要求较高,可以推荐使用
参数:  
       type:file
       checkpointDir:检查数据完整性,存放检查点目录,可以检测出哪些数据已被抽取,哪些还没有
       dataDirs:存放数据的目录,dataDirs可以是多个目录,以逗号隔开,
       用独立的多个磁盘上的多个目录可以提高file channel的性能

​ memory channel:

作用:   将Event事件保存到javaHeap中,也就是基于内存缓存,吞吐量高,可能会发生小部分数据丢失
参数:   type:memory
        capacity:100
        transactioncapacity:1000
Sink:

​ hdfs sink

作用:sink 从 channel端拉取数据,然后持久化到hdfs上
参数:
type: hdfs
		hdfs.path: 指定数据保存到HDFS哪个路径
		hdfs.filePrefix: 指定文件的前缀
		hdfs.rollInterval: 指定间隔多久滚动生成一个新文件,后续数据项文件中写入不会再向老文件中写
		hdfs.rollSize: 指定文件多大之后滚动生成一个新文件,后续数据项文件中写入不会再向老文件中写,在工作中设置的时候要比128M稍微小一点
		hdfs.rollCount: 指定向文件中写入多少个Event之后滚动生成一个新文件,后续数据项文件中写入不会再向老文件中写,在工作中一般设置为0禁用
		hdfs.batchSize: 定义sink每个批次从channel拉取多少数据,必须<=事务容量大小
		hdfs.codeC: 定义数据保存到HDFS的时候使用哪种压缩[gzip, bzip2, lzo, lzop, snappy]
		hdfs.fileType: 定义数据保存到HDFS的是以哪种文件格式保存[SequenceFile:二进制文件, DataStream:文本文件, CompressedStream:压缩文件]
		hdfs.round: 指定是否按照指定的时间间隔生成文件夹
		hdfs.roundValue: 指定时间间隔的值
		hdfs.roundUnit: 指定时间单位
		hdfs.userLocalTimeStamp: 是否使用本地时间戳
实例1:
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path=hdfs://node-1:9000/source/logs/%{type}/%Y%m%d
a1.sinks.k1.hdfs.filePrefix =events
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
#时间类型
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#生成的文件不按条数生成
a1.sinks.k1.hdfs.rollCount = 0
#生成的文件按时间生成
a1.sinks.k1.hdfs.rollInterval = 30
#生成的文件按大小生成
a1.sinks.k1.hdfs.rollSize = 10485760
#批量写入 hdfs 的个数
a1.sinks.k1.hdfs.batchSize = 10000
#flume 操作 hdfs 的线程数(包括新建,写入等)
a1.sinks.k1.hdfs.threadsPoolSize=10
#操作 hdfs 超时时间
a1.sinks.k1.hdfs.callTimeout=30000

实例2:
# sink 类型
agent.sinks.r1.type = hdfs
# hdfs 目录 注意:%Y%m%d 需要event header 中有毫秒级的timestamp字段
# 在上边已经提取event的event_time作为header中的timestamp字段,这样就可以根据事件时间写入hdfs
agent.sinks.r1.hdfs.path = hdfs://node1:8020/flume_data/%Y%m%d/%{LogType}
#
#agent.sinks.r1.hdfs.useLocalTimeStamp = true
# hdfs 路径中时间解析的时区,默认Local Time
#agent.sinks.r1.hdfs.timeZone = Local Time
# hdfs 文件记录格式,Text:原文本
agent.sinks.r1.hdfs.writeFormat = Text
# hdfs文件格式,DataStream类型:输出文件不会被压缩
agent.sinks.r1.hdfs.fileType = DataStream
# hdfs文件大小为指定字节时,另起新的文件存储 0:不基于文件大小滚动文件
agent.sinks.r1.hdfs.rollSize = 102400
# hdfs文件大小为指定event事件数时,另起新文件存储 0:不基于文件大小滚动文件 注意:事件数不一定等于hdfs文件行数,如自定义拦截器将一个事件拆分成多行
agent.sinks.r1.hdfs.rollCount = 5
# 到指定秒时,另起新文件存储 0:不基于时间文件大小滚动文件
agent.sinks.r1.hdfs.rollInterval = 10
# hdfs文件前缀 后缀
agent.sinks.r1.hdfs.filePrefix=log
agent.sinks.r1.hdfs.fileSuffix=.txt

​ hbase sink

作用:sink 从 channel端拉取数据,然后持久化到hbase上
参数:
a1.sinks.k1.type = hbase
a1.sinks.k1.table = foo_table
a1.sinks.k1.columnFamily = bar_cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer

type	hbase	类型,需配置为“hbase”
table	-	HBase表名称
monTime	0(不开启)	线程监控阈值,更新时间大于阈值时重新启动该Sink,单位:秒
columnFamily	-	HBase列族名称
batchSize	1000	每次写入HBase的Event个数
kerberosPrincipal	-	认证HBase的Kerberos用户名,未启用Kerberos认证集群不配
kerberosKeytab	-	认证HBase的Kerberos keytab路径,未启用Kerberos认证集群不配置

​ hive sink

作用:sink 从 channel端拉取数据,然后持久化到hive上
参数:
a1.sinks.k1.type = hive
a1.sinks.k1.channel = c1
a1.sinks.k1.hive.metastore = thrift://127.0.0.1:9083
a1.sinks.k1.hive.database = logsdb
a1.sinks.k1.hive.table = weblogs
a1.sinks.k1.hive.partition = asia,%{country},%y-%m-%d-%H-%M
a1.sinks.k1.useLocalTimeStamp = false
a1.sinks.k1.round = true
a1.sinks.k1.roundValue = 10
a1.sinks.k1.roundUnit = minute
a1.sinks.k1.serializer = DELIMITED
a1.sinks.k1.serializer.delimiter = "\t"
a1.sinks.k1.serializer.serdeSeparator = '\t'
a1.sinks.k1.serializer.fieldnames =id,,msg

​ kafka sink

作用:sink 从 channel端拉取数据,然后持久化到kafka上
参数: 
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = mytopic
a1.sinks.k1.brokerList = localhost:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20

​ arvo sink

作用:拉去channel端的数据,采用端口的行式,发送数据,通常用于不同agent之间的事件传输
参数:
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = 10.10.10.10
a1.sinks.k1.port = 454

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值