Flume小结

1)Flume组成

Flume是由source、channel、sink组成。

开发中经常用到的组件:

Taildir Source:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。

File Channel:数据存储在磁盘,但是传输速率慢。适合对数据传输可靠性要求高的场景,比如,金融行业。

Memory Channel:数据存储在内存中,传输速率快。适合对数据传输可靠性要求不高的场景,比如,普通的日志数据。

Kafka Channel:减少了Flume的Sink阶段,提高了传输效率。

2)Flume拦截器

自定义拦截器步骤:

     a)实现 Interceptor

     b)重写四个方法

           initialize 初始化

           public Event intercept(Event event) 处理单个Event

           public List<Event> intercept(List<Event> events) 处理多个Event,在这个方法中调用Event intercept(Event event)

           close 方法

    c)静态内部类,实现Interceptor.Builder

package com.haoxin.flume;
import org.apache.flume.Context;
import org.apache.flume.Event;
import org.apache.flume.interceptor.Interceptor;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * 来简单的清洗数据
 */
public class LogInterceptor implements Interceptor {

    @Override
    public void initialize() {

    }

    /**
     *处理多单个event
     */
    @Override
    public Event intercept(Event event) {
        //1.获取数据
        byte[] body = event.getBody();
        String log = new String(body, Charset.forName("UTF-8"));
        
         此处省略
        return null;
    }

    /**
     *处理多个event,判读不为空的event 加入list中
     */
    @Override
    public List<Event> intercept(List<Event> list) {

        ArrayList<Event> events = new ArrayList<>();
        for (Event e:list
             ) {
            Event intercept1 = intercept(e);
            if (intercept1 != null){
                events.add(intercept1);
            }

        }
        return events;
    }

    @Override
    public void close() {

    }

    /**
     * 建静态内部类builder
     */
    public static class Builder implements Interceptor.Builder{
        @Override
        public void configure(Context context) {

        }

        @Override
        public Interceptor build() {
            return new LogInterceptor();
        }
    }
}

3)Flume Channel选择器

channel选择器有replicating和multiplexing。它俩的区别是:replicating会将source过来的events发往所以channel,而multiplexing可以选择发往哪些channel。

4)Flume 监控器

Ganglia可以很好的监控flume的传输。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值