天天看點

Flume面試問題

一、flume的組成

1.source

1)taildir source :
		·斷點續傳,多目錄
		·apache flume 1.7  ,CDH1.6
		·自定義source實作斷點續傳
		·用offset落盤判定傳入量,是以不會丢失資料,但會産生重複資料。
		·自身效率低,在企業中不常在source端進行對重複資料的清洗去重。
		·去重在下一級進行處理:redis,flink,group by  , dwd
           

2.channel

1)file channel:
		磁盤,效率低,可靠性高
2)memory channel
		記憶體,效率高,可靠性低
3)kafka channel
		存kafka  ->  磁盤,可靠性高,效率高file,低于memory。kafka channel -> memory channel + kafka sink
4)下一級是kafka:kafka channel
5)下一級不是kafka,看求效率還是可靠性
	 傳輸日志,memory
	 傳輸業務/金融,file
           

3.sink

隻用HDFS sink:

1)小檔案

2)大小 -> 128m

時間 -> 1H

event -> 0個

二、flume的三個器

1.攔截器

兩個地方用到了攔截器:
	1)kafka前的flume:ETL攔截器
		進行ETL清洗,将json不完整的資料幹掉
	
	2)kafka後的flume:時間戳攔截器
	hive中的資料存儲是按照是時間進行分區的
	零點漂移問題:1月4号中23.59寫入的資料在1月5号00:00被接收到,但是資料仍然屬于4号,需要将5号中資料轉到4号。
	
	3)自定義攔截器步驟
	3-1:自定義類實作interceptor接口
	3-2:重寫4個方法
	3-3:初始化
	3-4:關閉
	3-5:單event處理
	3-6:多event處理
           

2.選擇器

2-1:M:把日志選擇性的發送到制定通道
	2-2:RE(預設): 全部往下發送
           

3.監控器

·如果發現put 或者take嘗試送出的次數 ,遠遠大于最終送出成功的次數, 說明發生了事務復原
	·解決方法:增加記憶體
	·怎麼增加:
		1)flume-env.sh -> 預設2000M,提升到4-6G
		2)考慮增加flume台數
           

三、flume的優化和挂了怎麼辦

1)file channel 能配置多目錄,盡可能配置多塊磁盤
2)HDFS Sink
	2-1:小檔案
	2-2:大小 ---> 128m
			 時間 ---> 1H
			 envent個數 ---> 0

3)挂了怎麼辦? 
	重新開機