flume安装配置及使用

flume下载

flume可以去官网下载最新版本(http://flume.apache.org),也可以直接下载flume1.8.0

环境要求

由于flume依赖于jdk,所以必须要安装jdk,由于最新的flume要求环境是jdk1.8,所以需要安装jdk1.8。jdk的安装教程请自行查阅文档.

flume安装

进入到flume的下载目录,将flume压缩文件解压

tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /home/app/apps/
mv /home/app/apps/apache-flume-1.8.0-bin /home/app/apps/flume-1.8.0

这里就算将flume安装好了,flume的配置文件存放在flume-1.8.0/conf/下的文件里,flume的运行程序存放在flume-1.8.0/bin/下的文件里

flume简介

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

flume环境要求

  1. 运行环境:jdk 1.8以上
  2. 内存要求:内存需要满足配置使用的sources、channels、sinks
  3. 磁盘空间:磁盘空间需要满足配置使用的channels、sinks
  4. 目录权限:agent目录的读/写权限

flume原理

flume原理图如下:

整个flume其实就是Agent的功能,接收source的数据,通过channel传输到sink上去,如果有大数据要处理数据的时候,会直接到sink去提取数据,flume就是将数据从source采集到sink上。

flume启动命令

首先进入我们的flume目录,然后我们可以在bin目录下执行命令,配置文件一般放在安装目录的conf下

bin/flume-ng agent -n a1 -c conf -f conf/flume-conf.properties.template

这条命令的意思是 运行bin目录下的flume-ng文件的agent,-n是指后面跟上agent的名字是a1,-c是指后面跟上conf配置,-f是指后面跟上配置文件的路径。从flume原理图我们可以知道,我们需要配置source、channel、sink。这三个都有缺省的值,我们也可以自行指定。source、channel、sink都可以任意变换,参考地址http://flume.apache.org/FlumeUserGuide.html

例子1

source:netcat
channel:memory
sink:logger

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = 192.168.163.111
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

将这段属性配置文件存放在安装文件下的conf目录下,然后我们就可以启动flume采集了,注意,a1.sources.r1.bind这个是本机的ip,不要用回环地址

bin/flume-ng agent -conf conf -f conf/netcat-logger.conf -name a1 -Dflume.root.logger=INFO,console

这条命令中,netcat-logger.conf是刚刚那个配置存储的文件名,结果直接输出到logger上
我们可以用socket工具、telnet、netcat连接这台服务器的44444端口来测试flume是否能成功采集数据

例子2

source:exec
channel:memory
sink:hdfs

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/hadoop/tmp/flume/log/new.log
a1.sources.r1.channels = c1

a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#a1.sinks.k1.hdfs.rollSize=100
a1.sinks.k1.hdfs.fileType = DataStream

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

将这段属性配置文件存放在安装文件下的conf目录下,然后我们就可以启动flume采集了,启动脚本是:

bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -name a1

启动tail-hdfs.conf是我们保存的配置文件名

总结

通过上面的两个例子我们可以发现,source、channel、sink可以是多种类型的数据源,我们可以根据我们的需求来更换着三者中的任意项。可更换的数据源参考http://flume.apache.org/FlumeUserGuide.html

参考

更多详细信息请参考官方文档
http://flume.apache.org/

posted @ 2018-03-15 14:36  shenjie2017  阅读(392)  评论(0编辑  收藏  举报