1. 程式人生 > >flume學習一:flume基礎知識

flume學習一:flume基礎知識

一.Flume使用的前提:

 Flume使用 java編寫,其需要執行在 Java1.6或更高版本之上

二.Flume的定義:

 Flume是一個分散式、可靠、高效可用的海量日誌採集、聚合和傳輸系統,支援在系統中定製各類資料傳送方,用於蒐集資料;同時,flume提供對資料進行加單處理,並寫到各種資料接受方(可定製)的能力。

核心一句話:將資料從資料來源收集過來,再送到目的地。為了保證輸送一定成功,在送到目的地之前,會先緩衝資料,待資料真正到的目的地後,刪除自己緩衝的資料。

三.元件及作用:

1.source:從client端收集資料,傳遞個channel。直接讀取:檔案source的有兩種方式:

ExecuteSource:以執行linux命令的方式,持續的輸出最新的資料,如tail –f 檔名指令,在這種方式下取的檔名必須是指定的。

SpoolSource:檢測配置的目錄下新增的檔案並將檔案中的資料讀取出來。

2.channel:緩衝資料,連線sourcessinks,有點像佇列。型別有MemoryChannelJDBC ChannelFileChannel等。

3. sink:從channel收集資料,執行一個獨立執行緒。可以向檔案系統、資料庫、hadoop儲存資料。

在日誌資料較少時,可以將資料儲存在檔案系統中,並且設定一定的時間間隔儲存資料。

  在日誌資料較多時,可以將相應的日誌儲存到hadoop

中,便於日後進行相應的資料分析。

元件名稱功能介紹

Agent代理

使用JVM執行Flume。每臺機器執行一個agent,但是可以在一個agent中包含多個sourcessinks

Client客戶端

生產資料,執行在一個獨立的執行緒。

Source

Client收集資料,傳遞給Channel

Sink接收器

Channel收集資料,進行相關操作,執行在一個獨立執行緒。

Channel通道

連線 sources sinks,這個有點像一個佇列。

Events事件

傳輸的基本資料負載。

四.Flume的整體構成圖

源將事件寫到一個多或者多個通道中

接收器只從一個通道接收事件

代理可能會有多個源、通道與接收器

Eventflume資料傳輸的基本單元flume事件的形式將資料從源頭傳送到目的地。

一個Event Map<String,String>Headersbyte[] body組成,其中Headers儲存了Event 的屬性,body儲存了Event 的內容。

Source:負責接收events或通過特殊機制產生events,並將events批量的放到一個或多個channels

Channel位於sourcessinks之間,用於快取進來的events,當sink成功的將events傳送到下一跳的channel或最終目的,eventschannel移除。

Sink:負責將events傳輸到嚇一跳或最終目的,成功完成後將eventschannel移除。

五.常見錯誤:

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,所以是channelsagent.sources.source1.channels = channel1

但是一個sink對應一個channel,所以是channelagent.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採用了三層架構,分別為agentcollectorstorage,每一層均可以水平擴充套件。其中,所有agentcollectormaster統一管理,這使得系統容易監控和維護,且master允許有多個(使用ZooKeeper進行管理和負載均衡),這就避免了單點故障問題。

(3)可管理性

所有agentcolletormaster統一管理,這使得系統便於維護。多master情況,Flume利用ZooKeepergossip,保證動態配置資料的一致性。使用者可以在master上檢視各個資料來源或者資料流執行情況,且可以對各個資料來源配置和動態載入。Flume提供了webshell scriptcommand兩種形式對資料流進行管理。

(4)功能可擴充套件性

使用者可以根據需要新增自己的agentcollector或者storage。此外,Flume自帶了很多元件,包括各種agentfile syslog等),collectorstoragefileHDFS等)。

相關推薦

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