第一章 flume简介(详细版本)

flume概念

flume是cloudera提供的一个高可用,高可靠,分布式的海量日志收集,聚合和传输的系统

flume优点

(1)可以与任意集中式存储进程集成。
(2)输入的速率大于写入存储目的地的速率,flume会进行缓冲。
(3)flume提供上下文路由(数据流路线)。
(4)flume的事务基于channe,flume有两个事务模型(sender+receiver)确保消息被可靠发送。
(5)Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。

flume的特点

(1) Flume可以高效率的将多个网站服务器中收集的日志信息存入HDFS/HBase中
(2)使用Flume,我们可以将从多个服务器中获取的数据迅速的移交给Hadoop中
(3)除了日志信息,Flume同时也可以用来接入收集规模宏大的社交网络节点事件数据,比如facebook,twitter,电商网站如亚马逊,flipkart等
(4)支持各种接入资源数据的类型以及接出数据类型
(5)支持多路径流量,多管道接入流量,多管道接出流量,上下文路由等
(6)可以被水平扩展
Flume支持在日志系统中定制各种数据发送方,用于收集数据
Flume提供对数据进行处理,并写到各种不同的数据接收方的能力(可定制).

flume流程

在这里插入图片描述

flume背景

Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。
flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一.

flume基础架构

在这里插入图片描述下面我们来详细介绍一下 Flume 架构中的组件:

flume架构组件

Agent

Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的。
Agent 主要有 3 个部分组成,Source、Channel、Sink。

Source

Source 是负责接收数据到 Flume Agent 的组件。Source 组件可以处理各种类型、各种
格式的日志数据,包括 avro、thrift、exec、jms、spooling directory、netcat、sequence
generator、syslog、http、legacy。

Sink

Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储
或索引系统、或者被发送到另一个 Flume Agent。
Sink 组件目的地包括 hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定
义。

Channel

Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运
作在不同的速率上。Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个
Sink 的读取操作。
Flume 自带两种 Channel:Memory Channel 和 File Channel 以及 Kafka Channel。
Memory Channel 是内存中的队列。Memory Channel 在不需要关心数据丢失的情景下适
用。如果需要关心数据丢失,那么 Memory Channel 就不应该使用,因为程序死亡、机器宕
机或者重启都会导致数据丢失。
File Channel 将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数
据。

Event

传输单元,Flume 数据传输的基本单元,以 Event 的形式将数据从源头送至目的地。
Event 由 r Header 和 y Body 两部分组成,Header 用来存放该 event 的一些属性,为 K-V 结构,
Body 用来存放该条数据,形式为字节数组。
在这里插入图片描述

Hadoop业务的整体开发流程

在这里插入图片描述

在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步。许多公司的平台每天会产生大量的日志。处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:

构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;
支持近实时的在线分析系统和类似于Hadoop的离线分析系统;
具有高可扩展性。即:当数据量增加时,可以通过增加节点进行水平扩展。

开源的日志系统有scribe、chukwa、kafka、flume等。其中:Flume是Cloudera提供的一个分布式、可靠、高可用的海量日志聚合系统,它支持在日志系统中定制各类数据发送方,用于收集数据;同时Flume提供对数据的简单处理,并写到各种数据接收方(比如文本、HDFS、Hbase等)的能力。

Flume 在0.9.x and 1.x之间有较大的架构调整,1.x版本之后的改称Flume NG,0.9.x的称为Flume OG。

猜你喜欢

转载自blog.csdn.net/qq_43674360/article/details/111272264