2. Apache Flume介绍
Apache Flume是一个分布式部署的、可靠的、高效率的日志采集系统,其通过一个简单灵活的框架实现了海量日志的采集、聚合和统一存储。
2.1. 数据流模型
Flume Agent是一个JVM进程,其中包含包括三个组件:Source、Channel、Sink。Flume Source从外部数据源获得数据(events)如:Web Server,外部数据源使用目前公认格式将数据(events)传送给Flume Source 如:Avro的Flume Source可以接受Avro Clinet传送来的数据。当数据到达Flume Source后,Flume Source将数据存储在一个或多个Channel中,Channel存储数据直到数据被Sink所处理。
2.2. Apache Flume支持的其它数据流模型
2.2.1. 多代理流
Flume-NG安装部署说明6 / 14
2.2.2. 合并流
2.2.3. 多通路流
Flume-NG安装部署说明7 / 14
3. 部署说明
3.1. 先决条件
3.1.1. 操作系统平台
GNU/Linux 2.6.18-308.el5xen或以上版本
3.1.2. 所需软件
JRE:Java(TM) SE Runtime Environment (build 1.6.0_32-b05)或以上版本 Flume:Aapche Flume 1.2.0
3.2. 环境准备
3.2.1. 账号分配
本手册主要说明如何配合HDFS使用,所以请使用为Haoop集群所分配的账号操作Flume,以免对HDFS写入时出现权限问题。如不涉及HDFS的写入,请单独分配账号进行操作。
3.2.2. 目录分配
由于使用Haoop集群的账号,为了方便管理和操作起见请在Haoop用户目录下建立一个独立目录存放Haoop集群用户所使用到的应用。如:/home/hadoop/app/flume。
3.2.3. 环境变量设置
JAVA_HOME,CLASS_PATH
3.3. 安装步骤
3.3.1. 下载安装包
到Apache Flume官网下载Apache Flume 1.2.0的安装包,并将其上传至安装主机,存放在/home/hadoop/app目录下。Apache Flume的官方下载地址如下: http://flume.apache.org/download.html
3.3.2. 解压安装包
执行命令对Flume安装包进行解压
Flume-NG安装部署说明8 / 14
[hadoop@cassdb ~]$ cd /home/hadoop/app
[hadoop@cassdb app]$ tar -xzvf apache-flume-1.2.0-bin.tar.gz
解压完Flume目录结构如下:
3.3.3. 配置说明
本手册只对简单数据流及Avro client进行说明,Apache Flume的其它配置方法请参见http://flume.apache.org/FlumeUserGuide.html。
Step1在Flume的conf目录下新建一个配置文件,并命名为flume-avro.conf
[hadoop@cassdb conf]$ touch flume-avro.conf
Step2编辑配置文件
使用文本编辑器对flume-avro.conf文件进行编辑,并输入以下内容: agent1.sources = avro_source agent1.sinks = hdfs_sink
agent1.channels = mem_channel
agent1.sources.avro_source.type = avro agent1.sources.avro_source.bind = 0.0.0.0 agent1.sources.avro_source.port = 4141
agent1.sources.avro_source.interceptors = timestamp
agent1.sources.avro_source.interceptors.timstamp.type=org.apache.flume.interceptor.Timestam
pInterceptor$Builder
agent1.sinks.hdfs_sink.type = hdfs
agent1.sinks.hdfs_sink.hdfs.path = hdfs://10.32.147.241/flume/weblog/%y-%m-%d agent1.sinks.hdfs_sink.hdfs.filePrefix = test
Flume-NG安装部署说明9 / 14
agent1.sinks.hdfs_sink.hdfs.rollSize = 65000000 agent1.sinks.hdfs_sink.hdfs.rollInterval = 0 agent1.sinks.hdfs_sink.hdfs.rollCount = 0
agent1.sinks.hdfs_sink.hdfs.fileType = DataStream agent1.sinks.hdfs-sinks.writeFormat = Text
agent1.channels.mem_channel.type = memory agent1.channels.mem_channel.capacity = 1000
agent1.channels.mem_channel.transactionCapactiy = 100 agent1.channels.mem_channel.keep-alive = 30
agent1.sources.avro_source.channels = mem_channel agent1.sinks.hdfs_sink.channel = mem_channel
上面的配置文件定义了一个Flume Agent,source是avro,sink是hdfs,channel是memory。avro的RPC server启动在本地的4141端口。hdfs的输出目录为hdfs://10.32.147.241/flume/weblog,并按天产生下一级目录,文件名前缀是test,文件到达64M时换一个文件存储。
4. 日常维护
4.1. 启动Apache Flume Agent
进入安装路径的bin目录
[hadoop@cassdb ~]$ cd /home/hadoop/app/apache-flume-1.2.0/bin
执行启动命令
[hadoop@cassdb bin]$ ./flume-ng agent --conf-file ../conf/flume-avro.conf --name agent1 -Dflume.root.logger=INFO,console
如Flume正常启动,会有如下日志信息产生:
Flume-NG安装部署说明10 / 14