Flume概念與原理、與Kafka優勢對比
1 .背景
flume是由cloudera軟體公司產出的可分散式日誌收集系統,後與2009年被捐贈了apache軟體基金會,為hadoop相關元件之一。尤其近幾年隨著flume的不斷被完善以及升級版本的逐一推出,特別是flume-ng;同時flume內部的各種元件不斷豐富,使用者在開發的過程中使用的便利性得到很大的改善,現已成為apache top專案之一.
2 .概述
1. 什麼是flume?
apache Flume 是一個從可以收集例如日誌,事件等資料資源,並將這些數量龐大的資料從各項資料資源中集中起來儲存的工具/服務,或者數集中機制。flume具有高可用,分散式,配置工具,其設計的原理也是基於將資料流,如日誌資料從各種網站伺服器上彙集起來儲存到HDFS,HBase等集中儲存器中。其結構如下圖所示:
2.應用場景
比如我們在做一個電子商務網站,然後我們想從消費使用者中訪問點特定的節點區域來分析消費者的行為或者購買意圖. 這樣我們就可以更加快速的將他想要的推送到介面上,實現這一點,我們需要將獲取到的她訪問的頁面以及點選的產品資料等日誌資料資訊收集並移交給Hadoop平臺上去分析.而Flume正是幫我們做到這一點。現在流行的內容推送,比如廣告定點投放以及新聞私人定製也是基於次,不過不一定是使用FLume,畢竟優秀的產品很多,比如facebook的Scribe,還有Apache新出的另一個明星專案chukwa,還有淘寶Time Tunnel。
3.Flume的優勢
1. Flume可以將應用產生的資料儲存到任何集中儲存器中,比如HDFS,HBase
2. 當收集資料的速度超過將寫入資料的時候,也就是當收集資訊遇到峰值時,這時候收集的資訊非常大,甚至超過了系統的寫入資料能力,這時候,Flume會在資料生產者和資料收容器間做出調整,保證其能夠在兩者之間提供一共平穩的資料.
3. 提供上下文路由特徵
4. Flume的管道是基於事務,保證了資料在傳送和接收時的一致性.
5. Flume是可靠的,容錯性高的,可升級的,易管理的,並且可定製的。
4. Flume具有的特徵:
1. Flume可以高效率的將多個網站伺服器中收集的日誌資訊存入HDFS/HBase中
2. 使用Flume,我們可以將從多個伺服器中獲取的資料迅速的移交給Hadoop中
3. 除了日誌資訊,Flume同時也可以用來接入收集規模巨集大的社交網路節點事件資料,比如facebook,twitter,電商網站如亞馬遜,flipkart等
4. 支援各種接入資源資料的型別以及接出資料型別
5. 支援多路徑流量,多管道接入流量,多管道接出流量,上下文路由等
6. 可以被水平擴充套件
3. Flume的結構
1. flume的外部結構:
如上圖所示,資料發生器(如:facebook,twitter)產生的資料被被單個的執行在資料發生器所在伺服器上的agent所收集,之後資料收容器從各個agent上彙集資料並將採集到的資料存入到HDFS或者HBase中
2. Flume 事件
事件作為Flume內部資料傳輸的最基本單元.它是由一個轉載資料的位元組陣列(該資料組是從資料來源接入點傳入,並傳輸給傳輸器,也就是HDFS/HBase)和一個可選頭部構成.
典型的Flume 事件如下面結構所示:
我們在將event在私人定製外掛時比如:flume-hbase-sink外掛是,獲取的就是event然後對其解析,並依據情況做過濾等,然後在傳輸給HBase或者HDFS.
3.Flume Agent
我們在瞭解了Flume的外部結構之後,知道了Flume內部有一個或者多個Agent,然而對於每一個Agent來說,它就是一共獨立的守護程序(JVM),它從客戶端哪兒接收收集,或者從其他的 Agent哪兒接收,然後迅速的將獲取的資料傳給下一個目的節點sink,或者agent. 如下圖所示flume的基本模型
Agent主要由:source,channel,sink三個元件組成.
Source:
從資料發生器接收資料,並將接收的資料以Flume的event格式傳遞給一個或者多個通道channal,Flume提供多種資料接收的方式,比如Avro,Thrift,twitter1%等
Channel:
channal是一種短暫的儲存容器,它將從source處接收到的event格式的資料快取起來,直到它們被sinks消費掉,它在source和sink間起著一共橋樑的作用,channal是一個完整的事務,這一點保證了資料在收發的時候的一致性. 並且它可以和任意數量的source和sink連結. 支援的型別有: JDBC channel , File System channel , Memort channel等.
sink:
sink將資料儲存到集中儲存器比如Hbase和HDFS,它從channals消費資料(events)並將其傳遞給目標地. 目標地可能是另一個sink,也可能HDFS,HBase.
它的組合形式舉例:
以上介紹的flume的主要元件,下面介紹一下Flume外掛:
1. Interceptors攔截器
用於source和channel之間,用來更改或者檢查Flume的events資料
2. 管道選擇器 channels Selectors
在多管道是被用來選擇使用那一條管道來傳遞資料(events). 管道選擇器又分為如下兩種:
預設管道選擇器: 每一個管道傳遞的都是相同的events
多路複用通道選擇器: 依據每一個event的頭部header的地址選擇管道.
3.sink執行緒
用於啟用被選擇的sinks群中特定的sink,用於負載均衡.4.Flume與Kafka對比
- kafka和flume都是日誌系統,kafka是分散式訊息中介軟體,自帶儲存,提供push和pull存取資料功能。flume分為agent(資料採集器),collector(資料簡單處理和寫入),storage(儲存器)三部分,每一部分都是可以定製的。比如agent採用RPC(Thrift-RPC)、text(檔案)等,storage指定用hdfs做。
- kafka做日誌快取應該是更為合適的,但是 flume的資料採集部分做的很好,可以定製很多資料來源,減少開發量。所以比較流行flume+kafka模式,如果為了利用flume寫hdfs的能力,也可以採用kafka+flume的方式。
採集層 主要可以使用Flume, Kafka兩種技術。
Flume:Flume 是管道流方式,提供了很多的預設實現,讓使用者通過引數部署,及擴充套件API.
Kafka:Kafka是一個可持久化的分散式的訊息佇列。
Kafka 是一個非常通用的系統。你可以有許多生產者和很多的消費者共享多個主題Topics。相比之下,Flume是一個專用工具被設計為旨在往HDFS,HBase傳送資料。它對HDFS有特殊的優化,並且集成了Hadoop的安全特性。所以,Cloudera 建議如果資料被多個系統消費的話,使用kafka;如果資料被設計給Hadoop使用,使用Flume。
正如你們所知Flume內建很多的source和sink元件。然而,Kafka明顯有一個更小的生產消費者生態系統,並且Kafka的社群支援不好。希望將來這種情況會得到改善,但是目前:使用Kafka意味著你準備好了編寫你自己的生產者和消費者程式碼。如果已經存在的Flume Sources和Sinks滿足你的需求,並且你更喜歡不需要任何開發的系統,請使用Flume。
Flume可以使用攔截器實時處理資料。這些對資料遮蔽或者過量是很有用的。Kafka需要外部的流處理系統才能做到。
Kafka和Flume都是可靠的系統,通過適當的配置能保證零資料丟失。然而,Flume不支援副本事件。於是,如果Flume代理的一個節點崩潰了,即使使用了可靠的檔案管道方式,你也將丟失這些事件直到你恢復這些磁碟。如果你需要一個高可靠行的管道,那麼使用Kafka是個更好的選擇。
Flume和Kafka可以很好地結合起來使用。如果你的設計需要從Kafka到Hadoop的流資料,使用Flume代理並配置Kafka的Source讀取資料也是可行的:你沒有必要實現自己的消費者。你可以直接利用Flume與HDFS及HBase的結合的所有好處。你可以使用Cloudera Manager對消費者的監控,並且你甚至可以新增攔截器進行一些流處理。
Flume和Kafka可以結合起來使用。通常會使用Flume + Kafka的方式。其實如果為了利用Flume已有的寫HDFS功能,也可以使用Kafka + Flume的方式。
----------------------------------------------------<END>-------------------------------------------------------
相關推薦
Flume概念與原理、與Kafka優勢對比
1 .背景 flume是由cloudera軟體公司產出的可分散式日誌收集系統,後與2009年被捐贈了apache軟體基金會,為hadoop相關元件之一。尤其近幾年隨著flume的不斷被完善以及
阿里P8架構師談:MySQL資料庫的索引原理、與慢SQL優化的5大原則
MySQL憑藉著出色的效能、低廉的成本、豐富的資源,已經成為絕大多數網際網路公司的首選關係型資料庫。雖然效能出色,但所謂“好馬配好鞍”,如何能夠更好的使用它,已經成為開發工程師的必修課,我們經常會從職位描述上看到諸如“精通MySQL”、“SQL語句優化”、“瞭解資料庫原理”等要求。 我們知道一般
阿里P8架構師談:分散式資料庫資料一致性的原理、與技術實現方案!
背景 可用性(Availability)和一致性(Consistency)是分散式系統的基本問題,先有著名的CAP理論定義過分散式環境下二者不可兼得的關係,又有神祕的Paxos協議號稱是史上最簡單的分散式系統一致性演算法並獲得圖靈獎,再有開源產品ZooKeeper實現的Z
Dubbo 原始碼解析 —— 簡單原理、與spring融合
友情提示:歡迎關注公眾號【芋道原始碼】。?關注後,拉你進【原始碼圈】微信群討論技術和原始碼。友情
【深度學習】6:RNN遞迴神經網路原理、與MNIST資料集實現數字識別
前言:自己學習研究完CNN卷積神經網路後,很久的一段時間因為要完成自己的畢業設計就把更新部落格給耽擱了。瞎忙了這麼久,還是要把之前留的補上來。因為“種一棵樹最好的時間是在十年前,其次就是現在!” –—-—-—-—-—-—-—-—-—-—-—-—–—-—-—-—
【clever101的專欄】年輕人需要在自己的生命中保留一個空間,可以與歷史、與藝術、與公民理念相遇。
真名:朱金燦 主要經歷:本科畢業於CUG(武漢)的GIS專業,畢業後參加工作,現在在北京從事軟體開發和團隊管理工作。曾獲有色金屬工業科技進步獎二等獎(獲獎證書連結)。 我的聯絡方式: EMAIL:clever101#163.com 研究方向: 數字影象處理、計算機圖形學。 本部落格內
Vue 與Angular、React框架的對比
首先,我們先了解什麼是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Model(模型)+View(檢視)+controller(控制器),主要是基於分層的目的,讓彼此的職責分開。 View通過Controller來和Model聯絡,Cont
python set(集合) & 與 and 、 | 與 or之間的區別
直接上程式碼:a = set([1, 2, 3, 4, 5]) b = set([4, 5, 6, 7, 8]) #求兩個集合的交集 print(a & b) print(a and b) #求兩個集合的並集 print(a | b) print(a or b)主要的
Kafka簡介、基本原理、執行流程與使用場景
一、簡介 Apache Kafka是分散式釋出-訂閱訊息系統,在 kafka官網上對 kafka 的定義:一個分散式釋出-訂閱訊息傳遞系統。 它最初由LinkedIn公司開發,Linkedin於2010年貢獻給了Apache基金會併成為頂級開源專案。Kafka
Flume概念與原理
一.什麼是Flume? apache Flume 是一個從可以收集例如日誌,事件等資料資源,並將這些數量龐大的資料從各項資料資源中集中起來儲存的工具/服務,或者數集中機制。flume具有高可用,分散式,配置工具,其設計的原理也是基於將資料流,如日誌資料從各種網
如何檢視spark與hadoop、kafka、Scala、flume、hive等相容版本【適用於任何版本】
問題導讀1.通過什麼途徑,可以檢視與spark相容的元件版本?2.如何獲取pom檔案?3.pom檔案中包含了哪些資訊?4.spark編譯通過什麼引數可以指定hadoop版本?當我們安裝spark的時
一、zookeeper詳解概念與原理(總結的乾貨)
ZK總結: zookeeper(以下就用ZK代替)是一個分散式協調系統,主要有兩大功能,檔案系統和通知系統。 1、zk(分散式高性協調系統): 功能: 配置服務 叢集管理 名字服務 分散式同步 釋出訂閱(註冊中心) 資料庫動態切換 分散式日誌收集 分散式
哈希(Hash)與加密(Encrypt)的基本原理、區別及工程應用
class 區別 自己 裏的 lpad returns .net 角度 table 0、摘要 今天看到吉日嘎拉的一篇關於管理軟件中信息加密和安全的文章,感覺非常有實際意義。文中作者從實踐經驗出發,討論了信息管理軟件中如何通過哈希和加密進行數據保護。但是從文章評論
【轉】哈希(Hash)與加密(Encrypt)的基本原理、區別及工程應用
phy 理論 靈活運用 十分 實際應用 廣泛 tle 多網站 net 0、摘要 今天看到吉日嘎拉的一篇關於管理軟件中信息加密和安全的文章,感覺非常有實際意義。文中作者從實踐經驗出發,討論了信息管理軟件中如何通過哈希和加密進行數據保護。但是從文章評論中也可以
xss原理、攻擊方式與防禦
客戶端 包含 pre window frame com 跨站 行處理 iframe xss原理: xss叫跨站腳本攻擊,是Web程序中常見的漏洞只用於客戶端的攻擊方式,其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代
線性規劃中的單純形法與內點法(原理、步驟以及matlab實現)(三)
應用 最大化 round 並不是 兩個 生產 陰影 3.3 ima 在本系列的第三篇博客中,筆者討論對偶單純形法的相關理論和應用 2.3 Dual Simplex Method(對偶單純形法) Contents 2.3.1 對偶問題產生的原因 2.3.2 對偶問題的
Python第一天:編程的概念、python的介紹與安裝、python的變量、python的運算符
代碼 .com 循環輸出 html targe .cn 次循環 概念 9.png 一、內容 二、練習: 1、使用while循環輸出1、2、3、4、5、6、8、9、10 方法一:說明:當count 等於7時,count加1,此時count的值為8,然後continu
Bloom filter(布隆過濾器)概念與原理
概念 int 復雜 gravity water pac 基數 AS class https://en.wikipedia.org/wiki/Bloom_filter 寫在前面 在大數據與雲計算發展的時代,我們經常會碰到這樣的問題。我們是否能高效的判斷一個用
python3 速查參考- python基礎 8 -> 面向對象基礎:類的創建與基礎使用,類屬性,property、類方法、靜態方法、常用知識點概念(封裝、繼承等等見下一章)
fde ODB 面向 繼承 普通 實參 使用 後者 people 基礎概念 1.速查筆記: #-- 最普通的類 class C1(C2, C3): spam = 42 # 數據