一、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)挂了怎麼辦?
重新開機