Flume安装与使用

Apache Flume是一个分布式数据收集系统,能够可靠地聚合和传输大量日志数据。本文详细介绍了Flume的安装、数据处理模型,包括Source、Channel、Sink和Event的概念,并提供了监听端口、文件导入Hive、文件导入HDFS以及文件内容写入HBase的实战案例。
摘要由CSDN通过智能技术生成

Flume的安装与使用

FLume简介

Apache Flume是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和将大量日志数据从许多不同的源转移到集中的数据存储中。

Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,Flume可以用来传输大量的事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息以及几乎所有可能的数据源。

Flume结构

数据处理模型

Flume内部有一个或者多个Agent,然而对于每一个Agent来说,它就是一个独立的守护进程(JVM),它从客户端哪儿接收数据,或者从其他的 Agent接收,然后迅速的将获取的数据传给下一个目的节点sink,或者agent。

Source

source 负责数据的产生或搜集,一般是对接一些RPC的程序或者是其他的flume节点的sink,从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道Channel,Flume提供多种数据接收的方式,比如包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义

[外链图片转存失败(img-rCNTwY34-1562945945270)(img/sources01.png)]

Channel

​ Channel 是一种短暂的存储容器,负责数据的存储持久化,可以持久化到jdbc,file,memory,将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,可以把channel看成是一个队列,队列的优点是先进先出,Flume比较看重数据的传输,因此几乎没有数据的解析预处理。仅仅是数据的产生,封装成event然后传输。数据只有存储在下一个存储位置(可能是最终的存储位置,如HDFS;也可能是下一个Flume节点的channel),数据才会从当前的channel中删除。这个过程是通过事务来控制的,这样就保证了数据的可靠性。

[外链图片转存失败(img-7eSvd5lG-1562945945271)(img/channel01.png)]

Sink

​ sink 负责数据的转发,将数据存储到集中存储器比如Hbase和HDFS,它从channel消费数据(events)并将其传递给目标地。目标地可能是另一个sink,也可能是hdfs、logger、avro、thrift、ipc、file、null、Hbase、solr、自定义等

[外链图片转存失败(img-cYAx4zPm-1562945945271)(img/sink01.png)]

Event

Event(事件)作为Flume内部数据传输的最基本单元.它是由一个转载数据的字节数组(该数据组是从数据源接入点传入,并传输给传输器,也就是HDFS/HBase)和一个可选头部构成.

典型的Flume 事件如下面结构所示:

[外链图片转存失败(img-pM49lMsy-1562945945271)(img/exent01.png)]

​ 我们在将event在私人定制插件时比如:flume-hbase-sink插件是,获取的就是event然后对其解析,并依据情况做过滤等,然后在传输给HBase或者HDFS.

[外链图片转存失败(img-TYDyYbxE-1562945945271)(D:\学习笔记\HBASE\img\flowmodel.png)]

[外链图片转存失败(img-pNDnJvRC-1562945945271)(D:\学习笔记\HBASE\img\flume02.png)]

​ Flume使用事务方法来保证事件的可靠交付。源和汇分别封装在事务中,存储/检索由通道提供的事务放置或提供的事件。这确保了事件集在流中的点与点之间可靠地传递。对于多跳流,来自上一跳的接收器和来自下一跳的源都运行它们的事务,以确保数据安全地存储在下一跳的通道中。

​ 事件在通道中暂存,通道负责管理故障恢复。Flume支持由本地文件系统支持的持久文件通道。还有一个内存通道,它简单地将事件存储在内存队列中,速度更快,但是当代理进程死亡时,仍然留在内存通道中的任何事件都无法恢复。

简单示例

生成事件并打印到控制台。

1.新建一个example.conf,其内容如下所示:

# example.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2.执行命令运行flume

flume-ng agent -n a1 -c . -f example.conf

3.与本机44444端口通信

yum -y install telntp

[外链图片转存失败(img-hvDGpdqS-1562945945272)(D:\学习笔记\HBASE\img\flume03.png)]

定义一个agent语法

# list the sources, sinks and channels for the agent
<Agent>.sources = <Source>
<Agent>.sinks = <Sink>
<Agent>.channels = <Channel1> <Channel2>

# properties for sources
<Agent>.sources.<Source>.<someProperty> 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值