Flume
flume是一個(gè)日志采集工具敬特,這里需要注意,必須是日志哦牺陶。
當(dāng)然了數(shù)據(jù)采集工具還有很多了伟阔,不過Flume應(yīng)該是最火的,這里這里只講這個(gè)掰伸。
flume有三個(gè)主要的組件皱炉,分別是source,channel和sink
source:接受日志數(shù)據(jù)的組件狮鸭,可以處理各種類型各種格式的日志數(shù)據(jù)合搅。當(dāng)然也只能是日志數(shù)據(jù),主要有avro歧蕉、exec灾部、netcat之類的。
channel:這個(gè)呢就是source和sink間的緩沖區(qū)惯退,sink比較脆弱啦赌髓,一股腦涌進(jìn)去人家也承受不了,就得緩沖一下啦。這樣就允許source和sink運(yùn)行在不同的速率上春弥。
明面上channel好像就這點(diǎn)作用呛哟,但是,你可不要被她的外表欺騙了匿沛。channel起到的作用遠(yuǎn)不止于此扫责。這里的緩沖帶來的另一個(gè)優(yōu)勢(shì)就是線程上面,source和sink可以在不用速率上運(yùn)行逃呼,那么這就意味著可以同時(shí)處理多個(gè)source和sink鳖孤,保持線程的安全。常見的channel有memory channel抡笼、file channel和kafka channel苏揣。
memory和file的區(qū)別其實(shí)也很明顯,memory是內(nèi)存推姻,file是文件平匈,緩存到內(nèi)存memory中,當(dāng)然毫無(wú)疑問的快啦藏古,但容量有限增炭,而且萬(wàn)一出故障了,就沒了拧晕。存文件file相對(duì)慢一些隙姿,但是容量大,相對(duì)安全厂捞。就當(dāng)扯平了输玷。
sink:他就不斷從channel中取數(shù)據(jù)了,發(fā)送到目的地靡馁,可以是hdfs欲鹏,hive,HBASE奈嘿。
sink也有很多貌虾,值得一提的就是logger sink,這個(gè)主要用于測(cè)試裙犹,假如你的sink壞掉了,可以考慮用這個(gè)替換衔憨,如果顯示數(shù)據(jù)了叶圃,那就是sink壞了,如果還不顯示數(shù)據(jù)践图,那就是前面錯(cuò)了掺冠。
還有一個(gè)點(diǎn)也說一下吧,就是event,這個(gè)是flume數(shù)據(jù)傳輸?shù)淖钚挝坏抡福唧w多大也沒說斥黑。
flume的拓?fù)浣Y(jié)構(gòu)
這里大概說一下吧,就是看flume的sink眉厨,前面說了sink發(fā)送的目的地很多锌奴,那么,如果sink的目的地是下一個(gè)source怎么辦呢憾股?這就是一個(gè)agent的串聯(lián)鹿蜀。感覺沒啥用,所以這種出現(xiàn)的也很少服球,多個(gè)串聯(lián)反而會(huì)影響效率茴恰。
另一種就是復(fù)制模式,就是一個(gè)source連了多個(gè)channel斩熊,每個(gè)channel對(duì)應(yīng)一個(gè)sink往枣,發(fā)往不同的目的地。
聚合模式
最常用的其實(shí)是聚合模式粉渠,當(dāng)然也非常有效婉商,日常的web應(yīng)用會(huì)連在上百個(gè)服務(wù)器中,大的甚至是上千上萬(wàn)個(gè)服務(wù)器渣叛。這種日志丈秩,想想就很惡心。用聚合模式來處理就可以很好的解決淳衙,每臺(tái)服務(wù)器部署一個(gè)flume采集日志蘑秽,傳送到一個(gè)集中收集日志的flume,再由這個(gè)flume傳到目標(biāo)地區(qū)中箫攀。
后面的這個(gè)實(shí)例有些麻煩旧困,明天再看吧