Flume开发中遇到的问题及优化方法

Flume开发中遇到的问题及优化方法

source

tailDir source:
(1)优点:
1)断点续传
2)多目录访问
Flume版本 Apache1.7、CDH1.6
(2)taildir挂了怎么办?
不会丢数:断点续传
(3)怎么处理重复数据?
不处理:生产环境通常不处理,因为会影响传输效率;
处理:
自身:在taildirsource里面增加自定义事务 (但是会影响flume的处理速度)
找兄弟:下一级处理(hive dwd sparkstreaming flink布隆)、去重手段(groupby、开窗取窗口第一条)

channel

1.FIle channel
优点:存储在本地磁盘,可靠性高
缺点:效率不高
用途:对于一些比较关心数据的可靠性的公司或项目 会选择File channel
event条数:1000000
2.memory channel
优点:基于内存,效率高
缺点:可靠性低
用途:对于一些大量的日志文件即使丢个100条几乎没有影响的会选择 memory channel
event条数:100
3.kfka channel
优点:基于kafka内部存储,基于磁盘,可靠性高,效率高于memory channel + kafka sink ;因为省去了sink阶段
缺点:在Flume1.6 版本时 发送的数据为 topic + 内容 parseAsFlumeEvent这个参数无论 选择true / false 都没有作用 但是在flume1.7版本修复了此bug
用途:对于sink端是kafka的时候优先选择

sink

1.hdfs sink
解决大量小文件问题
hdfs.rollInterval 30(默认值) (时间在工作中会选择3600/7200)多长时间发送一次数据
hdfs.rollSize 1024(默认值) (大小在工作中会选择128M)多大发送一次数据
hdfs.rollCount 10(默认值) (event个数在工作中会选择0)不以event的个数作为要求
压缩
开启压缩流;指定压缩编码方式(lzop/snappy)
hdfs.codeC : gzip, bzip2, lzo, lzop, snappy

案例

Taildir source + kafka channel

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

#source
a1.sources.r1.type=TAILDIR
a1.sources.r1.positionFile = /opt/module/flume/test/log_position.json
a1.sources.r1.filegroups = f1 //此处体现多目录访问可以选择多个用户
a1.sources.r1.filegroups.f1 = /opt/module/hive//logs/*
a1.sources.r1.fileHeader = true

#channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers=localhost1:9092,localhost2:9092,localhost3:9092
a1.channels.c1.kafka.topic = topic_1
a1.channels.c1.parseAsFlumeEvent = false //去除 topic 只要内容
a1.channels.c1.kafka.consumer.group.id = flume-consumer

a1.sources.r1.channels = c1

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值