Flume基础——上

Flume的作用:

之前学习了Hadoop的hdfs(分布式文件储存系统),MapReduce(分布式计算)。今天学习Flume日志系统,它的作用的是可以对日志进行收集,存储,传输。

Flume中记录日志信息的载体Event:

  1. Event由两部分——headers和body
  2. Flume会将收集到每一条日志封装成一个Event对象 ,所以一个Event就是一条日志
  3. Event本质上是json串,即Flume将收集到的每一条日志封装了一个个的json,一个json就是一个Event
class Add implements Runnable {

    private int step;
    private ChannelProcessor cp;

    public Add(int step, ChannelProcessor cp) {
        this.step = step;
        this.cp = cp;
    }

    @Override
    public void run() {
        int i = 0;
        while (true) {
            // 封装body
            byte[] body = (i + "").getBytes();
            // 封装headers
            Map<String, String> headers =
                    new HashMap<>();
            headers.put("time", System.currentTimeMillis() + "");
            // 在Flume中,需要将数据封装成Event才能传递
            Event e = EventBuilder.withBody(body, headers);
            // 将Event对象放到Channel中
            cp.processEvent(e);
            i += step;
        }
    }

Flume基本组成结构Agent:

  • Source: 用于从数据源来采集数据

AVRO: 接收被AVRO序列化之后的数据,结合AVRO Sink可以实现多级、扇入、扇出流动

Exec: 将一个命令的执行结果作为日志进行收集

SpoolingDirectory:监听指定的目录,如果目录下产生了新的文件,那么会自动的收集新文件中的内容

Netcat:用于监听TCP请求,将TCP请求的内容作为日志进行收集 Sequence

Generator:序列产生器,会不断的产生自增的数字。在实际生产过程中一般是用于测试

HTTP:监听HTTP请求,但是只能监听GET和POST两种请求,然而对GET请求的监听不稳定,所以实际开发中一般只用这个Source来监听POST请求

  • Channel: 用于临时存储数据

Memory:内存通道。这个Channel是将数据临时存储到内存中,特点是读写快但是不可靠。如果考虑吞吐量,那么使用MemoryChannel

File:文件通道。这个Channel是将数据临时存储在磁盘中,特点是可靠但是读写速度相对较慢。如果考虑可靠性,那么使用File Channel

JDBC:将数据临时存储在数据库中。理论上而言,读写速度要高于File Channel但是低于Memory Channel。这个Channel目前只支持Derby,基于Derby的特性,所以这个Channel实际生产过程中不使用 Memory

Spillable:内存溢出通道。将数据临时写到内存中,如果内存中的数据量达到指定的条目数,那么不会阻塞而是会把数据记录到磁盘中。但是这个通道到目前一直处于测试状态,到目前为止一直没有投入生产使用,稳定性未知

  • Sink: 用于将数据发往目的地

Logger:将数据以日志形式打印到控制台上。为了防止屏幕上被日志占满,所以如果数据超过16个字节,超过的部分不打印

File_roll:将数据写到文件上。如果不指定,默认每隔30s生成一个文件存储数据,会产生大量的小文件

HDFS:将数据收集到HDFS上。在收集的时候,数据在HDFS上的存储有3种方式:文本格式、序列格式、压缩格式。同样,如果不指定,也是每隔30s生成1个小文件,导致HDFS产生大量小文件

AVRO:将数据经过AVRO序列化之后写出,结合AVRO Source可以实现多级、扇入、扇出流动

流动模型:

1.单级流动:
在这里插入图片描述
2.多级流动
在这里插入图片描述
3.扇入流动
在这里插入图片描述
4.扇出流动
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛像话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值