登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
分布式消息队列
Kafka命令行操作
生产者与幂等性
ExactlyOnce与事务
分区消费策略
手动提交offset
Kafka对接Flume
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
Hive
Hive调优参数大全
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Kafka
>>
Kafka对接Flume
Kafka对接Flume
2020-07-04 15:14:50 星期六 阅读:1929
####为什么要使用Flume+Kafka 首先来看看他俩的优缺点 - Flume的优点 - - 采集日志文件非常方便: 部署简单,基本不需要写代码 - Flume缺点 - - 虽然可以对接各种Sink,但是扩展能力弱,Sink无法支持动态添加 断点续传实现麻烦 增加新的业务线消费,需要增加channel,导致数据冗余 Kafka优点 - 相同消息可提供给多条业务线使用,且可动态添加 不管有多少条业务线需要消费消息,都不会产生新的数据冗余 Kafka缺点 - 生产者采集日志文件代码实现麻烦,需要自己写IO流去监控 它俩结合能够取长补短,且Flume提供了Kafka相关的组件,方便对接。所以,Flume+Kafka在生产环境中的用途主要是:采集日志文件给多个业务线使用 ####Flume与Kafka的应用场景 - Flume适用场景 - - 适合下游数据消者不多的情况 适合数据安全性要求不高的情况 适合与Hadoop生态圈对接 - Kafka适用场景 - - 适合下游消费者较多 适合数据安全性要求较高的操作(支持replication) 业界比较主流的搭配方案 `线上数据 ---> Flume ---> Kafka ---> Flume(根据情景增删该流程) ---> HDFS` ####Flume对接Kafka配置文件 以下配置文件实现:Flume监控某台机器的6666端口内容,如果有新增数据,则发送到Kafka ``` cd $FLUME_HOME/job vim kafka.conf ``` 添加如下内容 ``` #Name a1.sources=r1 a1.channels=c1 a1.sinks=k1 #Source a1.sources.r1.type=netcat a1.sources.r1.bind=localhost a1.sources.r1.port=6666 #Channel1 a1.channels.c1.type=memory a1.channels.c1.capacity=1000 a1.channels.c1.transactionCapacity=100 #Sink a1.sinks.k1.type=org.apache.flume.fink.kafka.KafkaSink a1.sinks.k1.kafka.topic=my_topic a1.sinks.k1.kafka.bootstrap.servers=192.168.1.101:9092,192.168.1.102:9092,192.168.1.104:9092 a1.sinks.k1.kafka.flumeBatchSize=20 a1.sinks.k1.kafka.producer.acks=1 a1.sinks.k1.kafka.producer.linger.ms=1 # 开启生产者压缩 a1.sinks.k1.kafka.producer.compression.type=snappy #Bind a1.sources.r1.channels=c1 a1.sinks.k1.channel=c1 ``` ####Kafka端启动消费者 ``` cd $KAFKA_HOME bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.101:9092,192.168.1.102:9092,192.168.1.104:9092 --topic my_topic ``` ####启动Flume ``` cd $FLUME_HOME bin/flume-ng agent -c conf/ -f job/kafka.conf -n a1 ``` ####启动6666端口并发送一些数据 ``` nc localhost 6666 hello world hello kafka hello flume ``` 此时在Kafka消费者控制台应该能看到发送的三条数据