一:介绍

Flume 是 Cloudera 提供的日志收集系统,具有分布式、高可靠、高可用性等特点,对海量日志采集、聚合和传输,Flume 支持在日志系统中定制各类数据发送方,同时,Flume 提供对数据进行简单处理,并写到各种数据接受方的能力。
Flume 使用 java 编写,其需要运行在 Java1.6 或更高版本之上。
官方网站:http://flume.apache.org/
用户文档:http://flume.apache.org/FlumeUserGuide.html
开发文档:http://flume.apache.org/FlumeDeveloperGuide.html

二:架构数据流

Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。
Flume 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。Event 从 Source,流向Channel,再到 Sink,本身为一个 byte 数组,并可携带 headers 信息。Event 代表着一个数据流的最小完整单元,从外部数据源来,向
外部的目的地去。Flume 运行的核心是 Agent。它是一个完整的数据收集工具,含有三个核心组件,分别是 source、channel、sink。通过这些组件,Event 可以从一个地方流向另一个地方

source 可以接收外部源发送过来的数据。不同的 source,可以接受不同的数据格式。比如有目录池(spooling directory)数据源,
可以监控指定文件夹中的新文件变化,如果目录中有文件产生,就会立刻读取其内容。
channel 是一个存储地,接收 source 的输出,直到有 sink 消费掉 channel 中的数据。channel 中的数据直到进入到下一个
channel 中或者进入终端才会被删除。当 sink 写入失败后,可以自动重启,不会造成数据丢失,因此很可靠。sink 会消费 channel 中的数据,然后送给外部源或者其他
source。如数据可以写入到 HDFS 或者 HBase 中。flume 允许多个 agent 连在一起,形成前后相连的多级跳。

三:核心组件

source
Client 端操作消费数据的来源,Flume 支持 Avro,log4j,syslog和 http post(body 为 json 格式)。可以让应用程序同已有的 Source直接打交道,如 AvroSource,SyslogTcpSource。也可以写一个Source,以 IPC(进程间通信协议) 或 RPC(远程进程间通信协议) 的方 式 接 入 自 己 的 应 用 , Avro 和 Thrift 都 可 以 ( 分 别 有NettyAvroRpcClient 和 ThriftRpcClient 实现了 RpcClient 接口),其中 Avro 是默认的 RPC 协议。具体代码级别的 Client 端数
据接入,可以参考官方手册。对现有程序改动最小的使用方式是使用是直接读取程序原来记录的日志文件,基本可以实现无缝接入,不需要对现有程序进行任何改动。 对于直接读取文件 Source,有两种方式:
ExecSource: 以运行 Linux 命令的方式,持续的输出最新的数据,如 tail -F 文件名 指令,在这种方式下,取的文件名必须是指定的。 ExecSource 可以实现对日志的实时收集,但是存在 Flume 不运行或者指令执行出错时,将无法收集到日志数据,无法保证日志数
据的完整性。
SpoolSource: 监测配置的目录下新增的文件,并将文件中的数据读取出来。需要注意两点:拷贝到 spool 目录下的文件不可以再打开编辑;spool 目录下不可包含相应的子目录。SpoolSource 虽然无法实现实时的收集数据,但是可以使用以分钟的方式分割文件,趋近于实时。如果应用无法实现以分钟切割日志文件的话,可以两种收集方式结合使用。 在实际使用的过程中,可以结合 log4j 使用,使用log4j 的时候,将 log4j 的文件分割机制设为1分钟一次,将文件拷贝到 spool 的监控目录。log4j 有一个 TimeRolling 的插件,可以
把 log4j 分割文件到 spool 目录。基本实现了实时的监控。Flume 在传完文件之后,将会修改文件的后缀,变为 .COMPLETED(后缀也可以在配置文件中灵活指定)。
Channel
当前有几个 channel 可供选择,分别是 Memory Channel, JDBCChannel , File Channel,Psuedo Transaction Channel。比较常见的是前三种 channel。
MemoryChannel 可以实现高速的吞吐,但是无法保证数据的完整性。
MemoryRecoverChannel 在 官 方 文 档 的 建 议 上 已 经 建 义 使 用FileChannel 来替换。
FileChannel 保 证 数 据 的 完 整 性 与 一 致 性 。 在 具 体 配 置FileChannel 时,建议 FileChannel 设置的目录和程序日志文件保存的目录设成不同的磁盘,以便提高效率。
File Channel 是一个持久化的隧道(channel),它持久化所有的事件,并将其存储到磁盘中。因此,即使 Java 虚拟机当掉,或者操作系统崩溃或重启,再或者事件没有在管道中成功地传递到下一个代理(agent),这一切都不会造成数据丢失。Memory Channel 是一个
不稳定的隧道,其原因是由于它在内存中存储所有事件。如果 java进程死掉,任何存储在内存的事件将会丢失。另外,内存的空间收到RAM 大小的限制,而 File Channel 这方面是它的优势,只要磁盘空间足够,它就可以将所有事件数据存储到磁盘上。
sink
Sink 在设置存储数据时,可以向文件系统、数据库、hadoop 存数据,在日志数据较少时,可以将数据存储在文件系中,并且设定一定的时间间隔保存数据。在日志数据较多时,可以将相应的日志数据存储到 Hadoop 中,便于日后进行相应的数据分析.更多 sink 的内容可
以参考官方手册。

四:可靠性

Flume 的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。
Flume 使用事务性的方式保证传送 Event 整个过程的可靠性。
Sink 必须在 Event 被存入 Channel 后,或者,已经被传达到下一站 agent 里,又或者,已经被存入外部数据目的地之后,才能把 Event从 Channel 中 remove 掉。这样数据流里的 event 无论是在一个agent 里还是多个 agent 之间流转,都能保证可靠,因为以上的事务保证了 event 会被成功存储起来。而 Channel 的多种实现在可恢复性上有不同的保证。也保证了 event 不同程度的可靠性。比如
Flume 支持在本地保存一份文件 channel 作为备份,而 memorychannel 将 event 存在内存 queue 里,速度快,但丢失的话无法恢复。

五: 可恢复性

还是靠 Channel。推荐使用 FileChannel,事件持久化在本地文件系统里(性能较差)

Flume之介绍 核心组件 可靠性 恢复性相关推荐

  1. 【Flume】Flume简单介绍

    1. 概述 Flume是一个分布式.可靠和高可用的海量日志采集.聚合和传输系统. Flume可以采集多种数据,如:文件.socket数据包.文件夹.Kafka等,还可以将采集到的数据输出到HDFS.H ...

  2. Flume 原理介绍

    1 .背景 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一.尤其近几年随着flume的不断被完善以及升级版本 ...

  3. 【Java】Appache Flume 中文介绍

     Flume 是什么        Apache Flume是一个高可靠.高可用的分布式的海量日志收集.聚合.传输系统.它可以从不同的日志源采集数据并集中存储. Flume也算是Hadoop生态系 ...

  4. 大数据flume日志采集系统详解

    一.flume介绍 flume 是一个cloudera提供的 高可用高可靠,分布式的海量日志收集聚合传输系统.Flume支持日志系统中定制各类数据发送方,用于收集数据.同时flume提供对数据进行简单 ...

  5. Flume架构以及应用介绍[转]

    在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程:  从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步,从而引 ...

  6. 单机存储系统可靠性及相关技术介绍

    一.存储系统可靠性的影响因素 单机存储系统包括存储硬件和存储软件.存储硬件又包含存储介质.存储控制器.设备固件:存储软件栈层次则更为复杂,以Linux为例包括:存储设备驱动层. 块设备层(Block ...

  7. Flume架构及应用

    Flume架构及应用 零. 目录 flume 架构介绍 flume概念 flume特点 flume可靠性 flume核心概念 flume架构介绍 flume运行机制 flume广义用法 flume 应 ...

  8. Flume 数据采集组件

    目录 1.数据收集工具/系统产生背景 2.专业的数据收集工具 2.1.Chukwa 2.2.Scribe 2.3.Fluentd 2.4.Logstash 2.5.Apache Flume 3.Flu ...

  9. 大数据系列(五)之 Flume 数据传输

    目录 一.Flume简介 二.Flume架构 2.1 Flume基本组件 2.2 Flume常见数据流模型 三.Source,Channel,Sink 详解 3.1 Source 3.2 Channe ...

最新文章

  1. Iptables防火墙详细介绍与实战增强服务器安全
  2. 什么是saashrm
  3. Nginx笔记-Nginx中进程结构及使用Linux信号量管理
  4. 直男不懂女人心?10953 条数据告诉你女王节送什么口红色号!
  5. WSS3 Elevation of Privilege 替代 用户身份模拟Impersonate 进行权限提升
  6. 错误及原因:Empty JPEG image (DNL not supported)
  7. Halcon深度学习总结
  8. 线性代数学习笔记——第三十五讲——平面与平面的位置关系
  9. 打印身份证正、反面小技巧
  10. 二手房交易有哪些税费?
  11. 计算机无法找到输出设备,老司机搞定win10声音无法找到输入输出设置的解决方法...
  12. 显示器3d测试软件,IPS显示屏/裸眼3D显示原理及3D应用
  13. 太真实,北上广深年薪20W、30W、40W的程序员的生活状态!
  14. 破解明星网红带货易翻车的方法——企业直播
  15. latex文字两端对齐
  16. 人死了以后往哪儿去了?
  17. 协方差与皮尔森相关性系数
  18. jpa findById 不需sql但是 dao integer接口是需要的
  19. 微软 workflow 工作流总结
  20. 路由器TL-WR800N固件升级

热门文章

  1. 转 Mac 使用ab性能测试工具
  2. Redis(三)源source编译
  3. python中关于字典的基础运用
  4. Android零基础入门第86节:探究Fragment生命周期
  5. linux源代码剖析之一
  6. 《编译与反编译技术实战》——导读
  7. 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?
  8. mac git 命令自动补全
  9. Linux 下用yum安装mysql
  10. 博电继保测试仪说明书_北京博电继电保护测试仪