Flume史上最详细的安装步骤和简单测试

Flume的下载和官方网址:http://flume.apache.org/

Flume的介绍

Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有强大的功能和容错能力。它使用一个简单的可扩展数据模型,允许在线分析应用程序。

大体结构是从Flume的基本架构是Agent。它是一个完整的数据收集工具,含有三个核心组件,分别是 Source、Channel、Sink。数据以Event为基本单位经过Source、Channel、Sink,从外部数据源来,向外部的目的地去。

 

如何监控flume的任务 flume监控工具_大数据

 

Flume是有三层架构:Source,channel,sink

如何监控flume的任务 flume监控工具_如何监控flume的任务_02

Flume的设计目标:

可靠性

Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。Flume 使用事务性的方式保证传送Event整个过程的可靠性。

可扩展性

Flume中只有一个角色Agent,其中包含Source、Sink、Channel三种组件。一个Agent的Sink可以输出到另一个Agent的Source。这样通过配置可以实现多个层次的流配置。

功能可扩展性

Flume自带丰富的Source、Sink、Channel实现。用户也可以根据需要添加自定义的组件实现, 并在配置中使用起来。

除了单Agent的架构外,还可以将多个Agent组合起来形成多层的数据流架构:

多个Agent顺序连接:将多个Agent顺序连接起来,将最初的数据源经过收集,存储到最终的存储系统中。一般情况下,应该控制这种顺序连接的Agent的数量,因为数据流经的路径变长了,如果不考虑Failover的话,出现故障将影响整个Flow上的Agent收集服务

如何监控flume的任务 flume监控工具_大数据_03

多个Agent的数据汇聚到同一个Agent:这种情况应用的场景比较多,适用于数据源分散的分布式系统中数据流汇总。



多路(Multiplexing)Agent:多路模式一般有两种实现方式,一种是用来复制,另一种是用来分流。复制方式可以将最前端的数据源复制多份,分别传递到多个Channel中,每个Channel接收到的数据都是相同的。分流方式,Selector可以根据Header的值来确定数据传递到哪一个Channel。

                                                                                                                                           

如何监控flume的任务 flume监控工具_zookeeper_04

实现Load Balance功能:Channel中Event可以均衡到对应的多个Sink组件上,而每个Sink组件再分别连接到一个独立的Agent上,这样可以实现负载均衡

                                                                                                                                           

如何监控flume的任务 flume监控工具_zookeeper_05

业界同类产品的对比:

  Flume:Cloudera/Apache  Java

  Scribe:Facebook c/c++  不再维护

  Chukwa: Yahoo/Apache  Java   不再维护

  Kafka:

  Fluentd: Ruby

  Logstash: ELK(ElasticSearch,Kibana)

Flume 架构及核心组件

Source是指定数据源从哪里来

作用: 收集

Sink是将数据源写到某个地方去

作用:  输出

Channel  是将数据存储在某个地方

作用: 聚集

下面来介绍flume安装的具体操作流程。

首先,创建好一个虚拟机,然后打开虚拟机,连接xshell6.

然后安装jdk1.8,选用的版本为jdk-8u144-linus-x64.tar.gz

在创建一个data文件夹并在data目录下面再创建一个program文件夹。

将下载的jdk安装包传输到program目录下。

利用指令进入到program目录下:

cd /data/program

然后ll

显示目录下的安装包你会看到jdk-8u144-linus-x64.tar.gz

进行解压,tar -zxvf  jdk-8u144-linus-x64.tar.gz

解压后ll

你会看到解压后的jdk文件夹,

然后

pwd   查询jdk的文件目录

复制一下

然后配置环境变量:

vi ~/.bash_profile

按i进行编辑

将以下配置到环境变量里面:

export JAVA_HOME=(jdk的文件目录)

export PATH=$JAVA_HOME/bin:$PATH

按esc退出编辑 输入:x 按enter保存退出

输入 source ~/.bash_profile 是为了保存和运行配置生效

这样jdk就安装好,环境变量也配置好了。

检验一下可以输入java -version来查看是否成功。

 

下面来安装flume,下载安装包的地址:http://archive.apache.org/dist/flume/1.6.0/

在官网下载apache-flume-1.6.0-bin.tar.gz 

将这个同样移动到data/program目录下

进入cd /data/program

ll 展示目录,会看到flume的安装包,

进行解压

tar -zxvf apache-flume-1.6.0-bin.tar.gz 

解压后ll

会看到解压后的flume文件夹

同理pwd 一下,复制该文件目录

然后配置环境变量

vi ~/.bash_profile

按i进行编辑

将以下配置到环境变量里面:

export FLUME_HOME=(flume的文件目录)

export PATH=$FLUME_HOME/bin:$PATH

按esc退出编辑 输入:x 按enter保存退出

输入 source ~/.bash_profile 是为了保存和运行配置生效

进入到flume的conf 文件夹,

然后ll

会看到flume-env.sh.template

输入 cp flume-env.sh.template flume-env.sh

输入echo $JAVA_HOME

复制jdk的文件目录

然后输入 vi flume-env.sh

会看到红线圈的地方在这下下面加上

export JAVA_HOME=将复制的jdk文件目录放在后面

如何监控flume的任务 flume监控工具_如何监控flume的任务_06

这样flume就下载好了。

检测一下在flume的bin目录下输入

flume-ng version

就会看到flume的版本号

举个例子来测试一下flume的安装下载。

我们监控一个文件实时采集新增的数据输出到控制台

首先我们要创建一个监控的文件

在我们的data目录下创建一个log 文件夹

然后利用指令cd /data/log

进入文件夹 输入指令 touch data.log

创建data.log文件。

pwd 一下复制一下该文件的目录

然后我们需要配置一下文件配置文件大概内容如下

首先进入到flume文件下的conf目录下

vi exec-memory-logger.conf

将下面内容配置进去

# Name the components on this agent

a1.sources = r1

a1.sinks = k1

a1.channels = c1

# Describe/configure the source

a1.sources.r1.type = exec

a1.sources.r1.command = tail -F /home/kafka/data/data.log

#(注意这里配置的就是上面复制的data.log的文件路径,其他没什么要修改的了)

a1.sources.r1.shell= /bin/sh -c

# Describe the sink

a1.sinks.k1.type = logger

 

# Use a channel which buffers events in memory

a1.channels.c1.type = memory

# Bind the source and sink to the channel

a1.sources.r1.channels = c1

a1.sinks.k1.channel = c1

复制进来以后保存

然后我们进行测试启动agent(有关介绍看前面的文案)

flume-ng agent \

--name avro-memory-kafka  \

--conf $FLUME_HOME/conf  \

--conf-file $FLUME_HOME/conf/exec-memory-logger.conf \

-Dflume.root.logger=INFO,console

后面出现start表示启动成功

然后我们再双击一下,出现一个窗口

如何监控flume的任务 flume监控工具_zookeeper_07

进入到我们创建的data.log 文件目录下

然后我们往data.log文件中增加点内容看一下刚刚启动的agent会有什么反应

echo hello >> data.log

echo world >> data.log

echo welcome >> data.log

echo welcome >> data.log

echo welcome >> data.log

echo welcome5 >> data.log

echo welcome6 >> data.log

在agent启动的控制台会出现一下。

如何监控flume的任务 flume监控工具_kafka_08

说明flume实时监控日志已经成功,以上就是flume的安装和简单的测试。

下一期为大家介绍kafka和zookeeper的安装,以及flume实时采集日志到kafak的案例。