flume学习一:flume基础知识

一.Flume使用的前提:

Flume使用 java编写,其需要运行在
Java1.6或更高版本之上。

二.Flume的定义:

Flume是一个分布式、可靠、高效可用的海量日志采集、聚合和传输系统,支持在系统中定制各类数据发送方,用于搜集数据;同时,flume提供对数据进行加单处理,并写到各种数据接受方(可定制)的能力。

核心一句话:将数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓冲数据,待数据真正到的目的地后,删除自己缓冲的数据。

三.组件及作用:

1.source:从client端收集数据,传递个channel。直接读取:文件source的有两种方式:

ExecuteSource:以运行linux命令的方式,持续的输出最新的数据,如tail
–f 文件名指令,在这种方式下取的文件名必须是指定的。

SpoolSource:检测配置的目录下新增的文件,并将文件中的数据读取出来。

2.channel:缓冲数据,连接sources和sinks,有点像队列。类型有MemoryChannel,JDBC
Channel,FileChannel等。

3. sink:从channel收集数据,运行一个独立线程。可以向文件系统、数据库、hadoop存储数据。

在日志数据较少时,可以将数据存储在文件系统中,并且设定一定的时间间隔保存数据。

在日志数据较多时,可以将相应的日志存储到hadoop中,便于日后进行相应的数据分析。

组件名称功能介绍


Agent代理


使用JVM运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。


Client客户端


生产数据,运行在一个独立的线程。


Source源


从Client收集数据,传递给Channel。


Sink接收器


从Channel收集数据,进行相关操作,运行在一个独立线程。


Channel通道


连接 sources和 sinks
,这个有点像一个队列。


Events事件


传输的基本数据负载。

四.Flume的整体构成图

源将事件写到一个多或者多个通道中。

接收器只从一个通道接收事件。

代理可能会有多个源、通道与接收器

Event是flume数据传输的基本单元,flume以事件的形式将数据从源头传送到目的地。

一个 Event 由 Map<String,String>Headers 和 byte[]
body
 组成,其中 Headers 保存了 Event 的属性,body 保存了 Event 的内容。

Source:负责接收events或通过特殊机制产生events,并将events批量的放到一个或多个channels。

Channel位于sources和sinks之间,用于缓存进来的events,当sink成功的将events发送到下一跳的channel或最终目的,events从channel移除。

Sink:负责将events传输到吓一跳或最终目的,成功完成后将events从channel移除。

五.常见错误:

Could not configure sink  sink1 due to:No channel configured for sink: sink1

org.apache.flume.conf.ConfigurationException: No channel configured for sink:sink1

则仔细查看配置文件,一个source可以对应多个channel,所以是channels,agent.sources.source1.channels
= channel1,

但是一个sink对应一个channel,所以是channel,agent.sinks.sink1.channel
=channel1,请注意。

六.常见各组件支持的类型:

Flume Source
支持的类型:


Source类型


说明


Avro  Source


支持Avro协议(实际上是Avro RPC),内置支持


Thrift  Source


支持Thrift协议,内置支持


Exec  Source


JMS  Source


从JMS系统(消息、主题)中读取数据,ActiveMQ已经测试过


Spooling  Directory Source


监控指定目录内数据变更


Twitter  1% firehose Source


通过API持续下载Twitter数据,试验性质


Netcat  Source


监控某个端口,将流经端口的每一个文本行数据作为Event输入


Sequence  Generator Source


序列生成器数据源,生产序列数据


Syslog  Sources


读取syslog数据,产生Event,支持UDP和TCP两种协议


HTTP  Source


基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式


Legacy  Sources


兼容老的Flume OG中Source(0.9.x版本)

Flume Channel支持的类型:


Channel类型


说明


Memory  Channel


Event数据存储在内存中


JDBC  Channel


Event数据存储在持久化存储中,当前Flume Channel内置支持Derby


File  Channel


Event数据存储在磁盘文件中


Spillable  Memory Channel


Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)


Pseudo  Transaction Channel


测试用途


Custom  Channel


自定义Channel实现

Flume Sink支持的类型


Sink类型


说明


HDFS  Sink


数据写入HDFS


Logger  Sink


数据写入日志文件


Avro  Sink


数据被转换成Avro Event,然后发送到配置的RPC端口上


Thrift  Sink


数据被转换成Thrift Event,然后发送到配置的RPC端口上


IRC  Sink


数据在IRC上进行回放


File  Roll Sink


存储数据到本地文件系统


Null  Sink


丢弃到所有数据


HBase  Sink


数据写入HBase数据库


Morphline  Solr Sink


数据发送到Solr搜索服务器(集群)


ElasticSearch  Sink


数据发送到Elastic Search搜索服务器(集群)


Kite  Dataset Sink


写数据到Kite Dataset,试验性质的


Custom  Sink


自定义Sink实现

七各种组件的特性:

(1)可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store
on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best
effort(数据发送到接收方后,不会进行确认)。

(2)可扩展性

Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。

(3)可管理性

所有agent和colletor由master统一管理,这使得系统便于维护。多master情况,Flume利用ZooKeeper和gossip,保证动态配置数据的一致性。用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume提供了web和shell
scriptcommand两种形式对数据流进行管理。

(4)功能可扩展性

用户可以根据需要添加自己的agent,collector或者storage。此外,Flume自带了很多组件,包括各种agent(file,
syslog等),collector和storage(file,HDFS等)。

时间: 2024-11-03 17:59:56

flume学习一:flume基础知识的相关文章

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

[Golong]学习笔记(一) 基础知识

Go编程基础 Go的内置关键字(25个) 不多 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continute for import return var Go的注释方法(和js一样) 单行注释: // 多行注释: /**/ Go程序一般结构 common_structure.go 通过 pack

如何学习FPGA?FPGA学习必备的基础知识

如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA   基础知识 FPGA已成为现今的技术热点之一,无论学生还是工程师都希望跨进FPGA的大门.网络上各种开发板.培训班更是多如牛毛,仿佛在告诉你不懂FPGA你就OUT啦.那么我们要玩转FPGA必须具备哪些基础知识呢?下面我们慢慢道来. (一) 要了解什么是FPGA 既然要玩转FPGA,那我们首先最重要的当然是要了解什么FPGA.FPGA(Field-Programmable Gate

[算法学习笔记]算法基础知识

算法基础知识 算法的五大要素 有穷性:算法必须能够在有限个步骤内完成. 确定性:算法的每一步必须有确定的定义. 输入 输出 可行性:算法的每个步骤都必须能分解为基本的可执行操作,每个步骤都必须能在有限时间内完成 循环不变式 循环中的循环不变式可以帮助我们理解算法的正确性.为了证明算法的正确,必须证明循环不变式的三个性质: 1. 初始化:循环不变式在循环开始之前是正确的. 2. 保持:循环不变式在循环的每一次迭代开始之前是正确的. 3. 终止:在循环结束时,不变式会给出一个可以对判断算法是否正确有

《汇编语言》学习笔记1——基础知识

第一章   基础知识 汇编语言的组成 汇编指令:机器码的助记符,有对应的机器码(汇编语言的核心) 伪指令:没有对应的机器码,由编译器执行,计算机并不执行 其他符号:如:+.-.*./等,由编译器识别,没有对应的机器码 指令和数据都是应用上的概念,在内存或磁盘上指令和数据都是二进制信息. 存储器被划分为若干个存储单元,每个存储单元从0开始. 一个存储器有128个存储单元,一个存储单元存储一个字节,一个字节有8个二进制位. 内存换算: 1bit=8byte(B).1KB=1024B.1MB=1024

Scala学习笔记--正则表达式基础知识、如何在scala内使用

正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www.jb51.net/tools/zhengze.html  版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源 使用格式:  见java API  http://docs.oracle.com/javase/7/docs/api/ java : java.util.reg

性能测试学习09_分析基础知识

一.基础知识 1.controller的原理 通过场景设计来模拟用户的真实操作并调用vugen中的脚本,然后通过设置压力机产生压力,在场景运行中实时监控用户的执行情况,tps.响应时间.吞吐量.服务器资源使用情况 二.contrller 1.功能截图介绍 2.为什么java vuser协议以进程跑? java vuser协议以线程跑,发现压力根本上不去,还需要实际操作进行研究. 3.创建集合点 1)在事物前一行右键,[insert]→[rendezvous] 2)如图,创建成功 2)回到cont

深度学习FPGA实现基础知识5(网友一致认可的----Deep Learning(深度学习)学习笔记整理及完整版下载)

需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/zouxy09/article/details/8775360/ Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-04-08   声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文

深度学习FPGA实现基础知识0(FPGA击败GPU和GPP,成为深度学习的未来?)

需求说明:深度学习FPGA实现知识储备 来自:http://power.21ic.com/digi/technical/201603/46230.html FPGA击败GPU和GPP,成为深度学习的未来? 最近几年,深度学习成为计算机视觉.语音识别.自然语言处理等关键领域中所最常使用的技术,被业界大为关注.然而,深度学习模型需要极为大量的数据和计算能力,只有更好的硬件加速条件,才能满足现有数据和模型规模继续扩大的需求.现有的解决方案使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGP

汇编学习笔记---(2)基础知识

今天,接着上次,继续学习汇编语言,主要对内存地址空间.主板.接卡口.存储芯片等进行了解. 什么是内存地址空间? 要搞清楚这个问题,我们首先要知道主板和接口卡. 每个PC都会有一个主板,主板上附有核心器件,包括CPU.存储器.外围芯片组.扩展插槽等,它们通过地址总线+数据总线+控制总线相连. 接口卡啥作用,说白了就是通过总线接收CPU发送的命令,对显示器.音响等外部设备进行控制. 一台PC中主要有两种存储器:随机存储器RAM和只读存储器ROM. RAM中用于存放CPU使用的绝大部分程序和数据,PC