Flume是一个分布式的海量数据收集框架.apache
Flume框架流程图缓存
Channel是缓存的数据,若是Sink传送给了HDFS,Channel中缓存的数据就会删除,若是没有传送成功,Channel至关于作了备份,Sink重复从Channel中取数据.框架
在hadoop0上部署一个Flume agent分布式
一、把apache-flume-1.4.0-bin.tar.gz和apache-flume-1.4.0-src.tar.gz在hadoop0上解压缩.oop
二、把解压缩后的apache-flume-1.4.0-src文件夹中的内容所有复制到apache-flume-1.4.0.-bin文件夹中..net
三、修改conf目录下的两个文件的名称,一个是flume-env.sh,一个是flume-conf.properties.代理
其中在flume-env.sh中设置了JAVA_HOME值.orm
四、实例:把磁盘文件夹中文件经过flume上传到HDFS中.内存
4.1 在conf目录下建立一个文件,叫作test.conf,文件内容以下:hadoop
#配置代理
#a1是一个代理名称,s1是source的名称,sink1是sink的名称,c1是channel的名称
a1.sources = s1
a1.sinks = sink1
a1.channels = c1
#配置一个专用于从文件夹中读取数据的source
a1.sources.s1.type = spooldir
a1.sources.s1.spoolDir = /apache_logs #值apache_logs表示数据文件的目录
a1.sources.s1.fileSuffix=.abc #值.abc表示数据文件被处理完后,被重命名的文件名后缀
a1.sources.s1.channels = c1 #值c1表示source接收数据后送到的channel的名称
#配置一个专用于把输入写入到hdfs的sink
a1.sinks.sink1.type = hdfs
a1.sinks.sink1.hdfs.path=hdfs://hadoop0:9000/apache_logs #值表示目的地
a1.sinks.sink1.hdfs.fileType=DataStream #值DataStream表示文件类型,是不通过压缩的
a1.sinks.sink1.hdfs.writeFormat=Text #值表示写出文件原内容
a1.sinks.sink1.channel = c1 #值c1表示sink处理数据的来源
#配置一个内存中处理的channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
运行:[root@hadoop conf]# ../bin/flume-ng agent --conf conf --conf-file test.conf --name a1 -Dflume.root.looger=DEBUG,console
Name:Xr
Date:2014-04-06 20:44