大数据基础之Flume——Flume基础及Flume agent配置以及自定义拦截器

本文详细介绍了Flume,一种高效、可靠的分布式日志收集系统。Flume支持多种数据源,包括文件、HTTP和Avro,数据通过管道传输至HDFS、Kafka等目的地。文章还提供了多个实用配置案例,帮助读者快速上手。

Flume简介

  • Flume用于将多种来源的日志以流的方式传输至Hadoop或者其他目的地
      - 一种可靠、可用的高效分布式数据收集服务
  • Flume拥有基于数据流上的简单灵活架构,支持容错、故障转移与恢复
  • 由Cloudera 2009年捐赠给Apache,现为Apache顶级项目

Flume架构

  • Client:客户端,数据产生的地方,如Web服务器
  • Event:事件,指通过Agent传输的单个数据包,如日志数据通常对应一行数据
  • Agent:代理,一个独立的JVM进程
      - Flume以一个或多个Agent部署运行
      - Agent包含三个组件
       - Source
       - Channel
       - Sink
    在这里插入图片描述

Flume工作流程:

在这里插入图片描述

因为Flume的配置每种文件源、管道、输出在官网上都有详细的讲解和配置案例,搭配过多,我这里就不一一展示,仅展示一些工作中经常用的案例

source(源)

Spooling Directory Source

从磁盘文件夹中获取文件数据,可以避免重启或者发送失败后数据丢失,还可以用于监控文件夹新文件

属性 缺省值 描述
Type - spooldir
spoolDir - 需要读取的文件夹的路径
fileSuffix .COMPLETED 文件读取完成后添加的后缀
deletePolicy never 文件完成后删除策略:never和immediate

Http源

用于接收HTTP的GET和POST请求

属性 缺省值 描述
Type - http
port - 监听的端口号
bind 0.0.0.0 绑定IP
handler org.apache.flume.source.http.JSONHandler 数据处理程序类全名

avro源

监听Avro端口,并从外部Avro客户端接收events

属性 缺省值 描述
Type - avro
bind - 绑定IP地址
port - 端口
threads - 最大工作线程数量

Channel(管道)

Memory Channel

event保存在Java Heap中,如果允许数据小量丢失,推荐使用

File Channel

event保存在本地文件中,可靠性高,但吞吐量低于Memory Channel

JDBC Channel

event保存在关系数据库中,一般不推荐使用

Kafka Channel

Sinks(输出)

avro sink

作为avro客户端向avro服务端发送avro事件

属性 缺省值 描述
Type - avro
bind - 绑定IP地址
port - 端口
batch-size 100 批量发送事件数量

HDFS sink

将事件写入Hadoop分布式文件系统

属性 缺省值 描述
Type - hdfs
hdfs.path - hdfs文件目录
hdfs.filePrefix FlumeData 文件前缀
hdfs.fileSuffix - 文件后缀

Hive sink

  • 包含分隔文本或Json数据流事件直接进入Hive表或分区
  • 传入的事件数据字段映射到Hive表中相应的列
属性 缺省值 描述
Type - hive
hive.metastore - Hive metastore URI
hive.database - Hive数据库名称
hive.table - Hive表名
serializer - 序列化器负责从事件中分析出字段并将它们映射为Hive表中的列。序列化器的选择取决于数据的格式。支持序列化器的格式:DELIMITED和JSON

HBase sink

属性 缺省值 描述
Type - hbase
table - 要写入的Hbase表名
columnFamily - 要写入的Hbase列簇
zookeeperQuorum - 对应hbase.zookeeper.quorum
znodeParent /hbase zookeeper.znode.parent
serializer org.apache.flume.sink.hbase.SimpleHbaseEventSerializer 一次事件插入一列
serializer.payloadColumn - 列名col1

拦截器

  • 拦截器可以修改或丢弃事件
      - 设置在source和channel之间
  • 内置拦截器
      - HostInterceptor:在event header中插入“hostname”
      - timestampInterceptor:插入时间戳
      - StaticInceptor:插入key-value
      - UUIDInceptor:插入UUID

下面是我总结了集中工作中常用情况的Agent配置文件的案例

1.监控文件夹,并将结果输出到hdfs上

a2.channels=c2
a2.sources=s2
a2.sinks=k2

a2.sources.s2.type=spooldir
a2.sources.s2.spoolDir=/opt/data

a2.channels.c2.type=memory
//设置该通道中最大可存储的event数量
a2.channels.c2.capacity=10000
//每次从source中拿到的event数量
a2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值