Flume的安装使用(1.6) 2015-06-27 23:00

原理

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

  • Flume数据源以及输出方式

Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统,支持TCP和UDP等2种模式),exec(命令执行)等数据源上收集数据的能力。

Flume的数据接受方,可以是console(控制台)、text(文件)、dfs(HDFS文件)、RPC(Thrift-RPC)和syslogTCP(TCP syslog日志系统)等。在我们系统中由kafka来接收。

Flume以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,如下图:

安装

安装

wget http://mirrors.hust.edu.cn/apache/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz
tar -zxvf apache-flume-1.6.0-bin.tar.gz
ln -s apache-flume-1.6.0-bin flume

配置

cd flume/conf
cp flume-env.sh.template flume-env.sh
chmod +x flume-env.sh

vi flume-env.sh
# 如果已经配置了环境变量,应该不需要此配置了
export JAVA_HOME=/usr/java/jdk1.7.0_67

验证安装结果

[root@cheyo flume]# bin/flume-ng version
Flume 1.6.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 2561a23240a71ba20bf288c7c2cda88f443c2080
Compiled by hshreedharan on Mon May 11 11:15:44 PDT 2015
From source with checksum b29e416802ce9ece3269d34233baf43f
[root@cheyo flume]#

使用

例1: 读取tail -f结果到HDFS

  • 配置:
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.channels = c1
a1.sources.r1.command = tail -f /opt/app/blog/log/nginx_access.log

# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.channel = c1
a1.sinks.k1.hdfs.path = hdfs://ctrl:9000/flume/data
a1.sinks.k1.hdfs.filePrefix = bloglog
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 1
a1.sinks.k1.hdfs.roundUnit = minute

# 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
  • 运行
bin/flume-ng agent -c conf/ -f conf/exec_tail.conf -n a1 -Dflume.root.logger=INFO,console

参考文档

  1. Flume1.5.0的安装、部署、简单应用
  2. flume 1.4的介绍及使用示例
Tags: #Flume    Post on ETL