Apache Flume是一個分佈式、可靠、高可用的海量日誌聚合系統,支持在系統中定製各類數據源發送給指定的數據接收方;同時Flume還提供簡單的數據處理的方法。html
完成數據的收集,分紅 transtion和 event將數據傳送到Channel;數據庫
Flume提供了豐富的數據收集方法的實現,如: AvroSource、Exce Source、Spooling Directory Source、NetCat Source、Syslog Source、Syslog TCP Source、Syslog UDP Source、HTTP Source、HDFS Source等等;apache
如: Exce Source:以運行Linux命令的方式,持續的輸出最新的數據,如tail -f文件名指令,在這種方式下,取出的文件名必須是指定的;緩存
Spool Source:是監控配置目錄下新增的文件,並將文件中的內容讀取出來服務器
Sink的做用是取出Channel中的數據,推送到相應的文件或數據存儲系統(如Kafka、Hadoop的HDFS)、數據庫、或者提交到遠程服務器;分佈式
Flume Sink也提供了各類sink的實現,包括HDFS sink、Logger sink、Avro sink、File Roll sink、Null sink、HBase sink等等;oop
Flume Sink在設置存儲數據時,能夠向文件系統、數據庫、Hadoop中存儲數據,在日誌數據較小時,能夠將數據存儲在文件中,而且設定必定的時間間隔保存數據。在日誌數據較多時,能夠將相應的日誌數據存儲到Hadoop中,便於往後對數據進行分析。測試
Flume Channel主要提供一個隊列的能力,對Source中的數據進行簡單的緩存;spa
Flume對Channel則提供了Memory Channel、JDBC Channel、File Channel;代理
Memory Channel:能夠實現高吞吐量,可是沒法保證數據的完整行;
File Channel:保證數據的完整性和一致性。在具體配置FileChannel時,建議FileChannel設置的目錄和程序日誌文件保存的目錄在不一樣磁盤,從而提升效率。
Flume的安裝
(1)確保系統已經安裝了JDK1.7+,而且配置了Java的環境變量;
(2)下載二進制安裝包,地址:http://flume.apache.org/download.html
(3)建立Flume用戶,上傳Flume到用戶目錄,解壓,重命名;
(4)複製flume-env.sh.template到flume-env.sh,複製flume-conf.properties.template到flume-conf.properties
Flume數據收集測試
利用netcat,發送數據,測試flume是否能收到數據:
Flume的配置以下:
agent.sources = r1
agent.channels = memoryChannel
agent.sinks = k1
# For each one of the sources, the type is defined
agent.sources.r1.type = netcat
agent.sources.r1.bind = localhost
agent.sources.r1.port = 8888
agent.sources.r1.channels = memoryChannel
# Each sink's type must be defined
agent.sinks.k1.type = logger #sink的type是logger,收集的數據會進行日誌打印
agent.sinks.k1.channel = memoryChannel
# Each channel's type is defined.
agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 100
agent.channels.transactionCapacity = 100
從配置文件能夠看出,此處的flume代理的名字是agent,採集的數據類型是 localhost 的netcat,端口是8888,數據存儲類型是內存存儲。
啓動flume:
flume-ng agent -n agent -c conf -f /home/flume/flume/conf/flume-conf.properties -Dflume.root.logger=INFO,console
命令參數說明:
-n: 是-name的縮寫,是指代理的名稱,在上面的flume中,咱們的代理名稱是agent;
-c: 是-conf的縮寫,是指配置文件flume-conf.properties所在的目錄;
-f: 是-file的縮寫,是指配置文件flume-conf.properties的路徑;
-Dflume.root.logger=INFO,console 設置日誌等級
同時利用netcat發送信息,咱們看flume 的輸出信息:
咱們能夠看到Flume成功收集到咱們nc發送的信息。