Flume是什么
Flume是一个分布式的高可靠,可扩展的数据采集框架,在大数据工程中我们常常需要日志进行分析获取商业价值而Flume就是采集多个不同的数据源,交给数据处理程序同一执行。
Flume的架构
- 基础架构
Flume event:一个数据集,是Flume传输数据的基本单位
Source:接收来自外部的FLume event,有很多不同的类型
Channel:存储Flume event直到被Sink消耗
Sink:消耗Channel中的Flume event,并将其存储在外部设备中或者传送给另一个agent,也有很多不同的类型。
一个agent由source,sink,channel三部分组成,source可接受外部数据源或另一个agent的sink,sink可向另一个agent的source或外部存储系统传递数据如HDFS。
- 扩展架构
两个agent之间的传输
多个agent的合并
一个agent设置多个channel,不同channel向不同地方传递数据
如何使用Flume
由上面我们知道Flume的核心就是接收哪的数据和向哪传输数据,而这些信息就写在Flume的配置文件中,因此使用Flume的核心就是配置文件的书写。
conf下的lume-conf.properties.template文件
# 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
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
可以看到配置分为两步,分别定义agent的sink,source,channel类型,将sink,source,channel三个组件串连起来。使用的效果就是控制台(logger)实时输出netcat输入的信息。
启动命令:
$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template
至此Flume的基本流程我们已经清楚,实际开发中我们要根据具体需求选择Flume的架构以及各个Flume source和sink的类型。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。