前言
- 操作系統:CentOS 7
- Java版本:1.8.0_221
- Flume版本:1.8.0
1. Kafka Channel使用場景
- 配合Flume Source、Flume Sink使用,爲Event的傳輸提供一種具有高可用的Channel
- 配合Flume Source和攔截器interceptor使用,無Sink,用於將Flume蒐集的Event傳輸到Kafka集羣指定Topic中,便於Kafka消息訂閱者使用
- 配合Flume Sink使用,如HDFS Sink、HBaseSink等,無Source,用於提供一種低延遲、高容錯的傳輸Event方式,直接通過Flume Agent將Kafka中的Event傳輸給Flume Sink
2. Flume Agent配置示例
- 此Flume Agent配置文件主要用於啓動Agent監控指定日誌文件的更新內容,並將其進行簡單的過濾、分類和標記,最終輸出到對應的Kafka Topic中。其中使用到的Flume組件有TailDir Source、2個自定義攔截器Interceptor、Channel Selector、2個Kafka Channel等
a1.sources = r1
a1.channels = c1 c2
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /opt/module/flume-1.8.0/.position/taildir_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /tmp/logs/app.+
a1.sources.r1.fileHeader = true
a1.sources.r1.interceptors = i1 i2
a1.sources.r1.interceptors.i1.type = com.tomandersen.flume.interceptor.LogETLInterceptor$Builder
a1.sources.r1.interceptors.i2.type = com.tomandersen.flume.interceptor.LogTypeInterceptor$Builder
a1.sources.r1.selector.type = multiplexing
a1.sources.r1.selector.header = topic
a1.sources.r1.selector.mapping.topic_start = c1
a1.sources.r1.selector.mapping.topic_event = c2
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = kafkaServer1:9092,kafkaServer2:9092,kafkaServer3:9092
a1.channels.c1.kafka.topic = topic_start
a1.channels.c1.parseAsFlumeEvent = false
a1.channels.c2.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c2.kafka.bootstrap.servers = kafkaServer1:9092,kafkaServer2:9092,kafkaServer3:9092
a1.channels.c2.kafka.topic = topic_event
a1.channels.c2.parseAsFlumeEvent = false
a1.sources.r1.channels = c1 c2
End~