Flume 分布式日志收集系统

Flume 概述

  • 提供的一个高可用的高可靠的分布式海量日志采集、聚合和传输的系统
  • 支持在日志系统中定制各类数据发送方,用于收集数据
  • 提供对数据进行简单处理,并可定制数据接受方

Flume 官方英文文档

运行机制

Flume核心(agent:把 数据 从 数据源(source) 收集 过来,再将 收集到的数据 送到 指定目的地(sink);为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据到channel(临时存储),当Channel存储到一定值时,将数据写入到Sink中,待数据完全传输到目的地(sink)后,Flume再删除自己缓存的数据, agent本身是一个 Java进程,一般运行在日志收集节点

每一个 agent相当于一个数据传递员,内部有三个组件

  • Source采集源,用于跟数据源对接,以采集数据;
  • Sink目的地,采集数据的传送目的,可以是下一级 agent的采集源 或 最终存储系统(HDFS 、Hive 或 Hbase
  • Channel临时存储容器,它将从source处接收到的event格式数据缓存起来,直到它们都到达sinks
    channal是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的sourcesink链接

在整个数据的传输过程中,流动的是 eventFlume内部数据传输的最基本单元,是一个字节数组)

  • event代表着一个数据的最小完整单元,也是事务的基本单位, 本身为一个字节数组Source 流向 Channel 再到 Sink
  • event将传输的数据进行封装,完整的 event包括:event headers 和 event body两部分,其中 event body就是 Flume收集到的日记记录
  • 收集文本文件时,通常一个event代表一行数据

Flume安装部署使用

安装

前置条件:

  • Java 1.7 or later
  • sourceschannelssinks提供充足的内存
  • channles提供充足的磁盘空间
  • agent提供读和写权限

安装步骤:

  1. 上传安装包到数据源所在节点上
  2. 解压 tar -zxvf apache-flume-1.9.0-bin.tar.gz
  3. 进入 flume的目录,修改 conf / flume-env.sh,在里面配置 JAVA_HOME
  4. 配置flume环境变量:
    vi ~/.bash_profile
    
    export FLUME_HOME=/root/bigdata/flume/bin
    export PATH=$FLUME_HOME/bin:$PATH
    
    source /root/.bash_profile
    
  5. 检查是否配置成功:flume-ng version 查看flume版本
  6. 根据数据采集需求在配置文件中书写配置采集方案(文件名可任意自定义)
  7. 启动Flume并运行配置文件Flume路径/Flume-ng agent -n agent名字 -f 配置文件名

配置文件书写

配置 Flume 文件 步骤

  1. Agent、及其下的 source、channal 和 sink 命名
    为提高辨识度,命名格式一般如下:
    Agent命名为:source类型-channel类型-sink类型。如:exec-memory-kafka
    source命名为:source类型-name。如:exec-source
    channal命名为:channal 类型-name。如:memory-channel
    sink命名为:sink类型-name。如:kafka-sink

  2. 选型 并 配置 source

  3. 选型 并 配置 channal

  4. 选型 并 配置 sink

  5. sourcesink 通过channal绑定起来

    Agent名字.sources.source名字.channel=channel名字
    Agent名字.sinks.sink名字.channel=channel名字
    
    例如:
    exec-memory-avro.sources.exec-source.channels = memory-channel
    exec-memory-avro.sinks.avro-sink.channel = memory-channel
    

选型并配置Source

选型及配置格式:

agent名字 . sources . source名字 . type = Source 类型
agent名字 . sources . source名字 . 配置2 = value 
agent名字 . sources . source名字 . 配置3 = value
Avro Source:序列化数据源 通过网络传输

用于监听IP(非必本机,而是网络数据来源地IP) 和端口,用于获取数据
需要指定type,bind,ip、port,其他都可以使用默认配置,并且可以配置拦截IP的请求,对其不进行监听
模板配置如下:
在这里插入图片描述
在这里插入图片描述

ThriftSource:序列化数据源

Avro Source相差无几,但是不支持IP过滤
模板配置如下:
在这里插入图片描述

Exec Source:执行 指定的Linux命令行的数据源

可以运行指定的Unix命令并一直执行,例如:读取文件 作为flume数据的来源
需要配置type 和 运行命令;但不保证数据一定能够输送到channel,如果出现问题,则数据可能丢失
在这里插入图片描述
模板配置如下:
在这里插入图片描述

Spooling Directory Source: 监控指定目录

允许用户把文件放到磁盘上所谓Spooling目录,然后监控指定目录,一旦出现新的文件,就会解析新文件的内容,并传输到定义的sink中,传输过程中的解析逻辑可以自行指定,如果文件读取完毕之后,文件会重命名,或者可选择删除
其可靠性较强,而且即使flume重启,也不会丢失数据,为了保证可靠性,只能是不可变的,唯一命名的文件可以放在目录下,而且文件生成之后,一般不会更改,所以适合离线数据处理
模板配置如下:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值