Flume综述
Flume NG基本架构
①一个agent包含Source,Channel,Sink和其他组件
②一个agent对应一个配置文件
③它利用这些组件将events从一个节点传输到另一个节点或最终目的
- 1.简单的多个agent互联,上游的sink对应下游的source
- 较复杂的多个agent互联,多个上游的sink对应下游的同一个source,并最终把数据写入HDFS
基本组件介绍
-
Event
数据在flume中流转的基本单元
Source
它负责接收数据源,把外部数据输入到agent里面,接收事件(event) -
Channel
是位于 source 和sink之间的 缓冲区,起缓存数据的作用 -
Sink
负责从channel中 take 数据写入外部系统,比如下一个agent -
Interceptor
作用于Source,按照预设的顺序在必要地方装饰和过滤events -
Channel Selector
允许Source基于预设的标准,从所有Channel中,选择一个或多个Channel -
Sink Processor
多个Sink可以构成一个Sink Group。Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。
Flume的安装部署
1.下载Linux版本的JDK,比如jdk-8u121-linux-x64.tar.gz(将文件保存至/usr/local的目录下)
2.解压缩,比如解压到 /usr/local/ jdk1.8.0_121目录
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local
3.配置JAVA 环境变量:
export JAVA_HOME=/usr/local/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4.从官http://flume.apache.org/download.html 下载指定版本的安装包,并解压到/usr/local路径下,命令同上;同时利用mv 命令对fulme文件改名为:flume-bin。
5.进入压缩后的flume文件 即,/usr/local/flume1.8.0/bin目录下执行以下命令
cp flume-env.sh.template flume-env.sh
vi flume-env.sh
#vim 写入内容
export JAVA_HOME=/usr/java/jdk1.8.0_121
6.验证是否安装成功,出现flume的版本即为安装成功
./bin/flume-ng version
7.写简单的配置文件
在flume的date目录下创建avro.properties,并进行编辑
整个agent命名为date
Source 为Avro source,并命名为r1
Sink 为 logger sink,并命名为s1
Channel为 memory channel,并命名为c1
# Name the components on this agent
date.sources = r1
date.sinks = s1
date.channels = c1
#定制source,绑定channel、主机以及端口
date.sources.r1.type = avro
date.sources.r1.bind = 0.0.0.0
date.sources.r1.port = 1023
# Describe the sink
date.sinks.s1.type = logger
date.sinks.s1.maxBytesToLog= 1024
# Use a channel which buffers events in memory
date.channels.c1.type = memory
date.channels.c1.capacity = 1000
date.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
date.sources.r1.channels = c1
date.sinks.s1.channel = c1
8.启动flume的命令
/usr/local/flume-bin/bin/flume-ng agent -n hniu -c /usr/local/flume-bin/conf/ --conf-file /usr/local/flume-bin/date/avro.properties -Dflume.root.logger=INFO,console
启动Avro客户端并发送数据
/usr/local/flume-bin/bin/flume-ng avro-client -c /usr/local/flume-bin/conf/ -H bigdata01 -p 1023 -F /usr/local/flume-bin/avro_test.log