Flume 概念理解
flume最一個可靠的、分佈式的和高可用的海量日誌採集、聚合和傳輸的系統。
- Client:生產數據,運行在獨立的線程
- Event:事件,即一個數據單元,也就是每次發送的一個數據或消息(由消息頭和消息體組成)。
- Flow:event從數據發送方到接收方遷移的一個抽象過程。–數據傳輸流向
- Agent:一個獨立的Flume進程,處理event,也是數據傳輸的基本單元,包含組件Source、Channel、Sink。(Agent使用JVM運行Flume,每臺機器運行一個agent,但是可以在一個agent中包含多個sources和sinks)
- Source:數據收集組件,作爲agent的數據來源,與event的數據發送方對應。–從Client收集數據,傳遞給Channel。
- Channel:作爲數據在agent中的臨時存儲,保存有Source組件傳遞過來的event。
- Sink:作爲對Source傳輸到Channel中的event數據的消費,將event數據傳輸到對應的數據接收方(也可以將event數據傳輸給下一個Agent,形成Agent PipeLine)。–Sink從Channel收集數據,運行咋一個獨立線程。
規則:
- 每個Source可以傳遞多個Channel
- 每個Channel可以接收多個Source發送的Event,也可以將Event傳輸給多個Sink
- 一個Sink只能消費一個Channel中的Event數據
- 當Source接收的是一個Agent來源的數據時,它的數據格式和響應配置要和上一個Agent的數據格式及配置一致