1、概述

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

PS:在HDFS中,文件只作为目录项存在,在文件关闭前,其长度一直显示为0。如果在一段时间内将数据写到文件中,但却没有将其关闭,那么一旦客户端出现网络中断,什么都得不到,只有一个空白的文件。

Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM.单个Agent由source、channel、sink三大组件构成。

input叫做source、output叫做sink,连接source与sink中间的部分叫做channel,它们中传输的是event.其图示如下:

说明:

  • source将data转化为event写入到一个或多个channel中。
  • channel作为event从source到sink传递的保留区。
  • sink只从一个channel中接收event。
  • agent可能会有多个source、channel与sink。
  • event:flume将数据表示为event,它是Flume的基本传输单位。它由0个或多个头与体组成。头是一些键值对,可用于路由判定或是承载其他结构化信息。体是字节数组,包含实际负载。每个event本质上是一个独立的记录,而不是记录的一部分。event结构如下图:

一个Agent可以连接一个或多个其他的Agent。一个Agent也可以从一个或多个Agent接收数据。通过相互连接的多个Agent,一个流作业被建立。这个Agent链条可以用于将数据从一个位置移动到另一个位置--特别是,从生产数据的应用程序到HDFS、HBase等。

拦截器是位于source和channel之间。可以用拦截器检查和修改flume的event,可在source创建event后或是channel发送event前链接0个或多个拦截器。

2、Source

exec源、syslog源

3、Channel

Channel包含2类channel:内存/非持久化通道与文件系统/持久化通道。应避免从Source到Channel的数据存储率大于Sink所能写发数据率,否则会出现channel堵塞。

flume只对每个独立agent中的每个channel提供事务保证。

文件通道的持久化能力是由WAL(Write Ahead Log)以一个或多个文件存储联合提供的。

通道选择器负责将数据从一source转向一个或多个channel上。flume自带两个通道选择器,可以包含大多数据使用场景。

  • 复制通道选择器(默认)将event的副本放到每个事先配置好的通道中。
  • 多路通道选择器会根据某些头信息将event写到不同的通道中。

4、Sink与SinkHandler

HDFS Sink的作用是持续打开HDFS中的文件,然后以流的方式将数据写入其中,并且在某个时间点关闭该文件再打开新的文件。

编解码器:用于通过各种压缩算法来压缩和解压缩数据。Flume支持gzip、bzip2、lzo和snappy。

事件序列化器:是Flume转换为另一种格式以进行输出的机制。text、avro

Sink Group:是Flume为了在数据处理Channel中消除单点失败,通过负载均衡或是故障恢复机制将event发送到不同sink的能力。它用于创建逻辑sink分组,该分组的行为是由sink processor来控制,它决定了事件的路由方式。Sink运行器(Sink Runner)运行一个Sink组,sink组可含有一个或多个Sink。如果组中只存在一个Sink,那么没有组将更有效率。Sink运行器仅仅是一个询问Sink组(或Sink)来处理下一批event集合。每Sink只能从一个Channel获取数据,尽管多个Sink可以从同一个Channel获取数据。选定的Sink(或如果没有组,唯一的Sink)从Channel中接收事件,并将事件写入下一阶段或最终目的地。流程如下:

5、拦截器、ETL

拦截器:可以实现数据处理管道中所必需的最后一个功能,就是即时检测与转换event。

Flume自带的拦截器:Timestamp、Host、static、正则表达式过滤、正则表达式抽取,也可以自定义拦截器。

Avro源/接收器

6、Flume监控

监控指标

  • data以期望的速度进入source中
  • data没有超出channel的限制
  • data以期望的速度离开sink

监控方式:

  • JMX
  • Monit
  • Nagios
  • Ganglia
  • 自定义监控勾子

7、实时日志收集注意点

1)、如果是在集群中,时间使用UTC

2)、对容量进行规划

3)、多数据中心需要考虑点

4)、收集的数据要合规

Source、Channel处理器、拦截器和Channel选择器之间的交互如下图:

9、Flume支持的数据流类型

1)、多Agent流

2)、合并流

3)、多通路流

10、综合示例:

2处的机器生成2种类型数据(即三角形与矩形),对应代理使用了多路通道选择器将这两种数据划分到了不同的通道中。矩形与1处机器产生的数据合并后分到了数据中心1,三角形分到数据中心2中的ES中。

注意:数据转换可能发生在任何source之后以及任何sink之前。

发送数据到Flume:Flume有两类发送数据到Flume Agent的程序性方法:Flume SDK和Embedded Agent API。Flume也自带有log4j appender,可以用来从应用程序发送数据到Flume Agent。

1、Flume基础扫盲的更多相关文章

  1. 不惧面试:HTTP协议(1) - 基础扫盲

    v博客前言 先交代下背景,之前在一家公司面试.NET开发,去了先是做一份笔试题,有一半是关于HTTP协议的,技术总监直接面试,也是问一大堆HTTP协议的知识点,可能跟该公司的产品有关,该公司属于互联网 ...

  2. javascript基础扫盲

    JavaScript基础扫盲 null和undefined 非十进制的表示方法 强制类型转换 运算 null和undefined null是一个是非来表示一个空对象的,故 typeof 的返回值是ob ...

  3. Java基础扫盲系列(-)—— String中的format

    Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...

  4. 数据采集组件:Flume基础用法和Kafka集成

    本文源码:GitHub || GitEE 一.Flume简介 1.基础描述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中 ...

  5. zigbee智能家居基础扫盲

    zigbee Zigbee是基于IEEE802.15.4标准的低功耗个域网协议.根据这个协议规定的技术是一种短距离.低功耗的无线通信技术.这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和&qu ...

  6. Linux系统(三)系统基础扫盲大全

    序言 如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装B的初学者来说,Liunx就是黑漆马虎,一望无际的黑屏,黑屏,如何快速的对liun ...

  7. 新手立体四子棋AI教程(1)——基础扫盲

    一.引言 最近身边好几个朋友开始玩立体四子棋,激起了我的好奇心.那么首先来说什么是[立体四子棋],规则又是如何呢? 上图即为立体四子棋,规则类似于五子棋四子连在一起,但是四子棋更加多样.丰富.不仅可以 ...

  8. 【Flume】Flume基础之安装与使用

    1.Flume简介 ​ (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. ​ (2) Flume基于流式架构,容错性强, ...

  9. 《手把手教你》系列进阶篇之1-python+ selenium自动化测试 - python基础扫盲(详细教程)

    1. 简介 如果你从一开始就跟着宏哥看博客文章到这里,基础篇和练习篇的文章.如果你认真看过,并且手动去敲过每一篇的脚本代码,那边恭喜你,至少说你算真正会利用Python+Selenium编写自动化脚本 ...

随机推荐

  1. AtCoder Regular Contest 096

    AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...

  2. 嵌套的SQL另外一种写法

    SELECT a.TradeOrderID 二段交易号 , c.TradeOrderID 一段订单号 , a.BaggingDate AS 出库时间 , a.TransportOrderCode AS ...

  3. Hibernate -- 映射多对多双向关联关系

    1. 示例代码: Student.java package cn.itcast.many2many; import java.util.HashSet; import java.util.Set; @ ...

  4. 给定字符串数组,用map的key保存数组中字符串元素,value保存字符串元素出现次数,最后统计个字符串元素出现次数

    import java.util.HashMap; public class map1 { public static void main(String[] args) { String[] arra ...

  5. NFV及vIMS的部署实施

    随着5G和物联网等领域的快速发展,移动数据业务飞速增长,而传统电信网络基于专用硬件的架构和封闭式的网元,已经成为运营商拓展新业务的严重障碍.NFV能够根据用户和业务需求灵活动态地进行网络资源配置,实现 ...

  6. OpenStack Ceilometer -- 后台数据存储优化之MongoDB的分片存储设置

    https://xiaofandh12.github.io/Mongo-Shard 关于MongoDB MongoDB中的概念与关系型数据库之间的对应: Database --> Databas ...

  7. 清除微信浏览器网址的缓存,cookie

    清理微信浏览网站的缓存,Cookie http://blog.csdn.net/cui55/article/details/53939462 怎么清除IOS微信浏览器中的cookie? 退出微信重新登 ...

  8. chrome浏览器经常无响应

    chrome浏览器(v68)安装一个fiddler证书导入后点击关闭,会出现无响应 有时候动不动会无响应,今天百度了一下,发现真正的"罪魁祸首"是搜狗输入法,升级一下就好了 万恶的 ...

  9. 51nod 1042 数位dp

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042 1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131 ...

  10. Java 文件上传中转

    org.apache.commons.httpclient.methods.multipart Class MultipartRequestEntity java.lang.Object org.ap ...