flume知识点

分布式日志收集系统

  • sink
    是单线程的
    可以使用Avro sink做汇总
    使用sink组做单点故障和负载均衡

  • channel:
    可选channel:设置source属性selector.optional = channel1b
    复用选择器:
    https://blog.csdn.net/weixin_43093501/article/details/89501497

  • agent:是一个java的进程

  • event
    flume事件由一个可选的header和一个二进制的body组成。
    flume使用两个独立事务分别负责从source到channel以及channel到sink的事件组成。

  • 额外知识:

配置flume(s202)
自定义flume的source,实现记录偏移量
代码:
1.查看开发者文档(不详细)
2.查看自带的source源码编写(execsource)
实现接口,继承父类,重写方法
从配置文件获取属性。
创建线程池(单个),提交任务(线程类),设置休眠。
构造方法:
验证文件存在?
获取偏移量,让文件从指定偏移量读取
run:
读取一行,设置编码,向chancle写数据,更新偏移量并保存
编写stop方法

打包,发到(s202)/flume/lib下
修改集群上flume的配置文件,和自定义的属性匹配

启动flume-ng agent -f …/conf/a1.conf -n a1 -Dflume.root.logger=INFO,console

kafka channel

传统保存log的缺陷:
内存中数据可能有堆积,溢出。
存到文件速度慢。
经历多个组件,效率低,出问题概率大。
优化手段:使用kafka channel作为缓冲(效率高、数据不会丢)

补充:无source(kafka channel+sink)

修改配置文件(基于上一个配置文件修改)

注意:一点要加parseAsFlumeEvent = false
否则,写入kafka的不是文本,而是flume的event事件对象。
创建kafka主题
启动kafka

自定义拦截器:
目的:
将接收到的数据转为json
配置文件:

代码:
先执行Builder内部类,然后执行自定义拦截器
builder生命周期:构造器 -> configure -> build
拦截器主要方法:intercept
从事件中获取body,将数据切割,和字段(配置文件中已定义)匹配,重新填充body

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值