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. pbs "ll: command not found"

    可以用  ls -ltr   替代 ll

  2. 安装pysqlite2

    1. 从https://github.com/msabramo/pysqlite2 下载源码. 2.安装python-dev: sudo apt-get install python-dev 否则在 ...

  3. CentOS 5 上使用yum同时安装32位和64位包的解决方法

    在centos上使用yum在线安装软件包的时候,有时候会同时安装32位和64位的包.并且在update的时候也会更新双份. 其实让yum只安装64位的包,只要在 /etc/yum.conf 中加个 e ...

  4. [转]类不平衡问题与SMOTE过采样算法

    在前段时间做本科毕业设计的时候,遇到了各个类别的样本量分布不均的问题——某些类别的样本数量极多,而有些类别的样本数量极少,也就是所谓的类不平衡(class-imbalance)问题. 本篇简述了以下内 ...

  5. BZOJ 1492 [NOI2007]货币兑换Cash:斜率优化dp + cdq分治

    传送门 题意 初始时你有 $ s $ 元,接下来有 $ n $ 天. 在第 $ i $ 天,A券的价值为 $ A[i] $ ,B券的价值为 $ B[i] $ . 在第 $ i $ 天,你可以进行两种操 ...

  6. java-给微信推送消息 利用企业微信

    目的:给关注用户推送消息 场景:自动化测试,运维监控,接口访问等报错预警.例如线上接口报错,发送提醒消息 准备工作: 1:注册企业号(为什么不用公众号呢?) 企业号注册 2:常用参数介绍: 1:COR ...

  7. Python之virtualenv沙盒环境

    在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时开发多个应用程序,那这 ...

  8. 国外DDoS产品的一些调研—— Akamai Arbor Networks Cloudflare DOSarrest F5 Fastly Imperva Link11 Neustar Nexusguard Oracle (Dyn) Radware Verisign

    Global DDoS Threat LandscapeQ4 2017 https://www.incapsula.com/ddos-report/ddos-report-q4-2017.html,D ...

  9. LeetCode OJ:Linked List Cycle II(循环链表II)

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...

  10. LeetCode OJ:Majority Element II(主元素II)

    Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...