flume是一款可以從不同的數(shù)據(jù)源把數(shù)據(jù)集中存到HDFS或者Hbase中,flume通過agent來完成接受收集數(shù)據(jù),agent是一個獨立的守護(hù)進(jìn)程,從客戶端處接受數(shù)據(jù),傳給下一個節(jié)點的agent,agent的內(nèi)部有三個組件Source、channel、sink。
1.source:一個flume源,對一個外部數(shù)據(jù)源負(fù)責(zé),將外部源上的事件以可以識別的格式發(fā)送到flume中,將事件傳送給channel
2.channel:是一個短暫的存儲容器,把source發(fā)送過來的event緩存起來,等到sink來消費掉,可以連接到任意數(shù)量的source和sink,channel是一個完整的事物,保證數(shù)據(jù)在接受和存儲的時候達(dá)到一致性目的;可以通過參數(shù)設(shè)置event的數(shù)量;flume的channel有FileChannel和MemoryChannel,一般情況下使用前者,以保證數(shù)據(jù)不會丟失(wal:預(yù)寫功能)
3.sink:從channel中消費數(shù)據(jù),把數(shù)據(jù)存儲到HDFS或者Hbase上,或者到下一個agent;sink取出event之后,channel中的event也被移除了
;sink必須對應(yīng)一個確切的channel;

flume可以對數(shù)據(jù)進(jìn)行過濾,這個功能被稱為Interceptor,這個功能被設(shè)置在source,一個source可以設(shè)置多個intercept,按照順序處理,目前攔截形式有:timestamp、host、static等等
flume的可靠性:
1.處理過程中,如果因為各種原因,在某一步被迫結(jié)束了,這個數(shù)據(jù)會在下一次開啟重新傳輸
2.channel會存儲數(shù)據(jù),以供再次可以傳輸