1、Flume基础扫盲
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基础扫盲的更多相关文章
- 不惧面试:HTTP协议(1) - 基础扫盲
v博客前言 先交代下背景,之前在一家公司面试.NET开发,去了先是做一份笔试题,有一半是关于HTTP协议的,技术总监直接面试,也是问一大堆HTTP协议的知识点,可能跟该公司的产品有关,该公司属于互联网 ...
- javascript基础扫盲
JavaScript基础扫盲 null和undefined 非十进制的表示方法 强制类型转换 运算 null和undefined null是一个是非来表示一个空对象的,故 typeof 的返回值是ob ...
- Java基础扫盲系列(-)—— String中的format
Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...
- 数据采集组件:Flume基础用法和Kafka集成
本文源码:GitHub || GitEE 一.Flume简介 1.基础描述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中 ...
- zigbee智能家居基础扫盲
zigbee Zigbee是基于IEEE802.15.4标准的低功耗个域网协议.根据这个协议规定的技术是一种短距离.低功耗的无线通信技术.这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和&qu ...
- Linux系统(三)系统基础扫盲大全
序言 如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装B的初学者来说,Liunx就是黑漆马虎,一望无际的黑屏,黑屏,如何快速的对liun ...
- 新手立体四子棋AI教程(1)——基础扫盲
一.引言 最近身边好几个朋友开始玩立体四子棋,激起了我的好奇心.那么首先来说什么是[立体四子棋],规则又是如何呢? 上图即为立体四子棋,规则类似于五子棋四子连在一起,但是四子棋更加多样.丰富.不仅可以 ...
- 【Flume】Flume基础之安装与使用
1.Flume简介 (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. (2) Flume基于流式架构,容错性强, ...
- 《手把手教你》系列进阶篇之1-python+ selenium自动化测试 - python基础扫盲(详细教程)
1. 简介 如果你从一开始就跟着宏哥看博客文章到这里,基础篇和练习篇的文章.如果你认真看过,并且手动去敲过每一篇的脚本代码,那边恭喜你,至少说你算真正会利用Python+Selenium编写自动化脚本 ...
随机推荐
- HTML常用标签——思维导图
如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/38d99149304484
- Java中遍历map的四种方法 - 转载
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...
- Logstash过滤器修改数据
数据修改(Mutate) filters/mutate 插件是 Logstash 另一个重要插件.它提供了丰富的基础类型数据处理能力.包括类型转换,字符串处理和字段处理等. 类型转换 类型转换是 fi ...
- scala学习手记16 – scala中的static
前面两节学了scala的对象和伴生对象,这两个在使用的时候很有些java的静态成员的意思. scala中没有静态字段和静态方法.静态成员会破坏scala所支持的完整的面向对象模型.不过可以通过伴生对象 ...
- selenium学习笔记(HTMLTestRunner测试报告)
之前提到selenium加入unittest框架.可以引入HTMLTestRunner扩展.以此来生成测试报告 首先是分享下载的百度云地址 http://pan.baidu.com/s/1pKUItW ...
- 如何在 CentOS7 中安装 Nodejs
一.安装Nodejs 安装版本:10.13.0 1.安装必要的编译软件包 yum -y install gcc gcc-c++ 2.从源码下载Nodejs cd /usr/local/src wget ...
- C++(二十三) — 内存泄漏及指针悬挂
1.内存泄漏 动态申请的内存空间没有正常释放,但也不能继续使用. ; pch1 = new char('A'); // 此处申请的空间未被释放. char *pch2 = new char; pch1 ...
- java开发工具idea,在install时候报错The packaging for this project did not assign a file to the build artifact
intellij中install报错:The packaging for this project did not assign a file to the build artifact 原因是run ...
- react bootstrap-loader
1.install npm install bootstrap-loader jquery resolve-url-loader 2.webpack.config.js entry: ['bootst ...
- Today is weekend不是应该一定会输出吗
判断语句 If…else块,请看下面这个例子: <%! int day = 3; %> //声明变量感叹号 <html> <head><title>IF ...