Flume基本使用

来源:互联网 发布:如何在linux下编程 编辑:程序博客网 时间:2024/05/20 05:28

Flume的核心组件为source、channle、sink:

组件描述

source可以对接数据源,可以是mysql、file、tcp等
channle为数据传输通道,可指定为内存、文件等
sink为数据输出,可以是file、mysql、es、hdfs、hive、kafka等等

功能描述-1

由于soucre和sink均有多样性,因此可以根据需求非常灵活的组织自己需要的数据流转模式,可以跨越各种限制

功能描述-2

Flume也提供了Filter接口,可以自己根据需求来实现该接口实现数据转换,将流入的数据进行一些过滤、转换后输出,比如:可以刷选出自己需要的数据发送到sink端,也可以将数据格式进行一定的转换后输出到sink

配置案例

以rsyslog为source、kafka为sink进行配置

rsyslog模式为linux自动的日志分析组件rsyslog将数据转发至牟已端口后,在flume中配置监听该端口后,当Flumeq启动后会实时自动消费该端口中的数据,具体配置如下:
#定义source、channle、kafka名称syslogTCPAgent.sources = syslogtcpSrcsyslogTCPAgent.channels = kfkChannelsyslogTCPAgent.sinks = kafkaSink#source配置syslogTCPAgent.sources.syslogtcpSrc.type = syslogtcpsyslogTCPAgent.sources.syslogtcpSrc.host = 192.168.168.155syslogTCPAgent.sources.syslogtcpSrc.port = 5110syslogTCPAgent.sources.syslogtcpSrc.eventSize=50960syslogTCPAgent.sources.syslogtcpSrc.channels = kfkChannel#自定义接口,实现自己需要的内容,没需求可以不配置syslogTCPAgent.sources.syslogtcpSrc.interceptors = jsoninterceptersyslogTCPAgent.sources.syslogtcpSrc.interceptors.jsonintercepter.type = com.test.flume.interceptor.JsonInterceptor$Builder#sink配置syslogTCPAgent.sinks.kafkaSink.type = org.apache.flume.plugins.KafkaSinksyslogTCPAgent.sinks.kafkaSink.metadata.broker.list=hdp01:9092,hdp02:9092,hdp03:9092,hdp04:9092syslogTCPAgent.sinks.kafkaSink.partition.key=0syslogTCPAgent.sinks.kafkaSink.channel = kfkChannelsyslogTCPAgent.sinks.kafkaSink.partitioner.class=org.apache.flume.plugins.SinglePartitionsyslogTCPAgent.sinks.kafkaSink.serializer.class=kafka.serializer.StringEncodersyslogTCPAgent.sinks.kafkaSink.request.required.acks=0syslogTCPAgent.sinks.kafkaSink.producer.type=syncsyslogTCPAgent.sinks.kafkaSink.custom.encoding=UTF-8syslogTCPAgent.sinks.kafkaSink.custom.topic.name=my-test#参数配置syslogTCPAgent.channels.kfkChannel.type = memorysyslogTCPAgent.channels.kfkChannel.capacity = 100000syslogTCPAgent.channels.kfkChannel.transactionCapacity = 5000syslogTCPAgent.channels.kfkChannel.keep-alive = 300#以上配置为基础配置,相关参数可以根据需求不断优化调整

启动脚本以及日志配置

#将启动内容封装在shell里面,命名为flume_visitlog.sh具体内容为/test/apache-flume-1.5.2-kafka/bin/flume-ng agent --conf /test/apache-flume-1.5.2-kafka/conf --conf-file /test/apache-flume-1.5.2-kafka/conf/flume_kafka.conf --name syslogTCPAgent 2>&1 &exit#日志配置/test/apache-flume-1.5.2-kafka/conf   指定了日志配置文件路径配置文件为log4j.properties配置内容:flume.root.logger=ERROR,LOGFILE #日志级别flume.log.dir=/test/logs        #日志路径flume.log.file=flume_kafka.log  #日志名称

启动&运用

以上配置完成后即可执行  sh flume_kafka.sh启动Flume实例可在source端发送一条数据:echo 'testdata' | nc 192.168.168.155 5110启动一个kafka消费端程序观察是否有数据输出(topic不存在需先创建)kafka-console-consumer.sh --zookeeper hdp02:2181,hdp03:2181,hdp04:2181  --topic my-test观察日志看看是否有异常并调整解决
原创粉丝点击