Flume简单学习

一、Flume基础部分

参考网址:Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了

在线作图工具:ProcessOn思维导图流程图-在线画思维导图流程图_在线作图实时协作

Apache Flume 是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具。

数据大概分为三类:

1、日志数据--文本文档

2、业务数据--各种数据库

3、第三方数据--买的,别人给的、爬取的

对flume的理解:flume 其实就是水管  数据起始就是水,将水引入到不同的容器中

Sqoop -- 一般用于采集数据库中的数据
Flume -- 一般采集我们的日志数据   user.log

Flume 其实可以看做一个水管。一头接着水源,一头接着桶,从水源地抽取数据到桶里去。

Agent :  是Flume中的基本单位,一个Flume配置文件,可以有多个Agent.
每一个Agent中有三个组件组成,缺一不可:
1、Source  来源,数据过来的地方
2、channel 通道   传递数据用的通道,一般比较的长,一个Channel中可以存储多个数据
3、Sink    数据下沉的地方
4、event   一个event就是一个数据单元(一条数据)

二、安装

tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/installs/
mv apache-flume-1.9.0-bin/ flume

在企业中安装软件起始有两个地方比较常见:
/usr/local/
也可以安装在 /opt/installs
配置环境变量
export FLUME_HOME=/opt/installs/flume
export PATH=$PATH:$FLUME_HOME/bin

刷新配置
source /etc/profile

配置flume配置文件——flume-env.sh
修改 JAVA_HOME 的路径为自己的 jdk 路径:
export JAVA_HOME=/opt/installs/jdk

3、flume的数据模型

单一数据模型 只有一个Agent

多数据流模型

flume抽取数据的速度快吗?最大的速度有多快?最大速度也不能超过磁盘的读写速度,磁盘一秒钟最多写多少? 100M/S

4、关于flume的使用

flume 的使用是编写 conf文件的,运行的时候指定该文件

# 定义组件的名字
<Agent>.sources = <Source>
a1.sources=s1
<Agent>.channels = <Channel1> <Channel2>
a1.channels=c1
<Agent>.sinks = <Sink>
a1.sinks=sink1

# 设置source 和 channel 之间的关系
<Agent>.sources.<Source>.channels = <Channel1> <Channel2> ...
a1.sources.s1.channels=c1

# 设置sink 和 channel 之间的关系
<Agent>.sinks.<Sink>.channel = <Channel1>
a1.sinks.sink1.channel=c1

先定义agent的名字,再定义agent中三大组件的名字
接着定义各个组件之间的关联关系

5、案例展示

Avro+Memory+Logger【主要用于演示,没有实战意义】

  1. avro: 是监听某个端口是否有信息的工具

  2. memory: 内存

  3. logger: 控制台

  4. 演示一个场景:给服务器上的一个端口发送消息,消息经过内存,打印到控制台上。

 

安装flume和以下内容均可在FinalShell上完成

在flume文件夹下创建一个文件夹 myconf,用于存放我们写好的文件 

进入后创建 avro-memory-log.conf

将配置文件,如下的内容拷贝进去

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = bigdata01
a1.sources.r1.port = 4141

a1.channels.c1.type = memory

a1.sinks = k1
a1.sinks.k1.type = logger
a1.sinks.k1.channel = c1

先启动flume-ng

flume-ng agent -c ../ -f avro-memory-log.conf -n a1 -Dflume.root.logger=INFO,console

-c  后面跟上 配置文件的路径
-f  跟上自己编写的conf文件
-n  agent的名字
-Dflume.root.logger=INFO,console   INFO 日志输出级别  Debug,INFO,warn,error 等

接着向端口中发送数据:

flume-ng avro-client -c /opt/installs/flume/conf/ -H bigdata01 -p 4141 -F /home/hivedata/arr1.txt

给avro发消息,使用avro-client

flume是没有运行结束时间的,它一直监听某个Ip的端口,有消息就处理,没消息,就等着,反正不可能运行结束。

如果想停止,可以使用ctrl + c 终止flume。

tailDir + Memory + HDFS [ 非常常用 ]

tailDir 是用来监控多个文件夹下的多个文件的,只要文件内容发生变化,就会再次的进行数据的抽取

在flume/conf/myconf下创建xxx.conf文件并配置xxx.conf文件

a1.sources = r1
a1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.filegroups = f1
# . 代表的意思是一个任意字符   * 代表前面的字符出现0到多次
a1.sources.r1.filegroups.f1 = /home/scripts/datas/.*txt.*


a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000

a1.sinks = k1
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume3/logs

运行配置文件(先切换到flume/conf/myconf):

flume-ng agent -c ./ -f taildir_memory_hdfs.conf -n a1 -Dflume.root.logger=INFO,console

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值