使用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數據源
七、大規模部署實例
Flume使用agents收集數據 ,Agents可以從很多源接收數據,包括其他agents。大規模的部署使用多層來實現擴展性和可靠,Flume支持傳輸中數據的檢查和修改。
以上就是關於Apache Flume的部分詳情介紹,後續將會繼續分享。大數據將會是未來的風口,要想很好的站在風口上,就要持續不斷地學習和努力,這裏推薦大家關注一個微信公衆號“大數據cn ”,裏面有很多關於大數據知識的介紹,對於想要了解和學習大數據的人是一個很好的平臺。