简介
Apache Flume是一个分布式、高可靠和高可用的收集、集合和将大量来自不同来源的日志数据移动到一个中央数据仓库。
Apache Flume的使用不仅限于日志数据聚合。因为数据是可定制的,所以Flume可以用于运输大量时间数据包括不限于网络传输数据,社交媒体产生的数据,电子邮件信息和几乎任何数据源。
Apache Flume是Apache软件基金会的顶级项目。
架构
一个Flume event(事件)被定义为拥有一个字节的有效负载的一个数据流单元和一个可选的字符串属性配置。Flume agent(代理)是一个JVM进程来控制组件完成事件流从一个外部来源传输到下一个目的地。
架构
Flume source消费外部来源像web server传输给他的事件。外部来源发送以目标Flume source定义好的格式的event给Flume。例如,Avro Flume source用于接收Avro客户端或者流中的其他Flume中Avro sink发来的Avro events。一个相似的流可以用Thrift Flume Source 来接收来自Flume sink或者FluemThrift Rpc客户端或者一个用任何语言写的遵守Flume Thrift 协议的Thrift客户端的事件。当一个Flume Source接收一个事件时,它将事件存储在一个或者多个Cannel中。Channel是一个被动仓库用来保存事件直到它被Flume Sink消费掉。File channel就是个例子-它背靠着本地的文件系统。Sink将事件从Channel中移除并且将事件放到一个外部的仓库像HDFS(通过Flume HDFS sink)或者向前传输到流中另一个Flume Agent。Agent中Source和Sink异步地执行Channel中events。
下载安装配置
wget http://mirrors.shuosc.org/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
tar -zxvf apache-flume-1.8.0-bin.tar.gz
cd apache-flume-1.8.0-bin
cp conf/flume-env.sh.template conf/flume-env.sh
vim conf/flume-env.sh
#我们只需修改一项就是导入jdk的路径(如下面的例子)
export JAVA_HOME=/opt/jdk1.8.0_131
#之后保存退出,就ok了
例子
这里给出一个配置文件的例子,阐述一个单点Flume的部署,这个配置让一个用户产生一个事件和随后把事件打印在控制台。
vim conf/example.conf #我们创建一个配置文件(写入如下内容)
# example.conf: A single-node Flume configuration
# 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 = localhost
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
之后就保存退出。
这个配置信息定义了一个名字为a1的单点agent。a1拥有一个监听数据端口为44444的source,一个内存channel和一个将事件打印在控制台的sink。配置文档给多个组件命名,并且描述它们的类型和配置参数。一个给定的配置文档可以定义多个agent;当一个给定的Flume进程加载时,一个标志会传递告诉他具体运行哪个agent。
我们通过下面命令来运行这个agent
bin/flume-ng agent --conf conf --conf-file conf/example.conf --name a1 -Dflume.root.logger=INFO,console
我们另外打开一个终端,我们可以telnet 端口4444和发送一个事件:
telnet localhost 44444
之后就输入一些内容,并回车,退出用Ctrl+C,例如:
Hello world!
<ENTER>
OK
Hello Flume
<ENTER>
OK
我们就可以在运行flume的终端上看到我们刚才输入的内容了。就是这么简单!
给一个官方文档的中文翻译地址:http://www.linuxidc.com/Linux/2016-12/138030.htm
END
网友评论