帶你看懂大數據采集引擎之Flume&采集目錄中的日志


帶你看懂大數據采集引擎之Flume&采集目錄中的日志

一、Flume的介紹:

Flume由Cloudera公司開發,是一種提供高可用、高可靠、分布式海量日志采集、聚合和傳輸的系統,Flume支持在日志系統中定制各類數據發送方,用於采集數據;同時,flume提供對數據進行簡單處理,並寫到各種數據接收方的能力,如果能用一句話概括Flume,那么Flume是實時采集日志的數據采集引擎。

二、Flume的體系結構:

帶你看懂大數據采集引擎之Flume&采集目錄中的日志


Flume的體系結構分成三個部分:數據源、Flume、目的地

數據源種類有很多:可以來自directory、http、kafka等,flume提供了source組件用來采集數據源。

1、source作用:采集日志

source種類:1、spooling directory source:采集目錄中的日志

2、htttp source:采集http中的日志

3、kafka source:采集kafka中的日志

……

采集到的日志需要進行緩存,flume提供了channel組件用來緩存數據。

2、channel作用:緩存日志

channel種類:1、memory channel:緩存到內存中(最常用)

2、JDBC channel:通過JDBC緩存到關系型數據庫中

3、kafka channel:緩存到kafka中

……

緩存的數據最終需要進行保存,flume提供了sink組件用來保存數據。

3、sink作用:保存日志

sink種類:1、HDFS sink:保存到HDFS中

2、HBase sink:保存到HBase中

3、Hive sink:保存到Hive中

4、kafka sink:保存到kafka中

……

官網中有flume各個組件不同種類的列舉:

帶你看懂大數據采集引擎之Flume&采集目錄中的日志

三、安裝和配置Flume:

1、安裝:tar -zxvf apache-flume-1.7.0-bin.tar.gz -C ~/training

2、創建配置文件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

四、使用Flume語句采集數據:

1、創建目錄,用於保存日志:

mkdir /root/training/logs

2、啟動Flume,准備實時采集日志:

bin/flume-ng.agent -n a4 -f myagent/a4.conf -c conf -Dflume.root.logger=INFO.console

3、將日志導入到目錄中:

cp * ~/training/logs

五、Sqoop和Flume的相同點和不同點:

相同點:sqoop和flume只有一種安裝模式,不存在本地模式、集群模式等。

不同點:sqoop批量采集數據,flume實時采集數據。

作者:李金澤AllenLi,清華大學碩士研究生,研究方向:大數據和人工智能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM