flume AvroSource和AvroSink使用

AvroSource

Avro Source是flume主要的RPC Source,能接收其他节点的Avro Sink或者用Flume SDK发来的数据,
常与Avro Sink结合作为缓冲使用。
关于Avro,这篇文章有作介绍,链接:Avro使用详解

AvroSource配置参数

配置参数 默认值 描述
type - source类型
bind - ip地址,0.0.0.0绑定所有机器
port - 本机接收端口
threads - 接收传入数据的最大线程数量
ssl false 是否使用SSL
keystore - SSL使用的keystore路径
keystore-password - keystore密码
keystore-type JKS0 keystore类型
compression-type - 压缩数据的格式,只支持zlib,使用deflate设置

bind若使用127.0.0.1则只接收本机的请求数据,0.0.0.0可以接收来之所有机器的数据。
threads最大线程数量受JVM,操作系统,硬件限制。
ssl如果设为true,则发送到source的所有机器都需配置使用ssl。
compression-type如果配置使用,则传入的数据源需要被压缩,否则source无法解析,因此如果传入数据缺失无法压缩,
例如传入了http请求又需要压缩发送到avroSource,则可在avro同台机器配置多个agent,用httpsource,avroSink使用压缩。
如果是压缩与不压缩的数据都需要接接收,就需要avrosource配置两个,一个压缩一个不压缩。

AvroSink配置参数

配置参数 默认值 描述
type - source类型
hostname - 发送的ip地址
port - 发送端口
batch-size 100 每次发送的事件数量,也是从channel读取的时间数量
ssl false 是否使用SSL
truststore - SSL使用的truststore路径
truststore-password - truststore密码
truststore-type JKS truststore类型
compression-type - 压缩数据的格式,只支持zlib,使用deflate设置
compression-level 6 压缩等级,数值1-9,值越大压缩效果越好
reset-connection-interval - sink从source断开连接后重新连接的间隔

使用示例:

假设有如下场景:
将数据从某一台机器由avro压缩发送到另一台机器,并传入kafka
使用以下配置

Avro Sink配置
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# source配置
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# sink参数
a1.sinks.k1.type = avro
a1.sinks.k1.host = 192.168.3.133
a1.sinks.k1.bind = 7777
a1.sinks.k1.batchSize = 1000
a1.sinks.k1.compression-type = defalte
a1.sinks.k1.compression-level = 6


# file channel
a1.channels.c1.type = file
a1.channels.c1.capacity = 100000
a1.channels.c1.transactionCapacity = 1000

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
Avro Source配置
a1.sources = s1
a1.sinks = k1
a1.channels = c1

#设置avro source
a1.sources.s1.type = avro
a1.sources.s1.bind = 0.0.0.0
a1.sources.s1.port = 7777
a1.sources.s1.compression-type=deflate
#设置kafka sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = testflume
a1.sinks.k1.brokerList = master:9092,slave1:9092,slave2:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20

#设置memory channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 100000
a1.channels.c1.transactionCapacity = 1000

a1.sources.s1.channels = c1
a1.sinks.k1.channels = c1

你可能感兴趣的:(flume,hadoop,java)