flume整合kafka外加操作代码及配置文件!!亲测有效

我这次写的是我在学习完flume和kafka之后做的一个Demo,而且在flume采集完成之后,加上一个kafka能起到消峰缓冲的效果
首先需要的两大组件及其版本

Kafka2.11 Flume1.7 (jdk1.8 scala2.11)

当然具体的安装我就不做过多的解释了,
我是在本地的idea使用log4j自己创建信息:
在此之前我们需要创建一个properties文件(如下图):
flume整合kafka外加操作代码及配置文件!!亲测有效_第1张图片
然后内容如下:

### 设置###
log4j.rootLogger = INFO,stdout,flume
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss,SSS} %l%n%m%n

log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = 192.168.40.147
log4j.appender.flume.Port = 41414
log4j.appender.flume.UnsafeMode = true
log4j.appender.flume.layout = org.apache.log4j.PatternLayout

Maven添加如下以来,(如果有了请勿重复添加):

        
            org.slf4j
            slf4j-log4j12
            1.7.16
        

生产日志信息代码如下


import org.apache.log4j.Logger;

public class DataGen01 {

    private static Logger loger=Logger.getLogger(DataGen01.class.getName());

    public static void main(String[] args) throws InterruptedException {
        int index=0;

        while (true){
            Thread.sleep(500);

            loger.info("value is:"+index++);
        }
    }
}

这时可以运行下看看是否有信息输出:
flume整合kafka外加操作代码及配置文件!!亲测有效_第2张图片

友情提示:进行流式处理的时候应该是从尾部到头部进行配置

所在咱们先配置kafka
1.启动kafka(s所有节点都要启动)
2.创建一个主题用来接受flume采集的数据:

[root@Master bin]# ./kafka-topics.sh --create --zookeeper Master,Slave1,Slave2 --topic kafkaStreamtopic

创建成功会出现:Created topic “kafkaStreamtopic01”.的样子
4.创建消费者:
./kafka-console-consumer.sh --topic kafkaStreamtopic01 --zookeeper 192.168.40.17:2181,192.168.40.18:2181,192.168.40.19:2181

3.创建生产者:这里的生产者其实就是接下来的收集flume的信息所以不用创建,但是为了检测topic的是否稳定使用,咱们可以创建一个用来测试

./kafka-console-producer.sh --topic kafkaStreamtopic01 --broker-list 192.168.40.147:9092,192.168.40.148:9092,192.168.40.149:9092

可以先在生产者生成一些数据来进行检查
flume整合kafka外加操作代码及配置文件!!亲测有效_第3张图片

然后配置flume进行采集:
1,首先配置flume Agent的flume-streaming01.conf(自己创建)这个文件,这个文件是flume进行数据采集的详细信息,内容如下;

# Describe/configure the source
#配置信息我就不用多说了,大家应该都明白
ag1.sources.sr1.type=avro
ag1.sources.sr1.bind=0.0.0.0
ag1.sources.sr1.port=41414

# Describe the sink
ag1.sinks.sk1.type = org.apache.flume.sink.kafka.KafkaSink

#这里是sink发送的topic名称
ag1.sinks.sk1.kafka.topic = kafkaStreamtopic01
#这里是sink发送的broker位置及其端口
ag1.sinks.sk1.kafka.bootstrap.servers = 192.168.40.147:9092,192.168.40.148:9092,192.168.40.149:9092
ag1.sinks.sk1.kafka.requiredAcks=1
ag1.sinks.sk1.kafka.flumeBatchSize = 20

# Use a channel which buffers events in memory
ag1.channels.ch1.type = memory
ag1.channels.ch1.capacity = 1000

# Bind the source and sink to the channel
ag1.sources.sr1.channels = ch1
ag1.sinks.sk1.channel = ch1

然后再flume的目录里面执行:

./bin/flume-ng  agent -n ag1  -c conf -f ./job/flume-streaming01.conf  -Dflume.root.logger=INFO,console

接着在本地的idea上运行log4j的demo生产数据
flume整合kafka外加操作代码及配置文件!!亲测有效_第4张图片查看kafka是否消费到了数据
flume整合kafka外加操作代码及配置文件!!亲测有效_第5张图片

消费到了数据,连通性测试完成

你可能感兴趣的:(kafka,Flume)