Apache 是一個高可用、高可靠的,分散式的海量日誌採集、聚合、傳輸系統,基於流式架構,靈活簡單。 Flume 最主要的作用就是實時讀取伺服器本地磁碟的數據,將數據寫入HDFS中。 Flume組成架構詳解: Source輸入端常用的類型有:spooling directory、exec、avro、 ...
Apache 是一個高可用、高可靠的,分散式的海量日誌採集、聚合、傳輸系統,基於流式架構,靈活簡單。 Flume 最主要的作用就是實時讀取伺服器本地磁碟的數據,將數據寫入HDFS中。 Flume組成架構詳解: Source輸入端常用的類型有:spooling directory、exec、avro、syslog、netcat 等 Put事務的流程: doPut:將批數據先寫入臨時緩衝區putList doCommit:檢查channel記憶體隊列是否足夠合併 doRollback;channel記憶體隊列空間不足,回滾數據 Channel是位於Source和Sink之間的緩衝區,Flume自帶兩種channel:MemoryChannel和FileChannel MemoryChannel是基於記憶體的緩存,在不需要關心數據丟失的情景下使用。 FileChannel是Flume的持久化Channel,系統宕機不會丟失數據。 Take事務: doTake:先將數據取到臨時緩衝區takeList doCommit:如果數據發送成功,則清除臨時緩衝區的takeList doRollback:數據發送過程中如果出現異常,rollback將臨時緩衝區takeList中的數據歸還給channel記憶體隊列 Sink組件常見的目的地包括: HDFS、Kafka、avro、logger、File、自定義。 Sink不斷地輪詢Channel中的事件且批量地移除它們,並將這些事件批量寫入到存儲或索引系統、或者被髮送到另一個Flume Agent。 Sink是完全事務性的。在從Channel批量刪除數據之前,每個Sink用Channel啟動一個事務。批量事件一旦成功寫出到存儲系統或下一個Flume Agent,Sink就利用Channel提交事務。事務一旦被提交,該Channel從自己的內部緩衝區刪除事件。 Sink組件目的地包括hdfs、logger、avro、thrift、ipc、file、null、HBase、solr、自定義。 Agent是一個JVM進程,是flume數據傳輸的基本單元 Agent主要有3個部分組成,Source、Channel、Sink。