Flume对接Kafka详细过程[通俗易懂]

Flume对接Kafka详细过程[通俗易懂]一、为什么要集成Flume和Kafka一般使用Flume+Kafka架构都是希望完成实时流式的日志处理,后面再连接上Storm/SparkStreaming等流式实时处理技术,从而完成日志实时解析的目标。如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,从广义上理解,把它当做一个数据库,可以存放一段时间的数据。因此数据从数据源到flume再到Kafka时,数据一方面可以同步到HDFS做离线计算,另一方面可以做实时计

大家好,又见面了,我是你们的朋友全栈君。

一、为什么要集成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消费者接收信息

在这里插入图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152369.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何找回被盗的微信号(百分百成功)[通俗易懂]

    如何找回被盗的微信号(百分百成功)[通俗易懂]见到这篇文章的小伙伴,可能是被领皮肤、送福利等诱导活动被走微信号,这帮不法分子把骗取你们的微信号,以300-1000不等价格卖给黑色产业链,如果不法分子利用你的微信号去做违法的事情,警察也会查到你,因为你的微信号是实名认证了的。如果你的微信号有钱财也会被盗刷走。(请大家保护好自己微信号,不要轻易把微信帐号+密码+手机等给别人)记住:只要是你的实名微信号,就一定可以找回来,现在小编就教大家如何找回第一步:骗子要求你卸载客户端申诉方法第二步:没有卸载微信客户端申诉方法第一步:这是卸载过微信客户端申诉

    2022年5月15日
    195
  • 基于Android点餐系统的设计与实现

    基于Android点餐系统的设计与实现该APP是一个包含前端用户点餐App和后端餐厅管理网页的系统,主要实现菜品相关的修改和展示、个人信息的管理、点餐预约等。

    2022年6月19日
    26
  • 如何在国外注册一家公司(免费公司注册)

    随着世界经济一体化的发展,商业越来越呈现跨国界的趋势,注册海外公司已经成为中大型企业的必选之路。举一个很简单的例子:一个企业向美国出口产品,需要申请配额及一系列的相关手续,这中间需要多花费一到两倍的成本,而如果该企业拥有一个海外离岸公司,由企业向离岸公司出口产品,再由离岸公司向美国等发达国家出口,就可以绕开关税壁垒活的免税待遇,并且还能够成功绕开出口配额限制。那如何注册一个海外公司?首先需要…

    2022年4月11日
    76
  • mysql整型转字符串_java中如何将字符串转换为字符数组

    mysql整型转字符串_java中如何将字符串转换为字符数组cast(字段asunsigned)例如1:把表结构中的name(字符串)字段转化成整型cast(nameasunsigned)应用:将表A记录按name字段从小到大排列select*fromAorderbycast(nameasunsigned); http://xuyemao.blog.163.com/blog/static/24454858…

    2022年8月30日
    11
  • [电池]Android 9.0 电池未充电与充电字符串提示信息[通俗易懂]

    [电池]Android 9.0 电池未充电与充电字符串提示信息[通俗易懂]1.电池电量提醒1.1未充电提醒若没有预估时间,则提示显示电池百分比若预估时间小于7分钟,则提示手机可能即将关机若预估时间小于15分钟,则提示剩余电池续航时间不到15分钟若15分钟<预估时间<1天,则提示估计大约还能用到xxh,xxmin,xxsec若预估时间大于1天,则提示大约还可使用1days,xhr,xmin,xsec若预估时间大于2…

    2025年8月4日
    3
  • redflag linux6.0 sp2桌面版,红旗Linux桌面版(Red Flag Linux)

    redflag linux6.0 sp2桌面版,红旗Linux桌面版(Red Flag Linux)第一次听说红旗Linux的“Favour”吗?现在的新名词太多,你作为第二个听说的人,一点也不落伍从09年起,针对Linux开源技术的发展特点,红旗Linux对个人版产品线做了重要调整,其中“Favour”版将尽可能把最新、最炫的DD呈现给关注开源技术的“红Fan家人”们,也希望获得更多爱好者对红旗Linux产品的关注、反馈和支持。红旗inWise操作系统V8.0是对系统软件包组件的升级和稳定性易…

    2022年8月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号