Flume对接Kafka详细过程

一、为什么要集成Flume和Kafka

一般使用 Flume + Kafka 来完成实时流式的日志处理,后面再连接上Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,当数据从数据源到flume再到Kafka时,数据一方面可以同步到HDFS做离线计算,另一方面可以做实时计算,可实现数据多分发。


二、flume 与 kafka 的关系及区别

  • Flume
  1. Flume 是一个分布式、高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,通过监控整个文件目录或者某一个特定文件,用于收集数据;同时Flume也可以将数据写到各种数据接受方,用于转发数据。Flume的易用性在于通过读取配置文件,可以自动收集日志文件,在大数据处理及各种复杂的情况下,flume 经常被用来作为数据处理的工具

  2. flume分为sources,channels,sinks三部分,每一部分都可以根据需求定制。

  3. 与kafka相比,flume 可以定制很多数据源,减少开发量,因此做数据采集很好。


  • Kafka
  1. 是由LinkedIn 开发的开源分布式消息系统,主要用于处理LinkedIn 的活跃数据,及日志数据。这些数据通常以日志的形式进行存储,现有的消息队列系统可以很好的用于日志分析系统对于实时数据的处理,提高日志解析效率。

  2. kafka 是分布式消息中间件,自带存储,提供 push 和 pull 存取数据的功能,是一个非常通用消息缓存的系统,可以有许多生产者和很多的消费者共享多个主题


三、Flume 对接 Kafka(详细步骤)


(1). Kafka作为source端

1. 配置flume

a1.sources = r1  
a1.channels = c1  
a1.sinks = k1  
  
a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.r1.batchSize = 5000
a1.sources.r1.batchDurationMillis = 2000
a1.sources.r1.kafka.bootstrap.servers = centos1:9092
a1.sources.r1.kafka.topics = mytopic
a1.sources.r1.kafka.consumer.group.id = group1
a1.sources.r1.channels=c1  


a1.channels.c1.type=memory  
a1.channels.c1.capacity=1000  
a1.channels.c1.transactionCapacity=100  


a1.sinks.k1.type=logger  
a1.sinks.k1.channel=c1  

2. 启动flume

[hadoop@master1 ~]# flume-ng agent -c /usr/local/src/flume/conf -f /usr/local/src/flume/conf/hdfs_skin.conf -n a1 -Dflume.root.logger=DEBUG,console

3. 启动Kafka producer

[hadoop@master1 ~]# kafka-console-producer.sh --broker-list master1:2181,slave1:2181,slave2:2181 --topic hello

(2). Kafka作为sink端

1. 配置flume

a1.sources = r1
a1.sinks = k1
a1.channels = c1


# netcat 监听端口
a1.sources.r1.type = netcat
a1.sources.r1.bind =master1
a1.sources.r1.port = 10000
a1.sources.r1.channels = c1 
# 一行的最大字节数
a1.sources.r1.max-line-length = 1024000


# channels具体配置
a1.channels.c1.type = memory 
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100


# KAFKA_sinks
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = hello
a1.sinks.k1.brokerList = master1:9092,slave1:9092,slave2:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20

2. 启动zookeeper集群

[hadoop@master1 ~]# zkServer.sh start

3. 启动kafka集群

[hadoop@master1 ~]# kafka-server-start.sh /usr/local/src/kafka/config/server.properties

kafka后台运行:kafka-server-start.sh /usr/local/src/kafka/config/server.properties 1>/dev/null 2>&1 &
在这里插入图片描述

4.创建并查看topic

[hadoop@master1 ~]# kafka-topics.sh --create --zookeeper master1:2181,slave1:2181,slave2:2181 --replication-factor 2 --topic hello --partitions 1

[hadoop@master1 ~]# kafka-topics.sh --list --zookeeper master1:2181,slave1:2181,slave2:2181 

在这里插入图片描述

5. 创建kafka消费者

[hadoop@master1 ~]# kafal-console-consumer.sh --zookeeper master1:2181,slave1:2181,slave2:2181 --topic hello --from-beginning

6. 启动flume

[hadoop@master1 ~]# flume-ng agent -c /usr/local/src/flume/conf -f /usr/local/src/flume/conf/hdfs_skin.conf -n a1 -Dflume.root.logger=DEBUG,console

7. 向flume端口发送消息

[hadoop@master1 ~]# telnet master1 10000

8. 在kafka消费者接收信息

在这里插入图片描述

如有错误,欢迎私信纠正,谢谢支持!

要配置FlumeKafka的集成,可以按照以下步骤进行操作: 1. 首先,需要在Flume的配置文件中定义source、sink和channel。其中,source指定为Kafka的source端,sink指定为Kafka的sink端,channel用于在source和sink之间传递数据。配置文件中的示例配置可以参考引用中的flume-kafka.conf。 2. 如果要将Kafka作为source端,需要在配置文件中设置source的类型为kafka,并指定Kafka的相关参数,如Kafka的地址、topic名称等。 3. 启动Flume之前,确保Zookeeper和Kafka已经成功启动。因为Flume在启动时会连接Kafka,如果Kafka未启动,会导致连接错误。参考引用中的说明。 4. 如果要将Kafka作为sink端,需要在配置文件中设置sink的类型为kafka,并指定Kafka的相关参数,如Kafka的地址、topic名称等。 5. 在启动Flume之前,需要确保Zookeeper集群和Kafka集群已经成功启动。 6. 可以使用命令行创建和查看Kafka的topic,以及创建Kafka的消费者。具体命令可以根据实际需求进行设置。 7. 启动Flume,并发送消息到Flume的端口。 8. 在Kafka的消费者中接收消息,验证数据是否成功传输。 需要注意的是,在配置FlumeKafka过程中,需要根据实际情况调整相关参数,确保FlumeKafka能够正确地进行数据传输和接收。配置文件的具体内容可以参考引用中的示例配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flume对接Kafka详细过程](https://blog.csdn.net/qq_47183158/article/details/112179052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [玩转Flume+Kafka原来也就那点事儿](https://blog.csdn.net/weixin_34189116/article/details/89658220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [快速学习-Flume 对接 Kafka](https://download.csdn.net/download/weixin_38592548/14885746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值