flume基础知识点必备(一)

我个人在学习一个框架的时候,一般都会从几个方面着手

(1)这个框架是什么干什么用的,在整个大数据生态中处在什么位置?

(2)这个框架本身重要的概念,如果理解?

(3)这个框架在实际项目中怎么安装,怎么使用?

(4)这个框架在实际项目中遇到的问题和面试常见问题?

下面围绕这几个方面我们展开对flume做一个探讨学习,也作为个人复习的一个知识库。


 一、Flume是什么干什么的?在整个大数据生态中处在什么位置?

  1、一个比较官方的解释:

    FlumeCloudera提供的一个高可用,高可靠,分布式海量日志采集、聚合和传输的系统Flume基于流式架构,灵活简单。

  2、个人理解:

    Flume是一个日志采集框架,它最主要的作用是采集磁盘上的日志数据,然后把数据发往下游(往往是kafka或者hdfs)

    同时我们还能在flume里面对数据做简单的处理(这个我们后面聊)。

  3、我们平时学习flume和下载flume的地址我也放在这里

    (1) Flume官网地址:http://flume.apache.org/

    (2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html

    (3)下载地址:http://archive.apache.org/dist/flume/

  4、那么flume在整个大数据生态中,往往在什么位置?或者实际项目中flume的处在哪个位置呢?

  

  上面是网上拿的图,我们可以看出,flume在数据接入|采集层,在实际工作中flume是一个非常重要的技术框架,是每一个大数据人都必会的技能。


二、这个框架本身重要的概念,如果理解?

  在知道了flume是什么,并且知道他在大数据体系中处在那一环了之后,我们深入flume内部的框架,去理解它自身的重要概念。我们在flume官网拿到了这个图

  Flume 运行的核心是 Agent。Flume以agent为最小的独立运行单位。一个agent就是一个JVM。

  它是一个完整的数据收集工具,含有三个核心组件,分别是source、 channel、 sink。  

  数据从源头经过Agent的这几个组件最后到达目的地。另外一个Flume服务可同时运行多个Agent;

  下面我们来介绍下source、channel、sink的三个组件

  1、source

  Source是负责接收数据到Flume Agent的组件。

  Source组件可以处理各种类型、各种格式的日志数据。

  包括avrothrift、execjms、spooling directory、netcatsequence generator、syslog、http、legacy。有些场景我们还需要自定义数据源。后面我会给大家讲项目中常用的source源以及使用的方法。

  2、channel

  Channel是连接Source和Sink的组件,大家可以将它看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件。

  Flume自带两种Channel:Memory Channel和File Channel。

  Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。

  File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。

  另外我们在项目中,下游是kafka的情况下,1.7版本我们可以直接使用kafka channel,省去了sink阶段,直接缓存在kafka中,效率比较高。

  3、sink

  sink主要是把channel中的时间给写到其他的存储系统,或者发到另外一个flune Agent;

  Sink组件目的地包括hdfs、logger、avrothrift、ipc、file、HBasesolr、自定义。

  4、event

  传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由HeaderBody两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。


三、这个框架在实际项目中怎么安装,怎么使用?

  安装部署:

  (1)将apache-flume-1.9.0-bin.tar.gz上传到linux相应的目录下

  (2)解压apache-flume-1.9.0-bin.tar.gz/opt/module/目录下

tar -zxf /opt/software/apache-flume-1.9.0-bin.tar.gz -C /opt/module/

  (3)修改apache-flume-1.9.0-bin的名称为flume

mv /opt/module/apache-flume-1.9.0-bin /opt/module/flume

  (4)将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3

rm /opt/module/flume/lib/guava-11.0.2.jar

三、flume的几个入门案例 

 

posted @ 2020-06-19 15:55  爱学习没办法  阅读(336)  评论(0编辑  收藏  举报