标签(空格分隔): hadoop
学习三问
flume是什么?
flume干什么?
flume怎么用?
flume是什么
Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large amounts of log data from many different sources to a centralized data store.
是一个分布式日志汇总,收集器。(对于可靠性的话后续再研究下)。
架构图如下:
flume用来干什么
从是什么可以看出来,人家就是拿来收集日志汇总,我们可以对汇众完的日志做统一的分析,挖掘。
flume怎么用(安装使用)
下载一个 apache-flume…tar.gz 包 解压。(依赖java环境)
然后在conf中配置一下你要的配置。一下是一个简单的案例。
netcat.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
启动命令:bin/flume-ng agent -c ./conf -f ./conf/netcat.conf -n a1 -Dflume.root.logger=INFO,console
启动命令这里注意一下,-n(name)必须与配置文件中的代理名字对应 比如这里就是a1上面配置文件要一致。
flume中有什么(角色就是flume运行机制)
source:来源
sniks:下沉目的地
channel:管道
我们需要从来源获取到需要的日志数据,之后可以通过管道连接到sinks,sinks下沉目的地,但是人家有可能是另一个agent的source,所以flume架构你要向做复杂点完全是可以的。
找个例子:比如有3台web服务器,我们分别搞3个flume收集这三台服务器,之后通过avro的source统一收集,再定义hdfs作为sinks。也就是说通过web集群手机日志,下沉到hdfs上。如下图所示: