`
sunbin
  • 浏览: 352652 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

日志采集工具Flume的安装与使用方法

 
阅读更多

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Flume主要由3个重要的组件构成:
Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。
Channel:主要提供一个队列的功能,对source提供中的数据进行简单的缓存。
Sink:取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器。

Flume逻辑上分三层架构:agent,collector,storage

agent用于采集数据,agent是flume中产生数据流的地方,同时,agent会将产生的数据流传输到collector。
collector的作用是将多个agent的数据汇总后,加载到storage中。
storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等。

Flume的架构主要有一下几个核心概念:

Event:一个数据单元,带有一个可选的消息头
Flow:Event从源点到达目的点的迁移的抽象
Client:操作位于源点处的Event,将其发送到Flume Agent
Agent:一个独立的Flume进程,包含组件Source、Channel、Sink
Source:用来消费传递到该组件的Event
Channel:中转Event的一个临时存储,保存有Source组件传递过来的Event
Sink:从Channel中读取并移除Event,将Event传递到Flow Pipeline中的下一个Agent(如果有的话)
关于Flume更多内容,可以参考网络文献:Flume的原理和使用

一:安装flume

flume下载地址: flume下载官网
1.解压安装包

  1. sudo tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local # 将apache-flume-1.7.0-bin.tar.gz解压到/usr/local目录下,这里一定要加上-C否则会出现归档找不到的错误
  2. sudo mv ./apache-flume-1.7.0-bin ./flume #将解压的文件修改名字为flume,简化操作
  3. sudo chown -R hadoop:hadoop ./flume #把/usr/local/flume目录的权限赋予当前登录Linux系统的用户,这里假设是hadoop用户
Shell

2.配置环境变量

  1.  sudo vim ~/.bashrc
Shell

然后在首行加入如下代码:

  1. export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
  2. export FLUME_HOME=/usr/local/flume
  3. export FLUME_CONF_DIR=$FLUME_HOME/conf
  4. export PATH=$PATH:$FLUME_HOME/bin
Shell

注意, 上面的JAVA_HOME,如果以前已经在.bashrc文件中设置过,就不要重复添加了,使用以前的设置即可。
比如,以前设置得JAVA_HOME可能是“export JAVA_HOME=/usr/lib/jvm/default-java”,则使用原来的设置即可。
接下来使环境变量生效:

  1. source ~/.bashrc
Shell

修改 flume-env.sh 配置文件:

  1. cd /usr/local/flume/conf
  2. sudo cp ./flume-env.sh.template ./flume-env.sh
  3. sudo vim ./flume-env.sh
Shell

打开flume-env.sh文件以后,在文件的最开始位置增加一行内容,用于设置JAVA_HOME变量:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;

注意,你的JAVA_HOME可能与上面的设置不一致,一定要根据你之前已经安装的Java路径来设置,比如,有的机器可能是:

export JAVA_HOME=/usr/lib/jvm/default-java

然后,保存flume-env.sh文件,并退出vim编辑器。
3.查看flume版本信息

  1. cd /usr/local/flume
  2. ./bin/flume-ng version #查看flume版本信息;
Shell

如果安装成功,出现如下图片
flume-%e7%89%88%e6%9c%ac
注意:如果系统里安装了hbase,会出现错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty。如果没有安装hbase,这一步可以略过。

  1. cd /usr/local/hbase/conf
  2. sudo vim hbase-env.sh
Shell
  1. #1、将hbase的hbase.env.sh的这一行配置注释掉,即在export前加一个#
  2. #export HBASE_CLASSPATH=/home/hadoop/hbase/conf
  3. #2、或者将HBASE_CLASSPATH改为JAVA_CLASSPATH,配置如下
  4. export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  5. #笔者用的是第一种方法
Shell

二:测试flume

1.案例1:Avro source
    Avro可以发送一个给定的文件给Flume,Avro 源使用AVRO RPC机制。
a) 创建agent配置文件

  1. cd /usr/local/flume
  2. sudo vim ./conf/avro.conf #在conf目录下编辑一个avro.conf空文件
Shell

然后,我们在avro.conf写入以下内容

  1. a1.sources = r1
  2. a1.sinks = k1
  3. a1.channels = c1
  4.  
  5. # Describe/configure the source
  6. a1.sources.r1.type = avro
  7. a1.sources.r1.channels = c1
  8. a1.sources.r1.bind = 0.0.0.0
  9. a1.sources.r1.port = 4141
  10. #注意这个端口名,在后面的教程中会用得到
  11.  
  12. # Describe the sink
  13. a1.sinks.k1.type = logger
  14.  
  15. # Use a channel which buffers events in memory
  16. a1.channels.c1.type = memory
  17. a1.channels.c1.capacity = 1000
  18. a1.channels.c1.transactionCapacity = 100
  19.  
  20. # Bind the source and sink to the channel
  21. a1.sources.r1.channels = c1
  22. a1.sinks.k1.channel = c1
Shell

上面Avro Source参数说明如下:
Avro Source的别名是avro,也可以使用完整类别名称org.apache.flume.source.AvroSource,因此,上面有一行设置是a1.sources.r1.type = avro,表示数据源的类型是avro。
bind绑定的ip地址或主机名,使用0.0.0.0表示绑定机器所有的接口。a1.sources.r1.bind = 0.0.0.0,就表示绑定机器所有的接口。
port表示绑定的端口。a1.sources.r1.port = 4141,表示绑定的端口是4141。
a1.sinks.k1.type = logger,表示sinks的类型是logger。
b) 启动flume agent a1

  1. /usr/local/flume/bin/flume-ng agent -c . -f /usr/local/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console #启动日志控制台
Shell

这里我们把这个窗口称为agent窗口。
%e5%90%af%e5%8a%a8%e6%97%a5%e5%bf%97%e5%8f%b0
c) 创建指定文件
先打开另外一个终端,在/usr/local/flume下写入一个文件log.00,内容为hello,world:

  1. cd /usr/local/flume
  2. sudo sh -c 'echo "hello world" > /usr/local/flume/log.00'
Shell

我们再打开另外一个终端,执行:

  1. cd /usr/local/flume
  2. bin/flume-ng avro-client --conf conf -H localhost -p 4141 -F /usr/local/flume/log.00 #4141是avro.conf文件里的端口名
Shell

此时我们可以看到第一个终端(agent窗口)下的显示,也就是在日志控制台,就会把log.00文件的内容打印出来:
%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%bb%88%e7%ab%af%e7%9a%84%e6%98%be%e7%a4%ba
avro source执行成功!案例一over!
2.案例2:netcatsource
a) 创建agent配置文件

  1. cd /usr/local/flume
  2. sudo vim ./conf/example.conf #在conf目录创建example.conf
Shell

在example.conf里写入以下内容:

  1. #example.conf: A single-node Flume configuration
  2.  
  3. # Name the components on this agent
  4. a1.sources = r1
  5. a1.sinks = k1
  6. a1.channels = c1
  7.  
  8. # Describe/configure the source
  9. a1.sources.r1.type = netcat
  10. a1.sources.r1.bind = localhost
  11. a1.sources.r1.port = 44444
  12. #同上,记住该端口名
  13.  
  14. # Describe the sink
  15. a1.sinks.k1.type = logger
  16.  
  17. # Use a channel which buffers events in memory
  18. a1.channels.c1.type = memory
  19. a1.channels.c1.capacity = 1000
  20. a1.channels.c1.transactionCapacity = 100
  21.  
  22. # Bind the source and sink to the channel
  23. a1.sources.r1.channels = c1
  24. a1.sinks.k1.channel = c1
Shell

b)启动flume agent (即打开日志控制台):

  1. /usr/local/flume/bin/flume-ng agent --conf ./conf --conf-file ./conf/example.conf --name a1 -Dflume.root.logger=INFO,console
Shell

如图:
netsource-%e6%97%a5%e5%bf%97%e6%8e%a7%e5%88%b6%e5%8f%b0
再打开一个终端,输入命令:telnet localhost 44444

  1. telnet localhost 44444
  2. #前面编辑conf文件的端口名
Shell

%e7%ab%af%e5%8f%a344444
然后我们可以在终端下输入任何字符,第一个终端的日志控制台也会有相应的显示,如我们输入”hello,world”,得出
%e7%ab%af%e5%8f%a344444%e8%be%93%e5%85%a5
第一个终端的日志控制台显示:
%e7%ab%af%e5%8f%a344444%e8%be%93%e5%87%ba%e7%bb%93%e6%9e%9c
netcatsource运行成功!
这里补充一点,flume只能传递英文和字符,不能用中文,我们先可以在第二个终端输入“中国”两个字:
%e8%be%93%e5%85%a5%e6%b1%89%e5%ad%97
第一个终端的日志控制台显示:
%e6%b1%89%e5%ad%97%e7%bb%93%e6%9e%9c

分享到:
评论

相关推荐

    大数据实时日志采集框架Flume实战(视频+课件+代码+工具+讲义)

    Flume的安装部署 Flume的测试运行 Flume中配置使用file channel及HDFS sink Flume中配置HDFS文件生成大小及时间分区 Flume中配置Spooling Dir的使用 Flume中配置Spooling Dir的文件过滤 Flume中配置扇入架构...

    Flume 构建高可用、可扩展的海量日志采集系统

    根据提供的文件信息,...Apache Flume作为一款成熟稳定的日志采集工具,在大数据领域有着广泛的应用前景。通过合理设计和配置,可以构建出既满足高可用性又能支持灵活扩展的日志采集系统,为企业提供有力的技术支撑。

    flume 安装和使用

    总之,Flume 是一个强大的日志管理工具,通过其灵活的配置和丰富的组件,可以满足各种日志数据的采集、处理和分发需求。无论是简单的日志收集还是复杂的日志分析,Flume 都能胜任,并且在大数据环境中提供可靠的保障...

    flume采集日志信息简报

    Flume 是一个功能强大且灵活的日志采集工具,它可以从各种数据源采集日志信息,并将其传输到多种目的地。Flume 的强大之处在于它的 Output 方式多样,可以将日志信息输出到文件、数据库、Kafka、HDFS 等多种存储介质...

    flime安装+配置+测试+案例(采集日志至HDFS)

    Flume 是 Apache Hadoop 生态系统中的...通过理解这些组件以及如何配置它们,我们可以构建出适合特定需求的日志采集解决方案。通过本次实验,我们不仅学会了 Flume 的基本操作,还加深了对日志管理和大数据传输的理解。

    Flume 安装搭建使用.

    Flume 安装搭建使用 Flume 是一个分布式的、可靠的、高效的日志收集、聚集、移动服务。它可以实时处理大数据量的日志,提供了一个灵活的架构来处理大数据。 一、Flume 简介 Flume 是一个基于流式架构的服务,能够...

    第8章数据采集工具Flume.pdf

    综上所述,Flume是一个非常强大的数据采集工具,能够处理大量数据并保证其传输的可靠性和高效性。在Hadoop生态系统中,Flume作为一个数据采集层,为存储和处理数据提供了重要的支持。随着数据量的不断增长和数据来源...

    已上线的日志采集系统,使用flume收集日志.zip

    本系统已经上线并运行,采用Flume作为日志采集工具,Logstash用于数据处理和结构化,最终将处理后的数据推送至Kafka,为下游消费者提供服务。以下是关于这些技术的详细解释: **Flume** Flume是一款由Apache开发的...

    Flume++构建高可用、可扩展的海量日志采集系统

    6. **监控与管理**:Flume 提供了丰富的监控和管理工具,如通过JMX接口进行性能监控,以及使用Flume UI进行配置管理和故障排查。这些工具对于维护和优化大规模日志采集系统至关重要。 7. **安全性**:在处理敏感...

    Flume+构建高可用、可扩展的海量日志采集系统(2015.8).pdf

    总结来说,Flume是一个强大的日志采集工具,其高可用性和可扩展性使其成为大数据环境下的首选。通过灵活配置源、通道和Sink,可以构建出适应各种复杂需求的数据流。了解并熟练掌握Flume,对于任何处理大规模日志数据...

    flume kafak实验报告.docx

    在大数据实时处理领域,Flume、Kafka 和 Spark Streaming 是常用的数据采集、传输与处理工具。本实验报告详细阐述了如何将这三个组件结合使用,构建一个高效的数据流处理系统。 一、Flume 与 Spark Streaming 的...

    Flume1.6.0入门:安装、部署、及flume的案例

    Flume 是 Cloudera 开发的一款高效、可靠且易于扩展的日志收集系统,适用于大数据环境下的日志采集任务。Flume 的初始版本被称为 FlumeOG(Original Generation),随着功能的不断扩展和完善,Flume 在 2011 年经历...

    基于 Apache Flume 定制的数据采集工具.zip

    在这个名为"基于 Apache Flume 定制的数据采集工具.zip"的压缩包中,我们主要关注的是一个名为 "flume-collect-master" 的项目,这可能是一个包含了自定义Flume代理的源代码实现。Flume 提供了一个灵活的架构,允许...

    大数据采集技术-Flume安装.pptx

    总结来说,Apache Flume是大数据采集领域的重要工具,其安装和配置过程相对简单,提供了强大的数据传输能力。通过合理配置,Flume能够在分布式环境中高效地收集、聚合和传输大规模数据,为后续的数据分析和处理打下...

    Flume日志采集手册.docx

    通过上述步骤,我们完成了Flume日志采集系统的基本搭建与配置,并实现了数据从数据源到Kafka的服务流程。这种方案不仅能够有效地处理大规模日志数据的采集与传输,同时也为后续的数据处理提供了极大的灵活性和扩展性...

    数据采集之Flume.xmind

    Apache Flume 是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具 Apache Flume是Apache软件基金会(ASF)的顶级项目 Event是Flume定义的一个数据流传输的最小单元。...

    flume开发相关工具包

    Flume是Apache Hadoop生态中的一个数据采集工具,主要用于收集、聚合和移动大量日志数据。这个"flume开发相关工具包"包含了两个主要部分:flume-ng-1.5.0-cdh5.4.5.tar安装包和flume开发相关的jar包。 **flume-ng-...

    大数据技术应用(一) 应用Flume+HBase采集和存储日志数据

    在大数据技术领域,Flume和HBase是两个关键的组件,它们在日志数据的采集、传输和存储中发挥着重要作用。本篇文章将详细介绍这两个工具的使用及其在实际应用中的结合。 首先,让我们来理解Flume。Apache Flume是一...

Global site tag (gtag.js) - Google Analytics