hadoop之旅10-centerOS7 : Flume环境搭建

Flume介绍

Apache Flume 是一个分布式,可靠且可用的系统,用于有效地从许多不一样的源收集、聚合和移动大量日志数据到一个集中式的数据存储区。 Flume 的使用不仅限于日志数据。由于数据源能够定制,flume 能够被用来传输大量事件数据,这些数据不单单包括网络通信数据、社交媒体产生的数据、电子邮件信息等java

最多见的做用是Flume 可用于移动大规模批量流数据到HDFS系统。从Web服务器收集当前日志文件数据到HDFS汇集用于分析。web

Flume 支持多种来源,如:apache

  1. tail (从本地文件,该文件的管道数据和经过Flume写入 HDFS,相似于Unix命令“tail”)
  2. 系统日志
  3. Apache log4j (容许Java应用程序经过Flume事件写入到HDFS文件)。

Flume代理是JVM进程,里面有3个组成部分 : Flume Source, Flume ChannelFlume Sink -经过该事件传播发起在外部源以后缓存

总体流程:

监听web服务端日志信息->发送事件到sources端来消费->缓存数据到channel中->sink从channel中取数据进行消费并保存到hdfs中bash

Source

消费由外部源(如Web服务器)传递给它的事件。外部源以必定的格式发送数据给 Flume服务器

channel

能够理解为缓存区,用来保存从 Source 那拿到的数据,直到 Flume slink 将数据消费网络

sink

从 channel 消费完数据就会将数据从 channel 中清除,随后将数据放到外部存储系统例如 HDFS (使用 Flume HDFS sink)或发送到其余 Flume agent 的 source 中。无论是 Source 仍是 Slink 都是异步发送和消费数据。app

对Flume作了简单介绍以后,带你们一块儿搭建一下Flume环境,Flume搭建很简单。异步

解压软件

解压下载好的flume软件分布式

[root@master mmcc]# tar -zxvf apache-flume-1.8.0-bin.tar.gz 
复制代码

配置conf目录文件

  1. flume-env.sh.template复制一份,并更名为flume-env.sh
[root@master conf]# cp flume-env.sh.template flume-env.sh
复制代码
  1. 配置java环境 (可选)
vi flume-env.sh

JAVA_HOME=/app/lib/jdk1.7.0_55  #jdk的目录
JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"
复制代码

此时咱们就已经能够直接使用了。作一个简单的例子,监听\home\mmcc\testlogs目录下文件的内容变化,并将其存储到hdfs上的testlogs目录,关于hdfs相关内容可参考hadoop之旅2-centerOS7: 搭建分布式hadoop环境

编写conf文件

[root@master conf]# vi flume-conf

agent.sources = r1  #设置名称
agent.channels = c1  
agent.sinks = k1    

agent.sources.r1.type = spooldir  #用于抽取目录下文件
agent.sources.r1.spoolDir = /home/mmcc/testlogs  #监听的目录

agent.channels.c1.type=memory    #h缓冲区类型为内存
agent.channels.c1.capacity=1000
agent.channels.c1.transactionCapacity = 100

agent.sinks.k1.type = hdfs    #处理的类型,存入hdfs
agent.sinks.k1.hdfs.path=hdfs://master:9000/testlogs
agent.sinks.k1.hdfs.filePrefix = testlog_
agent.sinks.k1.hdfs.fileType = DataStream

agent.sources.r1.channels = c1
agent.sinks.k1.channel = c1
复制代码

执行flume

[root@master flume-1.8.0]# ./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf --name agent -Dflume.root.logger=INFO,console
复制代码
  1. 最前面是经过bin下的flume-ng这个脚本进行启动;
  2. 下面就是启动时候须要的一系列参数,-–conf表示是配置 conf文件,conf-file 表示配置文件的位置,能够是相对位置也能够是绝对位置,–name 就是以前配置文件内的”agent.channels = c1”,猜想是flume服务器配置的名称, -Dflume.root.logger 表示输出形式,console是命令窗口输出,logging是log/flume.log文件输出。

执行成功后,flume就会为咱们一直监听咱们配置的/home/mmcc/testlogs目录

测试

/home/mmcc/testlogs目录下

vi testlog1   #编辑任意内容
hhhh
klsjdlkfjlds
lsdkjflks
kldjfljsljcvxl
lkjvlh
复制代码

保存退出 :wq

在hdfs上能够看到,生成了对应的文件

同时testlog1也会被flume标志为已经扫描过的状态 COMPLETED

相关文章
相关标签/搜索