Flume总结
Flume
?? ?Flume概述
?? ??? ?Sqoop是采集離線數據到大數據平臺
?? ??? ??? ?Flume是采集流式數據到大數據平臺
?? ??? ?Flume概念
?? ??? ??? ?Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統。Flume基于流式架構,靈活簡單。
?? ??? ?為什么使用flume?
?? ??? ??? ?爬取的數據,直接從本地到hdfs,不實時,并且讀取速度和向hdfs寫數據的速度很難匹配。沒有緩沖處理
?? ??? ??? ?flume最主要的作用就是,實時讀取服務器本地磁盤的數據,將數據寫入到hdfs中
?? ??? ?Flume組成架構 角色
?? ??? ??? ?Agent
?? ??? ??? ??? ?Agent是一個JVM進程,它以事件(Event)的形式將數據從源頭送至目的,是Flume數據傳輸的基本單元。啟動agent之后,進程名稱:Application
?? ??? ??? ??? ?Agent主要有3個部分組成,Source、Channel、Sink。
?? ??? ??? ?Source
?? ??? ??? ??? ?Source是負責接收數據到Flume Agent的組件。Source組件可以處理各種類型、各種格式的日志數據,
?? ??? ??? ??? ?包括avro、thrift、exec(execute)、jms、spooling directory、netcat(讀取端口數據)、sequence generator、syslog、http、legacy。
?? ??? ??? ?Channel
?? ??? ??? ??? ?Channel是位于Source和Sink之間的緩沖區。因此,Channel允許Source和Sink運作在不同的速率上。Channel是線程安全的,可以同時處理幾個Source的寫入操作和幾個Sink的讀取操作。
?? ??? ??? ??? ?Flume自帶兩種Channel:Memory Channel和File Channel。
?? ??? ??? ??? ?Memory Channel是內存中的隊列。Memory Channel在不需要關心數據丟失的情景下適用。如果需要關心數據丟失,那么Memory Channel就不應該使用,因為程序死亡、機器宕機或者重啟都會導致數據丟失。
?? ??? ??? ??? ?File Channel將所有事件寫到磁盤。因此在程序關閉或機器宕機的情況下不會丟失數據。
?? ??? ??? ?Sink
?? ??? ??? ??? ?Sink不斷地輪詢Channel中的事件且批量地移除它們,并將這些事件批量寫入到存儲、或者被發送到另一個Flume Agent。
?? ??? ??? ??? ?Sink是完全事務性的。在從Channel批量刪除數據之前,每個Sink用Channel啟動一個事務。批量事件一旦成功寫出到存儲系統或下一個Flume Agent,Sink就利用Channel提交事務。事務一旦被提交,該Channel從自己的內部緩沖區刪除事件。
?? ??? ??? ??? ?Sink組件目的地包括hdfs、logger、kafka消息隊列、avro、thrift、ipc、file、null、HBase、solr、自定義。
?? ??? ??? ? Event
?? ??? ??? ??? ?傳輸數據單元(一條消息|一行數據等),Flume數據傳輸的基本單元,以事件的形式將數據從源頭送至目的地。
?? ?Flume安裝
?? ??? ?https://blog.csdn.net/qq_41946557/article/details/102997071
?? ?案例實操
?? ??? ?https://blog.csdn.net/qq_41946557/article/details/102997151
總結
- 上一篇: 分享实用监控脚本:使用Shell检查进程
- 下一篇: CDH是什么?