一、flume架構(gòu)
一個(gè)flume進(jìn)程分為三個(gè)部分:source割去、channel脸爱、sink遇汞,總體稱為一個(gè)Agent,是一個(gè)JVM進(jìn)程
1)source
作用:讀取數(shù)據(jù),傳送(put)給channel一個(gè)putList(里面是多個(gè)event)空入,可支持多種數(shù)據(jù)類型的讀嚷缢:
exec:監(jiān)聽一個(gè)文件
spooling directory:監(jiān)聽一個(gè)文件夾
avro:數(shù)據(jù)源是Flume時(shí)使用
netcat:數(shù)據(jù)源是網(wǎng)絡(luò)端口時(shí)使用,一般測(cè)試時(shí)使用
2)channel
作用:位于source和sink之間的緩沖區(qū)
· 當(dāng)source-put-channel不成功時(shí)歪赢,數(shù)據(jù)會(huì)回滾到putList中
· 當(dāng)sink-take-channel不成功時(shí)化戳,數(shù)據(jù)會(huì)回滾到channel中
channel類型:
Memory Channel:基于內(nèi)存的緩沖區(qū)
File Channel:基于磁盤的緩沖區(qū)
Kafka Channel:基于消息隊(duì)列的緩沖區(qū)
3)sink
作用:不斷地輪詢讀取(take)Channel中的事件且批量的從channel中移除他們埋凯,并將這些事件批量寫入到存儲(chǔ)系統(tǒng)点楼、或被發(fā)送到另一個(gè)Flume Agent中
目的地類型:
HDFS:放到文件系統(tǒng)中
Kafka:放到消息隊(duì)列中
Avro:目的地為下一個(gè)flume,用于兩個(gè)Flume相連時(shí)
file_roll:放到本地文件中
logger:在控制臺(tái)顯示白对,一般測(cè)試時(shí)使用
二掠廓、Flume使用文檔
1)開啟flume
flume-ng agent
--name a3 ???????? 給Agent起一個(gè)名字
--conf conf/? ? ? ? 表示flume的配置文件在flume/conf文件夾下
--conf-file job/flume-dir-hdfs.conf ?????指定本次Agent的配置在xxx中
2)復(fù)雜場(chǎng)景下Flume結(jié)構(gòu)圖繪制①
多個(gè)Flume串聯(lián)時(shí),需要指定不同端口號(hào)甩恼,根據(jù)端口號(hào)確定接受哪個(gè)Agent和發(fā)送給哪個(gè)Agent
注:
Flume-1蟀瞧;Flume-2發(fā)送到Flume-3的4141端口
Flume-3監(jiān)聽自己的4141端口(不能監(jiān)聽其他節(jié)點(diǎn)端口,只能其他節(jié)點(diǎn)sink發(fā)送到自己条摸,監(jiān)聽自己)
3)復(fù)雜場(chǎng)景下Flume結(jié)構(gòu)圖繪制②
需求:
1黄橘、flume-1監(jiān)控hive.log日志,flume-1的數(shù)據(jù)傳送給flume-2屈溉,flume-2將數(shù)據(jù)追加到本地文件塞关,同時(shí)將數(shù)據(jù)傳輸?shù)絝lume-3。
2子巾、flume-4監(jiān)控本地另一個(gè)自己創(chuàng)建的文件any.txt帆赢,并將數(shù)據(jù)傳送給flume-3。
3线梗、flume-3將匯總數(shù)據(jù)寫入到HDFS椰于。