Flume 1.8.0 開發者指南-個人翻譯版
(為了方便學習利用週末翻譯出來的,現在拿出來和大家免費分享,歡迎轉載,但請尊重我個人的勞動成果,請標明來源)
(歡迎在評論中交流。如果覺得我翻譯的還可以歡迎讚美和鼓勵,如果發現了翻譯不當之處也歡迎您無須客氣的指出。謝謝!)
介紹
概覽
Apache Flume 是一個分散式的,可靠、可用的系統,能夠用來將大量的日誌資料從很多不同的源收集、聚集和移動到中心化的資料儲存中。
Apache Flume 是Apache基金會的頂級專案。目前在線上有兩個release版本可用,分別是0.9.x和1.x。這篇文件適用於1.x的版本。對於0.9.x版本的程式碼,請參考Flume 0.9.x Developer Guide
架構
資料流模型
“Event”是在Flume 客戶端上流動的資料單元。Event從Source流向Channel再流向Sink,並由Event介面的實現來呈現。一個Event會攜帶附有一組可選標頭(字串屬性)的位元組屬性的有效載荷(payload https://baike.baidu.com/item/payload/3386751)。一個Flume客戶端是一個JVM程序,持有著允許Events從外部源流向外部目標的元件。
Source消費的Events有特定的格式,這些Events由外部源(如web服務)傳遞而來。例如,一個AvroSource例項可以用來從客戶端或是其他Flume客戶端接收Avro型別的Events。Source在接收到Event後,會把Event儲存到一個或多個Channels上。Channel是一種被動的儲存,直到Sink消費之前會一直儲存Event。在Flume中有一種Channel叫FileChannel,它使用本地檔案系統作為後備儲存。Sink負責從Channel中移除Event並將其放入像HDFS這樣的外部儲存中,或是交給下一流程的Source中。在一個客戶端中的,Source和Sink會非同步執行處理暫存在Channel上的Events。
可靠性
Event會被暫存在Flume客戶端的Channel中。在一個流程中,Sink負責將Event傳遞給下一個客戶端或是像HDFS這樣的最終儲存。只有當Event被儲存到下一個客戶端或是最終儲存後才會從Channel被Sink移除。