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