摘要:今天從設計角度來解析的架構組成及其特點。實際上處理的就是。負責消費從上游節點獲取的,并將其放到中,目前支持等數據流。從取數據并將其放入下游節點。節點中的和被包含在一個事務中。接收上游的,若其中一個接收異常,則所有的都丟棄,這將導致數據重發。
Flume是Apache開發的一款多平臺、分布式、高可用的數據收集聚合系統。今天從設計角度來解析Flume的架構組成及其特點。
首先談一下數據流(data flow)。Flume本質上是對數據流的處理,其定義數據處理的最小單元是event,一個event由包含數據的有效負載(payload)和一組可選屬性組成。Flume實際上處理的就是events flow。
Flume在數據收集和聚合上有很大的靈活性,這得益于其整個系統可以由單個或者多個節點(agent)拼接而成。每個節點負責從上游數據源向下游數據接收方分發event。每個節點既可以作為數據源也可以作為數據接收方。
在節點的內部,agent由source、channel和sink組成。source負責消費從上游節點獲取的events,并將其放到channel中,目前Flume支持Avro、Thrift、Syslog、Netcat等數據流。channel分為兩種類型,一種是memory channel,它適合高吞吐量場景,但節點掛掉后數據可能會丟失。另一種是file channel,也就是channel里的數據會同步到硬盤里,節點意外掛掉后數據可恢復,但處理時間會稍長一些,Flume默認使用file channel。sink從channel取數據并將其放入下游節點。
下圖是從多個web server數據源收集數據,并統一聚合到一個節點,然后將數據導入到hdfs中。
https://flume.apache.org/_images/UserGuide_image02.png
Flume節點還支持更復雜的多源、多數據沉積池的組合,如下圖:
https://flume.apache.org/_images/UserGuide_image01.png
Flume采用事務來保證數據傳輸的可靠性。每個event只有當被確認傳遞到下游節點或者數據沉積池之后才把該event從channel中刪除。節點中的sources和sinks被包含在一個事務中。source接收上游的events,若其中一個event接收異常,則所有的events都丟棄,這將導致數據重發。同理,sink在將events導入到下游數據沉積池時,任何一個event發送異常,則所有的events都將重新發送。
具體如何使用配置請參考:
https://flume.apache.org/Flum...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65243.html
摘要:包括服務的自動化部署,以及鏈路監控等并未細說提及。結語誠然,整個服務架構可以輕松應對千萬級并發。期望,整個服務架構能伴隨公司繼續成長壯大。 背景介紹 回顧 ShareSDK,顧名思義,分享的SDK組件,公司基于互聯網,早期主要以ShareSDK起家。今日思來,很幸運,能陪著ShareSDK一起成長。 showImg(https://segmentfault.com/img/bV0Wo5...
閱讀 1662·2019-08-30 12:51
閱讀 656·2019-08-29 17:30
閱讀 3696·2019-08-29 15:17
閱讀 852·2019-08-28 18:10
閱讀 1356·2019-08-26 17:08
閱讀 2169·2019-08-26 12:16
閱讀 3429·2019-08-26 11:47
閱讀 3497·2019-08-23 16:18