关于flume和kafka的一些用法

Flume

Flume 提供了一个分布式的,可靠的,对大数据量的日志进行高效的收集,聚合,转移的服务,但是只能在Linux下使用,在目前学习中。我们一般都只用flume采集数据源输出到一个地方,具体流程图如下图所示:
在这里插入图片描述
但flume也可以采集数据同时输出到多个目的地
在这里插入图片描述
在使用flume时,首先需要配置flume配置文件,
[root@node01 conf]# vi flume-netcat.conf
配置agent中的名字:a1表示agent的名字,r1表示输入的Source的名字
//这里大家可以看到 soureces sinks channels 表示有许多的意思,表示可以定义多个(在输出到多个地方时使用)
a1.sources = r1
a1.sinks = k1
a1.channels = c1
//监控本地端口
配置source:输入源类型,地址,端口
a1.sources.r1.type = netcat
a1.sources.r1.bind = node01
a1.sources.r1.port = 6666
配置sink:输出目的地的类型
//输出到控制台上,这时候可以会在控制台上看到flume监控的数据,也可以输出到kafka上,下面会说到
a1.sinks.k1.type = logger
配置channel:类型;Channel中可以存放1000个event,收集100个event就提交事务
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
建立关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
以上就是配置文件的全部信息,
然后再执行flume的这个配置文件,这样就是flume的流程
flume-ng agent \
–conf conf
–conf-file ./flume-netcat.conf \
–name a1 \
-Dflume.root.logger==INFO,console
flume采集数据上传到hdfs上的配置文件,重新创建一个flume-exec.conf
a1.sources=r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.type=exec
a1.sources.r1.command=tail -F /opt/data/tmp.log //这里的路径是存取数据的路径,也就是flume监控本地文件的路径,可不是配置文件的路径
a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path= hdfs://master:9000/flume/%y-%m-%d/%H-%M
a1.sources.r1.channels=c1
a1.sinks.k1.channels=c1
然后老样子,执行flume-ng agent
–conf conf \
–name a2
–conf-file ./flume-exec.conf
这时候可以在hdfs上查看数据,此时控制台上不会出现数据

Kafka

Kafka是一个分布式流平台,是一个基于发布/订阅模式的消息队列,主要是应用于实时流处理领域
消息队列其实就是数据队列
kafka有两种模式,一种是消费者模式,一种是生产者模式,我们一般把flume和kafka结合起来,flume采集数据传到kafka,kafka输出到控制台上或者和代码结合对数据进行处理

Kafka消费者(只要对数据进行处理,包括将数据在控制台上输出)

这里使用flume采集数据到kafka上,并且输出到控制台上
flume需要重新配置一下
a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/data/tmp.log

a1.sinks.k1.type =org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers = node01:9092,node1:9092,node2:9092
a1.sinks.k1.kafka.topic = t2(输出到kafka t2的主题上)
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity=100
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
然后在kafka上创建t2主题
kafka-topics.sh
–zookeeper node01:2181
–create
–replication-factor 3
–partitions 4
–topic t2
然后启动flume,此时数据会经过flume采集,储存在主题t2上,如果想要在控制台上查看数据,
此时将kafka设置为消费者,并且在控制台上输出
kafka-console-consumer.sh
–bootstrap-server node01:9092
–from-beginning
–topic t2
一会我们会将kafka和后台代码结合起来,通过后台代码再获取t2主题里的数据,对数据进行筛选和处理。

kafka生产者

kafka-console-producer.sh
–broker-list node01:9092
–topic t2
修改flume配置文件中的source
然后运行flume进行监控就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值