1.Flume快速入门

Flume快速入门

1.Flume简介

    ApacheFlume是一个分布式的、可靠的、可用的系统,用于高效地收集、聚合和将大量不同来源的日志数据移动到集中的数据存储区。
    Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,Flume可用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件和几乎所有可能的数据源。
​
官网原文如下:
    Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from many different sources to a centralized data store.
    The use of Apache Flume is not only restricted to log data aggregation. Since data sources are customizable, Flume can be used to transport massive quantities of event data including but not limited to network traffic data, social-media-generated data, email messages and pretty much any data source possible.

2. 简单看看Flume的架构

Flume架构图

重途中可一看到Flume它的主要组成部分有Source、Channel、Sink, 其中还有一个Agent这是一个JVM进程它包含了Source、Channel、Sink这三个重要组件。并且Flume在这三个组件间传递数据的基本单位是事件(Event)。

  • Source: 其主要是用于接收数据到Flume agent

  • Channel:Source和Sink之间的一个缓冲区, Source向Channel中添加数据,Sink到Channel中获取数据

  • Sink: 主要用于将数据存储到我们的存储系统,或则另外一个Flume Agent

3.Flume安装

  • 下载地址

    [Flume下载]  http://archive.apache.org/dist/flume/

注意以下步骤需要Java基础环境, 若虚拟机没有安装Jdk请自行安装

3.1 具体安装步骤

  • 将下载的apache-flume-1.7.0-bin.tar.gz包上传至Linux服务器中, 并进行解压

    tar -zxf apache-flume-1.7.0-bin.tar.gz -C /root/app/Flume
  • 将文件夹重命名为flume

    mv apache-flume-1.7.0-bin flume
  • 解压之后进入到flume,执行以下代码,以此创建自己的环境配置文件

    cp conf/flume-env.sh.template conf/flume-env.sh
  • 编辑文件修改里面的JAVA_HOME设置为你机器的JAVA_HOME

    export JAVA_HOME=/root/app/jdk8

到这里基本上Flume的安装完成了, 接下来实现一个一个简单的demo

4.实现一个简单的demo

4.1 需求

我们需要实现实时监控一个文件的内容变化, 并将变化的内容打印到控制台显示。

4.2 实现

4.2.1 编写一个flume配置文件

首先创建一个file-logger.conf文件在/flume/conf文件下,我们重前面的架构分析知道,我们需要一个Source来获取文件的变化,此处采用的是exec source;并且需要一个Sink来向控制台打印文件变化的内容, 此处采用的是logger source; 最后一个组件就是channel,此处channel只是一个缓冲区直接使用内存作为缓冲区。

  • exec source: 就相当于执行一条命令来获取数据,此处我们使用的tail命令来获取文件尾部的变化数据

  • logger: 就相当于我们平时使用的日志一样

#此处相当于定义变量, 需要source、sink、channel各一个
a1.sources = r1
a1.sinks = k1
a1.channels = c1
​
#source的具体定义
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/hello.log
​
#sink的具体定义
a1.sinks.k1.type = logger
​
#channel定义
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
​
​
a1.sources.r1.channels = c1
#注意此处channel没有s,具体原因后续分析
a1.sinks.k1.channel = c1
​

4.2.2测试运行

  • 根据你当前的目录执行一下命令:

./bin/flume-ng agent -n a1 -c conf/ -f conf/file-logger.conf -Dflume.root.logger=INFO,console
  • 重新打开一个窗口通过echo 想文件中追加内容

echo "hello world" >> /root/hello.log
  • 若启动Flume的控制台打印了Event类似日志说明测试成功

发布了11 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sui_feng_piao_guo/article/details/100361075
今日推荐