使用Apache Flume抓取數據(1)


使用Apache Flume抓取數據,怎麼來抓取呢?不過,在瞭解這個問題之前,我們必須明確ApacheFlume是什麼?

一、什麼是Apache Flume

Apache Flume是用於數據採集的高性能系統 ,名字來源於原始的近乎實時的日誌數據採集工具,現在廣泛用於任何流事件數據的採集,支持從很多數據源聚合數據到HDFS。

最初由Cloudera開發 ,在2011年貢獻給了Apache基金會 ,在2012年變成了Apache的頂級項目,Flume OG升級換代成了Flume NG。

Flume具有橫向擴展、延展性、可靠性的優勢

二、Flume 體系結構

Source:接受外部系統生成event

Sink:發送event到指定的目的地

Channel:從Source緩存event,直到Sink把event取走

Agent:一個獨立的Flume進程,包含了source,channel和sink組件

三、Flume設計目標:可靠性

Channels提供了Flume可靠性保障 ,那麼它通過什麼樣的方式來保障呢?默認的模式就是Memory Channel,Memory Channel就是內存,所有的數據存放在內存當中。那麼,這裏就會存在一個問題?如果Channel的節點出現斷電,數據就會丟失。爲解決這一問題,這裏有另外一種模式,就是基於磁盤的Channel,基於磁盤的隊列確保出現斷電時數據不丟失 。

另外,Agent和Channel之間的數據傳輸是事務性的 ,傳輸給下游agent失敗的數據會回滾和重試 。相同的任務可以配置多個Agent,

比如,兩個agent完成一個數據採集作業,如果一個agent失敗,則上游的agent會失敗切換到另一個。

四、Flume設計目標:擴展性

當我們採集的數據特別多的時候,可以通過添加更多的系統資源從而線性地增加系統性能。而且Flume可橫向的擴展規模 ,隨着複雜增加,可以添加更多的機器到配置當中 。

五、Flume設計目標:延展性

延展性就是能夠添加新的功能到系統中。Flume通過添加Sources和Sinks到現有的存儲層或數據平臺,常見的Sources包括files、syslog和任何linux進程的標準輸出的數據;常用Sinks包括本地文件系統或HDFS,開發員可以寫自己的Sources或Sinks。

六、常見的Flume數據源

wKioL1h-4wvhsQpaAAIH_BaB4aM451.png-wh_50

七、大規模部署實例

Flume使用agents收集數據 ,Agents可以從很多源接收數據,包括其他agents。大規模的部署使用多層來實現擴展性和可靠,Flume支持傳輸中數據的檢查和修改。

wKiom1h-4y_iAbbFAAHi4tDOBA0435.png-wh_50

以上就是關於Apache Flume的部分詳情介紹,後續將會繼續分享。大數據將會是未來的風口,要想很好的站在風口上,就要持續不斷地學習和努力,這裏推薦大家關注一個微信公衆號“大數據cn ”,裏面有很多關於大數據知識的介紹,對於想要了解和學習大數據的人是一個很好的平臺。

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章