1、Flume的介紹:數據庫
Flume由Cloudera公司開發,是一種提供高可用、高可靠、分佈式海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各種數據發送方,用於採集數據;同時,flume提供對數據進行簡單處理,並寫到各類數據接收方的能力,若是能用一句話歸納Flume,那麼Flume是實時採集日誌的數據採集引擎。apache
2、Flume的體系結構:緩存
Flume的體系結構分紅三個部分:數據源、Flume、目的地分佈式
數據源種類有不少:能夠來自directory、http、kafka等,flume提供了source組件用來採集數據源。oop
一、source做用:採集日誌大數據
source種類:一、spooling directory source:採集目錄中的日誌ui
二、htttp source:採集http中的日誌人工智能
三、kafka source:採集kafka中的日誌日誌
……blog
採集到的日誌須要進行緩存,flume提供了channel組件用來緩存數據。
二、channel做用:緩存日誌
channel種類:一、memory channel:緩存到內存中(最經常使用)
二、JDBC channel:經過JDBC緩存到關係型數據庫中
三、kafka channel:緩存到kafka中
……
緩存的數據最終須要進行保存,flume提供了sink組件用來保存數據。
三、sink做用:保存日誌
sink種類:一、HDFS sink:保存到HDFS中
二、HBase sink:保存到HBase中
三、Hive sink:保存到Hive中
四、kafka sink:保存到kafka中
……
官網中有flume各個組件不一樣種類的列舉:
3、安裝和配置Flume:
一、安裝:tar -zxvf apache-flume-1.7.0-bin.tar.gz -C ~/training
二、建立配置文件a4.conf:定義agent,定義source、channel、sink並組裝起來,定義生成日誌文件的條件。
如下是a4.conf配置文件中的內容,其中定義了數據源來自目錄、數據緩存到內存中,數據最終保存到HDFS中,而且定義了生成日誌文件的條件:日誌文件大小達到128M或者通過60秒生成日誌文件。
#定義agent名, source、channel、sink的名稱
a4.sources = r1
a4.channels = c1
a4.sinks = k1
#具體定義source
a4.sources.r1.type = spooldir
a4.sources.r1.spoolDir = /root/training/logs
#具體定義channel
a4.channels.c1.type = memory
a4.channels.c1.capacity = 10000
a4.channels.c1.transactionCapacity = 100
#定義攔截器,爲消息添加時間戳
a4.sources.r1.interceptors = i1
a4.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
#具體定義sink
a4.sinks.k1.type = hdfs
a4.sinks.k1.hdfs.path = hdfs://192.168.157.11:9000/flume/%Y%m%d
a4.sinks.k1.hdfs.filePrefix = events-
a4.sinks.k1.hdfs.fileType = DataStream
#不按照條數生成文件
a4.sinks.k1.hdfs.rollCount = 0
#HDFS上的文件達到128M時生成一個日誌文件
a4.sinks.k1.hdfs.rollSize = 134217728
#HDFS上的文件達到60秒生成一個日誌文件
a4.sinks.k1.hdfs.rollInterval = 60
#組裝source、channel、sink
a4.sources.r1.channels = c1
a4.sinks.k1.channel = c1
4、使用Flume語句採集數據:
一、建立目錄,用於保存日誌:
mkdir /root/training/logs
二、啓動Flume,準備實時採集日誌:
bin/flume-ng.agent -n a4 -f myagent/a4.conf -c conf -Dflume.root.logger=INFO.console
三、將日誌導入到目錄中:
cp * ~/training/logs
5、Sqoop和Flume的相同點和不一樣點:
相同點:sqoop和flume只有一種安裝模式,不存在本地模式、集羣模式等。
不一樣點:sqoop批量採集數據,flume實時採集數據。
做者:李金澤AllenLi,清華大學碩士研究生,研究方向:大數據和人工智能