Flume简介

摘自:https://flume.apache.org/FlumeUserGuide.html

是什么:

Flume是一个用来收集聚合海量多来源日志数据并转移到一个数据存储中心的分布式,可依赖,高可用,高性能服务框架。他基于流数据提供简单灵活的架构。具有健壮性,容错性。他提供了一个简单可扩展的数据模型来支持在线分析应用。

Flume的数据流模型:

一个 Flume代理由源(数据收集器)、通道(数据暂存区)、水槽(数据转发器)构成,外部数据源以一种目标Flume源能识别的格式将事件传输到Flume上,Flume接收到事件后,会将它存到一个或多个通道里,水槽会从通道里取数据放到下一个Flume代理的源里或者直接放到HDFS等外部存储库中,通道会在水槽消费完数据前保存数据。

Flume支持单跳多跳(事件经过多个代理)。

Flume通过通道和事务来保证数据的可用性可恢复性

设置:

代理设置:

Flume的代理是通过一个本地配置文件进行设置,这个文件是遵循Java properties文件格式的

文本文件。多个代理可以在同一个配置文件里进行配置,配置文件包含代理里每个源,通道

,水槽的属性以及这些代理组合成数据流的方式。

单个组件设置:

流里的每个组件(源、通道和水槽)都有一个名字,类型和对应其类型与实例的特定的属性集。

(比如一个Avro源需要一个主机名或者IP地址,一个端口号;一个HDFS水槽需要有文件系统的URI,创建文件的路径,文件滚动时间间隔)

组件组合:

在代理里列出每个组件(源,水槽,通道)的名字,然后指定每个水槽和源的连接通道。

启动一个代理:

$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

一个简单的例子:

下面的例子描述了一个单节点(名为a1的代理)的Flume配置,实现了生成事件然后输出日志到控制台。

# 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

启动

$ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console

注意:conf后面跟的conf目录下期望有一个名为flume-env.sh的shell脚本,和一个log4j的

properties文件。这个例子里日志是输到控制台上,所以不需要自定义的环境脚本。

在另外一个终端中远程连接44444端口,发送事件给Flume:

$ telnet localhost 44444 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is ‘^]‘. Hello world! <ENTER> OK 

原来的Flume终端将会输出下列日志信息

12/06/19 15:32:19 INFO source.NetcatSource: Source starting 12/06/19 15:32:19INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444] 12/06/19 15:32:34 INFO sink.LoggerSink: Event: { headers:{} body: 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D Hello world!. }

这样就部署了一个简单的Flume代理。

更详细的配置:

配置文件里使用环境变量:

https://flume.apache.org/FlumeUserGuide.html#using-environment-variables-in-configuration-files

未完待续。。。

时间: 2024-11-23 07:15:16

Flume简介的相关文章

Flume简介与使用(二)——Thrift Source采集数据

Flume简介与使用(二)——Thrift Source采集数据 继上一篇安装Flume后,本篇将介绍如何使用Thrift Source采集数据. Thrift是Google开发的用于跨语言RPC通信,它拥有功能强大的软件堆栈和代码生成引擎,允许定义一个简单的IDL文件来生成不同语言的代码,服务器端和客户端通过共享这个IDL文件来构建来完成通信. Flume的Thrift Source是其实现的众多Source中的一个,Flume已经实现了服务器端,因此我们可以用任意自己熟悉的语言编写自己的Th

Flume简介与使用(一)

Flume简介 Flume是一个分布式的.可靠的.实用的服务——从不同的数据源高效的采集.整合.移动海量数据. 分布式:可以多台机器同时运行采集数据,不同Agent的之前通过网络传输数据 可靠的:Flume会将采集的数据缓存在Channel里,当Sink确认数据被接收了后才会从Channel里删除 实用的:Flume的使用是非常简单可用的,易于扩展,只需要修改配置文件的选项,就可以定制不同的Source.Channel.Sink,这得益于其精妙的设计 Agent是Flume的一个JVM进程,其中

Flume简介与使用(三)——Kafka Sink消费数据之Kafka安装

前面已经介绍了如何利用Thrift Source生产数据,今天介绍如何用Kafka Sink消费数据. 其实之前已经在Flume配置文件里设置了用Kafka Sink消费数据 agent1.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink agent1.sinks.kafkaSink.topic = TRAFFIC_LOG agent1.sinks.kafkaSink.brokerList = 10.208.129.3:90

flume简介与监听文件目录并sink至hdfs实战

场景 1. flume是什么 1.1 背景 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用.Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera.但随着 FLume 功能的扩展,Flume OG 代码工程臃肿.核心组件设计不合理.核心配置不标准等缺点暴露出来,尤其是在 Flume OG 的最后一个发行版本 0.94.0 中,日志传输不稳定的现象尤为严重,为了解决这些问题,2011 年 1

日志收集系统Flume调研笔记第1篇 - Flume简介

用户行为数据的收集无疑是构建推荐系统的先决条件,而Apache基金会下的Flume项目正是为分布式的日志收集量身打造的,本文是Flume调研笔记的第1篇,主要介绍Flume的基本架构,下篇笔记将会以实例说明Flume的部署和使用步骤. 本文所用的Flume版本为目前最新版的ver1.5.2,它属于Flume-NG,在系统架构上与Flume-OG有所区别,二者的不同可以参考FlumeWiki文档的说明. 1. Flume是什么 Flume是Apache基金会下的一个开源项目,它实现了一套分布式的.

flume简介(一)

绪论: 本文的内容包括flume的背景.数据流模型.常见的数据流操作.flume agent启动和flume agent简单实例.参考文档为flume官网的flume1.8.0 FlumeUserGuide. 一.背景 flume是由cloudera软件公司产出的可分布式日志收集系统,2009年被捐赠给apache软件基金会,目前是apache的一个顶级项目. flume是一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,值得注意的是,由于传输的数据是可定制的,因此flume不仅可

(01)Flume简介

1.Flume简单介绍 Apache Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. 2.Flume体系结构 工作流程: (1)外部数据源(web server)将Flume可识别的Event发送到Source; (2)Source收到Event后存储到一个或多个Channel中; (3)Channel保留E

HAProxy + Keepalived + Flume 构建高性能高可用分布式日志系统

一.HAProxy简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理. HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 二.Keepalived简介 它是一个基于VRRP协议来实现的WEB服务高可用方案,

日志系统之Flume日志收集

最近接手维护一个日志系统,它用于对应用服务器上的日志进行收集然后提供实时分析.处理并最后将日志存储到目标存储引擎.针对这三个环节,业界已经有一套组件来应对各自的需求需求,它们是flume+kafka+hdfs/hbase.我们在实时分析.存储这两个环节,选择跟业界的实践相同,但agent是团队自己写的,出于对多种数据源的扩展需求以及原来收集日志的方式存在的一些不足,于是调研了一下flume的agent.结果是flume非常契合我们的实际需求,并且拥有良好的扩展性与稳定性.于是打算采用flume的