Flume组件 - Sink

Sink—Event发送

主要职责是将Event传输到下一个Agent或最终目的地,成功传输完成将Event从Channel中移除

Logger Sink
  • 记录指定级别(比如INFO,DEBUG,ERROR等)的日志,通常用于调试
  • 要求,在 --conf(-c )参数指定的目录下有log4j的配置文件
  • 根据设计,logger sink将body内容限制为16字节,从而避免屏幕充斥着过多的内容。如果想要查看调试的完整内容,那么你应该使用其他的sink,也许可以
    使用file_roll sink,它会将日志写到本地文件系统中;
  • 配置项 说明
    channel 绑定通道
    type logger
File_roll Sink
  • 在本地系统中存储事件
    • 需要在本地文件系统创建一个缓冲目录;
  • 每隔指定时长生成文件保存这段时间内收集到的日志信息
  • 配置项 说明
    channel 绑定通道
    type file_roll
    sink.directory 文件被存储的目录
    sink.rollInterval 30() 记录日志到文件里,每隔30秒生成一个新日志文件。如果设置为0,则禁止滚动,从而导致所有数据被写入到一个文件中。
#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=8888
#描述sink
a1.sinks.s1.type=file_roll
a1.sinks.s1.sink.directory=/home/work/flumedata
a1.sinks.s1.sink.rollInterval=60
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

  • 创建指定的文件目录 /home/flume
    在这里插入图片描述
HDFS Sink
  1. 此Sink将事件写入到Hadoop分布式文件系统HDFS中
  2. 目前它支持创建文本文件和序列化文件,并且对这两种格式都支持压缩
  3. 根据经过的时间、数据的大小、事件的数量定期滚动文件(关闭当前的文件并创建新的文件)
  4. 对于正在进行写操作处理的文件其文件名会添加一个后缀“.tmp”
  5. 这些文件可以分卷,按照指定的时间或数据量或事件的数量为基础
  6. 它还通过类似时间戳或机器属性对数据进行 buckets/partitions 操作
  7. HDFS的目录路径可以包含将要由HDFS替换格式的转移序列用以生成存储事件的目录/文件名
  8. 使用这个Sink要求haddop必须已经安装好,以便Flume可以通过hadoop提供的jar包与HDFS进行通
  9. 配置项 说明
    channel 绑定的通道
    type hdfs
    hdfs.path HDFS 目录路径 (hdfs://namenode/flume/webdata/)
    hdfs.inUseSuffix .tmp Flume正在处理的文件所加的后缀
    hdfs.rollInterval 文件生成的间隔事件,默认是30,单位是秒
    hdfs.rollSize 生成的文件大小,默认是1024个字节 ,0表示不开启此项
    hdfs.rollCount 每写几条数据就生成一个新文件,默认数量为10
    每写几条数据就生成一个新文件,
    hdfs.fileType ----- SequenceFile/DataStream/CompressedStream
    hdfs.retryInterval ----- 80 Time in seconds between consecutive attempts to close a file. Each close call costs multiple RPC round-trips to the
    Namenode, so setting this too low can cause a lot of load on the name node. If set to 0 or less, the sink will not attempt
    to close the file if the first attempt fails, and may leave the file open or with a ”.tmp” extension.
#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=8888
#描述sink
a1.sinks.s1.type=hdfs
a1.sinks.s1.hdfs.path=hdfs://192.168.234.21:9000/flume
a1.sinks.s1.hdfs.fileType=DataStream
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

Avro Sink
  1. 将源数据进行利用avro进行序列化之后写到指定的节点上
  2. 是实现多级流动、扇出流(1到多) 扇入流(多到1) 的基础
  3. 配置项 说明
    channel 绑定的通道
    type avro
    hostname 要发送的主机
    port 要发往的端口号
多级流动

概述

  1. 让01机的flume通过netcat source源接收数据,然后通过avro sink 发给02机
  2. 02机的flume利用avro source源收数据,然后通过avro sink 传给03机
  3. 03机通过avro source源收数据,通过logger sink 输出到控制台上
    需要配置三台云主机的Flume配置

a. 01机的配置示例:


#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=8888
#描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=flume02
a1.sinks.s1.port=9999
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

b. 02机的配置示例:


#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=9999
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.213
a1.sinks.s1.port=9999

#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1

c. 03机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1

a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=9999
#描述sink
a1.sinks.s1.type=logger

#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
扇出流
  1. 01机的配置文件

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1 s2
a1.channels=c1 c2

#描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=8888

#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
a1.channels.c2.type=memory
a1.channels.c2.capacity=1000
a1.channels.c2.transactionCapacity=100

#描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.212
a1.sinks.s1.port=9999

a1.sinks.s2.type=avro
a1.sinks.s2.hostname=192.168.234.213
a1.sinks.s2.port=9999

#为channel 绑定 source和sink
a1.sources.r1.channels=c1 c2
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c2
  1. 02,03配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1

#描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=9999

#描述sink
a1.sinks.s1.type=logger
#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
扇入流
  1. 02,03的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=netcat
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=8888

#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

#描述sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=192.168.234.163
a1.sinks.s1.port=9999

#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
  1. 01机的配置示例:

#配置Agent a1 的组件
a1.sources=r1
a1.sinks=s1
a1.channels=c1
#描述/配置a1的source1
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=9999

#描述内存channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100

#描述sink
a1.sinks.s1.type=logger
#为channel 绑定 source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值