flume日志采集总结+实战分析+自定义拦截器讲解(全)

一.安装

至官方网站下载flume的安装包,然后上传到moba
解压后,修改conf下的文件名:mv flume-env.sh.template flume-env.sh
打开文件,修改如下配置:

export JAVA_HOME=/opt/jdk1.8.0_221
export JAVA_OPTS="-Xms2048m -Xmx2048m -Dcom.sun.management.jmxremote"

安装其他插件

yum install -y nc  //瑞士军刀称呼
yum list telnet*
yum install -y telnet.*

测试:
server端:
nc -lk 7777
client端:
telnet localhost 7777

二.概述

2.1什么是flume

flume是一个实时日志收集系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力

2.2 特性

1.Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
2.Flume可以采集文件,socket数据包等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中
3.一般的采集需求,通过对flume的简单配置即可实现
4.Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景

三.flume原理

3.1组件

1.Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成
2.每一个agent相当于一个数据(被封装成Event对象)传递员,内部有三个组件:

  • Source:采集组件,用于跟数据源对接,以获取数据
  • Sink:下沉组件,用于往下一级agent传递数据或者往最终存储系统传递数据
  • Channel:传输通道组件,用于从source将数据传递到sink
    在这里插入图片描述

四.flume实战详解

4.1编写一个agent配置文件

1.新建.conf的文件夹:[root@hadoop flume]# vi./conf/jobkb09/netcat-flume-logger.conf


# 定义这个agent中各组件的名字
a1.sources=r1
a1.channels=c1
a1.sinks=k1

# 描述和配置source组件:r1
a1.sources.r1.type=netcat
a1.sources.r1.bind=localhost
a1.sources.r1.port=7777

# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=1000

# 描述和配置sink组件:k1
a1.sinks.k1.type=logger

# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

2.启动agent去采集数据

./bin/flume-ng agent --name a1 --conf ./conf/ --conf-file ./conf/jobkb09/netcat-flume-logger.conf -Dflume.root.logger=INFO,console
//注意 a1 和conf的文件名需要改动,其他格式不变

3.测试
新开一个窗口,输入:telnet local host 7777即可
可以编辑,并在server端都有展示,说明测试成功

4.11练习:Exec Source遍历Linux文件目录

1.创建一个脚本文件

#!/bin/bash
for i in /root/*
do
  echo $i
done

2.编写source-exec配置文件

a1.sources=s1
a1.channels=c1
a1.sinks=sk1
# 对source的一些设置 exec,代表需要执行一条命令
a1.sources.s1.type=exec
//指定脚本文件
a1.sources.s1.command=bash /root/flume_conf/echoPaths.sh

# 对channel的一些设置
a1.channels.c1.type=memory
# 对sink的一些设置
a1.sinks.sk1.type=logger

a1.sources.s1.channels=c1
a1.sinks.sk1.channel=c1

3.运行flume,打印出所有的文件夹

flume-ng agent --name a1 -f source-exec.conf -Dflume.root.logger=INFO,console

4.2表格数据分析

上传数据表events.csv到tmp文件夹下
1.新建文件夹:

vi ./conf/jobkb09/events-flume-logger.conf 

输入如下

events.sources=eventsSource
events.channels=eventsChannel
events.sinks=eventsSink

events.sources.eventsSource.type=spooldir //收集的数据来源外部文件
events.sources.eventsSource.spoolDir=/opt/flume/conf/jobkb09/dataSourceFile/events//events要在上一级目录创建好
events.sources.eventsSource.deserializer=LINE
events.sources.eventsSource.deserializer.maxLineLength=10000
events.sources.eventsSource.includePattern=events_[0-9]{
  4}-[0-9]{
  
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值