Flume+Kafka整合使用

一、背景

Flume和Kafka都是Apache的开源项目。

1.Flume的优点和适用场景

支持的数据源较多、可自定义网络请求的安全配置(filter)

适合下游数据消费者不多的情况(一个消费者开一个channel)
适合数据安全性要求不高的操作(数据没有备份、没有副本)
适合与Hadoop生态圈对接的操作(HDFS、Hbase等)

 

2.Kafka的优点和适用场景

高负载、高可用、数据安全性高

适合数据下游消费众多的情况(kafka从磁盘读,并且只找Leader读)
适合数据安全性要求较高的操作,支持replication(多副本)

 

3.Flume的缺点

(1) 没有提供高可用机制(整合ZooKeeper)。当然,可以自行实现,但增加了成本

(2) 多数场景是配置成把数据保存在内存,如果内存爆了或突然宕机,数据容易丢失

(3) 如果配置成把数据保存在硬盘,没有分区(Partition)和冗余副本(Replication),大数据场景不适合单独使用

 

4.Kafka的缺点

(1) 旧版本的Kafka的接收端性能比Flume差

(2) 支持接收的数据源没Flume多

(3) 没有内置的过滤器(filter),例如,请求的过滤器。当然,可以自行实现,但增加了成本

 

5.整合使用

大数据场景下有3种选择:

(1) 数据发送端 -> Flume -> Kafka -> HBase/Hive/Solr/ES

(2) 数据发送端 -> Flume -> Kafka -> Java程序 -> HBase/Hive/Solr/ES

(3) 数据发送端 -> Flume -> Kafka -> Spark/Storm/Flink -> HBase/Hive/Solr/ES

 

二、预安装和部署

1.硬件环境

假设有4台机,IP及主机名如下:

192.168.100.105 c1
192.168.100.110 c2
192.168.100.115 c3
192.168.100.120 c4

Flume只部署在c1机,Kafka在4台机都部署。

 

2.软件环境

操作系统:Ubuntu Server 18.04

JDK:1.8.0

 

3.Flume的安装与部署

https://www.cnblogs.com/live41/p/15554223.html

 

4.Kafka的安装与部署

https://www.cnblogs.com/live41/p/15522443.html

 

三、整合配置

* 先登录root账号再进行以下操作

1.修改Flume配置

vim /home/flume/conf/flume-conf

把原来的配置修改为:

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
# 如果是用Java通过Flume API发送数据,把netcat改成avro a1.sources.r1.type
= netcat
a1.sources.r1.bind
= c1 a1.sources.r1.port = 44444 # Describe the sink a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.topic = topic1 a1.sinks.k1.kafka.bootstrap.servers = c1:9092,c2:9092,c3:9092 a1.sinks.k1.serializer.class = kafka.serializer.StringEncoder # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

 

四、操作

1.启动ZooKeeper

* 在每台机都要执行

zkServer.sh start

 

2.启动Kafka

* 在每台机都要执行

kafka-server-start.sh -daemon /home/kafka/config/server.properties

 

3.创建topic并启动topic的监听

* 在c2机执行

这里topic的名字是topic1

kafka-topics.sh --create --bootstrap-server c1:9092 --topic topic1 --partitions 8 --replication-factor 2
kafka-console-consumer.sh --bootstrap-server c1:9092 --topic topic1

 

4.启动Flume

* 在c1机执行

flume-ng agent -c conf/ -f /home/flume/conf/flume-conf -n a1 -Dflume.root.logger=INFO,console

 

5.命令测试

* 在c3机执行

telnet c1 44444

然后输入任意内容,看到c1和c2的窗口显示对应消息,就是部署成功了。

 

6.代码测试

* 在c3机执行

用Flume和Kafka的安装与部署文章中的代码测试即可。

 

posted @ 2021-11-15 02:40  Clotho_Lee  阅读(1287)  评论(0编辑  收藏  举报