flume+kafka实现根据消息的标识分配到不同的分区

需求

在使用flume 收集 log的时候根据 不同的 消息表示可能是uid。或者是日期。等关键字段 。
将消息发送到 kafka不同的分区
这里就不再贴详细代码 主要讲一下自己的思路 。

思路一: 自定义在flume拦截器中 使用 kafka producer 。直接将关键信息 获取之后。根据逻辑。发送到不同的分区 。
主要实现如图:
这里写图片描述
这里写图片描述

配置文件修改:
flume-conf.properties
这里写图片描述

code: github代码

思路二: 使用kafkasink

配置kafka sink

根据官方文档:
http://flume.apache.org/FlumeUserGuide.html#kafka-sink

这里写图片描述
将uid设置为key 。会自动根据key分区
主要代码 与上面相同 : (获取uid的方法可以使用正则截取。也可以根据log格式转为json对象)
http://blog.csdn.net/justclimbing/article/details/52265874

这里写图片描述
这里写图片描述

1.启动各个节点的zookeeper ,kafka服务。
2.启动 flume 启动对应的配置文件 为上图。
3 。在另外的节点启动消费者 ; bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic nebo_test
4、然后在Zookeeper 找到console 消费者组console-consumer-xxx
ls /consumers
5、查看消费者组console-consumer-xxx下的kafka-topic1每个partition数据消费情况
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group console-consumer-xxx

通过打印的log以及查看的结果可以看到不同的uid分到了不同的分区(截图省略)。
问题1: 分区的个数要看你配置文件的个数。当然也可以使用命令更改
问题2: 启动过程中如果出现问题。查看zookeeper ,flume,kafka的log文件 。

以上为自己在学习中的一点小总结。不足的地方。希望大家多多指正,谢谢!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值