flume學習一:flume基礎知識
一.Flume使用的前提:
Flume使用 java編寫,其需要執行在 Java1.6或更高版本之上。
二.Flume的定義:
Flume是一個分散式、可靠、高效可用的海量日誌採集、聚合和傳輸系統,支援在系統中定製各類資料傳送方,用於蒐集資料;同時,flume提供對資料進行加單處理,並寫到各種資料接受方(可定製)的能力。
核心一句話:將資料從資料來源收集過來,再送到目的地。為了保證輸送一定成功,在送到目的地之前,會先緩衝資料,待資料真正到的目的地後,刪除自己緩衝的資料。
三.元件及作用:
1.source:從client端收集資料,傳遞個channel。直接讀取:檔案source的有兩種方式:
ExecuteSource:以執行linux命令的方式,持續的輸出最新的資料,如tail –f 檔名指令,在這種方式下取的檔名必須是指定的。
SpoolSource:檢測配置的目錄下新增的檔案,並將檔案中的資料讀取出來。
2.channel:緩衝資料,連線sources和sinks,有點像佇列。型別有MemoryChannel,JDBC Channel,FileChannel等。
3. sink:從channel收集資料,執行一個獨立執行緒。可以向檔案系統、資料庫、hadoop儲存資料。
在日誌資料較少時,可以將資料儲存在檔案系統中,並且設定一定的時間間隔儲存資料。
在日誌資料較多時,可以將相應的日誌儲存到hadoop
元件名稱功能介紹
Agent代理 |
使用JVM執行Flume。每臺機器執行一個agent,但是可以在一個agent中包含多個sources和sinks。 |
Client客戶端 |
生產資料,執行在一個獨立的執行緒。 |
Source源 |
從Client收集資料,傳遞給Channel。 |
Sink接收器 |
從Channel收集資料,進行相關操作,執行在一個獨立執行緒。 |
Channel通道 |
連線 sources和 sinks,這個有點像一個佇列。 |
Events事件 |
傳輸的基本資料負載。 |
四.Flume的整體構成圖
源將事件寫到一個多或者多個通道中
接收器只從一個通道接收事件。
代理可能會有多個源、通道與接收器
Event是flume資料傳輸的基本單元,flume以事件的形式將資料從源頭傳送到目的地。
一個Event 由Map<String,String>Headers和byte[] body組成,其中Headers儲存了Event 的屬性,body儲存了Event 的內容。
。
Source:負責接收events或通過特殊機制產生events,並將events批量的放到一個或多個channels。
Channel位於sources和sinks之間,用於快取進來的events,當sink成功的將events傳送到下一跳的channel或最終目的,events從channel移除。
Sink:負責將events傳輸到嚇一跳或最終目的,成功完成後將events從channel移除。
五.常見錯誤:
Could not configure sink sink1 due to:No channel configured for sink: sink1
org.apache.flume.conf.ConfigurationException: No channel configured for sink:sink1
則仔細檢視配置檔案,一個source可以對應多個channel,所以是channels,agent.sources.source1.channels = channel1,
但是一個sink對應一個channel,所以是channel,agent.sinks.sink1.channel =channel1,請注意。
六.常見各元件支援的型別:
Flume Source支援的型別:
Source型別 |
說明 |
Avro Source |
支援Avro協議(實際上是Avro RPC),內建支援 |
Thrift Source |
支援Thrift協議,內建支援 |
Exec Source |
|
JMS Source |
從JMS系統(訊息、主題)中讀取資料,ActiveMQ已經測試過 |
Spooling Directory Source |
監控指定目錄內資料變更 |
Twitter 1% firehose Source |
通過API持續下載Twitter資料,試驗性質 |
Netcat Source |
監控某個埠,將流經埠的每一個文字行資料作為Event輸入 |
Sequence Generator Source |
序列生成器資料來源,生產序列資料 |
Syslog Sources |
讀取syslog資料,產生Event,支援UDP和TCP兩種協議 |
HTTP Source |
基於HTTP POST或GET方式的資料來源,支援JSON、BLOB表示形式 |
Legacy Sources |
相容老的Flume OG中Source(0.9.x版本) |
Flume Channel支援的型別:
Channel型別 |
說明 |
Memory Channel |
Event資料儲存在記憶體中 |
JDBC Channel |
Event資料儲存在持久化儲存中,當前Flume Channel內建支援Derby |
File Channel |
Event資料儲存在磁碟檔案中 |
Spillable Memory Channel |
Event資料儲存在記憶體中和磁碟上,當記憶體佇列滿了,會持久化到磁碟檔案(當前試驗性的,不建議生產環境使用) |
Pseudo Transaction Channel |
測試用途 |
Custom Channel |
自定義Channel實現 |
Flume Sink支援的型別
Sink型別 |
說明 |
HDFS Sink |
資料寫入HDFS |
Logger Sink |
資料寫入日誌檔案 |
Avro Sink |
資料被轉換成Avro Event,然後傳送到配置的RPC埠上 |
Thrift Sink |
資料被轉換成Thrift Event,然後傳送到配置的RPC埠上 |
IRC Sink |
資料在IRC上進行回放 |
File Roll Sink |
儲存資料到本地檔案系統 |
Null Sink |
丟棄到所有資料 |
HBase Sink |
資料寫入HBase資料庫 |
Morphline Solr Sink |
資料傳送到Solr搜尋伺服器(叢集) |
ElasticSearch Sink |
資料傳送到Elastic Search搜尋伺服器(叢集) |
Kite Dataset Sink |
寫資料到Kite Dataset,試驗性質的 |
Custom Sink |
自定義Sink實現 |
七各種元件的特性:
(1)可靠性
當節點出現故障時,日誌能夠被傳送到其他節點上而不會丟失。Flume提供了三種級別的可靠性保障,從強到弱依次分別為:end-to-end(收到資料agent首先將event寫到磁碟上,當資料傳送成功後,再刪除;如果資料傳送失敗,可以重新發送。),Store on failure(這也是scribe採用的策略,當資料接收方crash時,將資料寫到本地,待恢復後,繼續傳送),Best effort(資料傳送到接收方後,不會進行確認)。
(2)可擴充套件性
Flume採用了三層架構,分別為agent,collector和storage,每一層均可以水平擴充套件。其中,所有agent和collector由master統一管理,這使得系統容易監控和維護,且master允許有多個(使用ZooKeeper進行管理和負載均衡),這就避免了單點故障問題。
(3)可管理性
所有agent和colletor由master統一管理,這使得系統便於維護。多master情況,Flume利用ZooKeeper和gossip,保證動態配置資料的一致性。使用者可以在master上檢視各個資料來源或者資料流執行情況,且可以對各個資料來源配置和動態載入。Flume提供了web和shell scriptcommand兩種形式對資料流進行管理。
(4)功能可擴充套件性
使用者可以根據需要新增自己的agent,collector或者storage。此外,Flume自帶了很多元件,包括各種agent(file, syslog等),collector和storage(file,HDFS等)。
相關推薦
flume學習一:flume基礎知識
一.Flume使用的前提: Flume使用 java編寫,其需要執行在 Java1.6或更高版本之上。 二.Flume的定義: Flume是一個分散式、可靠、高效可用的海量日誌採集、聚合和傳輸系
前端知識學習一 :CSS基礎
分隔 color html元素 http 方式 瀏覽器 單位 工作 分離 一.CSS概述 css指的是層疊樣式表,樣式定義如何顯示HTML元素,樣式通常存儲在樣式表中, 把樣式添加到HTML4.0中,是為了解決內容和表現分離的問題。外部樣式表通常存儲在css文件
MATLAB學習筆記一:MATLAB基礎知識,陣列基礎知識
1. Schedule Week Topic/Event Notes 1 簡介 2 MATLAB計算機與矩陣操作 3 結構化程式與自定義函式 4 變數與檔案存取 5 初階繪圖 6 進階繪圖 2. MATLAB
Python學習一:序列基礎詳解
list ava author 萬裏 單個 使用下標 不能 get 分別是 作者:NiceCui 本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。 本文鏈接:http://www.cnblogs.com/NiceCui/p/7858473.html 郵箱:moyi
TCP/IP入門(一):網路基礎知識彙總
1.小的知識點 1.1.計算機網路 根據計算機網路的規模,可分為WAN(Wide Area Network,廣域網)和LAN(Local Area Network,區域網) 1.2.協議 協議就是計算機與計算機之間通過網路實現通訊
ASP.NET C#學習一(環境基礎知識)
什麼是.NET? 是微軟推出的開發動態WEB應用程式的開發平臺 什麼是ASP.NET? 是.NET的一部分,通過.NET平臺來開發ASP.NET 什麼是IIS? 是微軟的WEB伺服器,開發人員可以通過
朱老師ARM裸機學習筆記(一):計算機基礎知識
RISC和CISC的區別 CISC(complex instruction-set computer)複雜指令集 特點: 指令較多,較豐富,CISC的CPU 較難設計,Intel是典型的CISC體系CPU。 RISC(reduce instruction
Java學習筆記1:計算機基礎知識、java語言基礎。
一、計算機基礎知識 1、 計算機是一種能夠按照程式執行,自動、高速處理海量資料的現代化智慧電子裝置。由硬體和軟體所組成,沒有安裝任何軟體的計算機稱為裸機。常見的形式有臺式計算機、筆記本計算機、大型計算機等。 硬體通常由CPU、主機板、記憶體、電源、主機箱、硬碟、顯示卡、鍵盤、滑鼠,顯示器等多
Python基礎學習一:輸入輸出,識別符號,字串
①輸入輸出 print(‘請輸入你的名字’) name = input() print(‘我的名字是’,name) Pycharm UTF-8編碼 &nb
linux學習筆記(1):linux基礎知識
1.linux是什麼? Linux這個詞本身只表示Linux核心,但實際上人們已經習慣了用Linux來形容整個基於Linux核心,並且使用GNU 工程各種工具和資料庫的作業系統。 2. 什麼是shell 保護系統核心並對外提供操作介面的軟體 在linux中預設的
一、計算機基礎知識:
1、電腦和伺服器的主要構成: 機箱: 1)電源: 功能:保障電腦的電源供應,伺服器一般提供雙電源(雙冗餘電源)。 2)主機板: 功能:所有
面試題(一):Java基礎知識
Java 基礎知識01. 面向物件的特性有哪些?答:封裝、繼承和多型。02. Java 中覆蓋和過載是什麼意思?解析:覆蓋和過載是比較重要的基礎知識點,並且容易混淆,所以面試中常見。答:覆蓋(Overr
Spring MVC學習記錄(一)——網站基礎知識(1)
Spring MVC學習之——網路架構及演變過程 1.軟體的三大型別:單機型別、CS型別、BS型別。 單機型別:曾經的主要軟體型別,不聯網,實現電腦的基本功能,如打字、畫圖。 CS型別:單機之後為了統一管理軟體的資料,產生了客戶端和伺服器端,客戶端管理業務,伺服器端管理資料
一. 計算機語言基礎知識:
1. 程式語言的執行原理: 程式語言是將人能看懂的語言轉換成機器可以使用的命令語言的工具。 其中高階語言是程式設計師經常用的語言型別,包含C語言、C++語言以及Python等我們經常會用到的編輯語言 而高階語言在轉換為二進位制數字的機器語言之前通常需要先轉換為組合語言
mysql學習一:基礎語法,對庫操作,對錶操作。
一,mysql安裝內容 1、mysql.exe表示客戶端程式。 2、mysqld.exe表示伺服器端程式。 3、windows命令視窗打services.msc可以開啟檢視所有的服務程式。 二、mysql的開啟,關閉 mysql分文mysql伺服器和mysql客戶端,使用my
Jmeter零基礎學習一:執行緒
測試計劃:Threads(Users)、Test Fragment、配置元件、定時器、前置處理器、後置處理器、斷言、監聽器 一、Threads(Users)執行緒(使用者) (一)Setup thread group 初始化的執行緒,每
Spring AOP學習筆記(1):AOP基礎知識
一、 使用AOP前的經驗 在接觸AOP這種程式設計思想之前,我也有好多的編碼經歷,將業務邏輯和日誌、測試和驗證等其他需求放在一起的,這簡直是痛苦死了,每寫一個方法都得重複好多程式碼,而且這些程式碼有好多是類似的,但是不得不重寫,因為當時還是菜鳥(現在也是菜鳥),比如之前同組
FiddlerScript學習一:改動Request或Response
directed author use lock 改變 請求 including ogl cookies 前兩天因項目須要,簡單看了一下FiddlerScript,功能挺強的。今天有時間細致看一下,做個筆記。 改動Request或Response 改動Request和R
WPF學習一:XAML的資源(Resources)結構
pac logs value 改變 linear sha -a writer arp 一個初學者,把知識做個積累,如果有不對的地方,還請高手指出,謝謝! 先看一段代碼:(下面是以Window WPF進行講解,如果是Web 的話就把<Window改為<Page 而
tomcat源碼學習一:導入eclipse
tps trunk 沒有 asf rop base https distrib 打開 一、下載源碼 進入官網http://tomcat.apache.org,點擊Download>tomcat9>Source Code Distributions>zip