主頁 > 軟體設計 > flume事務和進階

flume事務和進階

2021-04-19 13:02:32 軟體設計

1.概述

flume是高可用,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,

2.flume的作用

用戶行為日志通過前端平臺存盤到logservice中,通過flume的實時采集發過來的資訊,然后發送到大資料平臺上


3.flume架構

日志源-->source-->channel-->sink-->HDFS

agent:就是一個JVM的行程,里面包含source,channel,sink

source:采集或讀取日志的組件,不同的資料源使用不同的source

channel:緩沖區,讓source和sink可以在不同速率上運行

sink:負責日志的寫出的組件

event:在flume里面傳輸的是event傳輸單元,header和body組成,body 里面存放資料的位元組陣列,header里面默認空,需要手動添加

二、配置和使用

1.配置環境變數的作用

  • 方便使用命令
  • 方便別的框架使用

2.flume運行agent的命令
兩種寫法

- flume-ng agent --name agent 的名字 --conf 組態檔的目錄 --conf-file 組態檔(自己手動寫)
- flume-ng agent -c conf -f 組態檔 -n agent名字
flume-ng agent: 表示啟動agent

--conf | -c : 表示指定flume的conf目錄

--conf-file | -f : 表示指定我們自己撰寫的flume的組態檔

--name | -n : 表示指定agent的名字

-Dflume.root.logger=INFO,console : 傳入引數列印到控制臺

3.通用寫法:

flume-ng agent -c $FLUME_HOME/conf -f $FLUME_HOME/datas/netcat-flume-logger.conf -n a1 -Dflume.root.logger=INFO,console

4.agent 的組態檔
1.需要定義agent的名字,還需要定義source,channel,sink(名字,有幾個)

2.需要對source,channel,sink指明具體的型別和配置

3.需要指明source,channel,sink三者之間的一個關系

注意:一個sink只能對應一個channel,一個channel可以對應多個sink

#1. 監控埠資料:netcat-flume-logger

#source組件:netcat tcp source
#channel組件:memory channel
#sink組件: logger sink
?
# Named
a1.sources = r1
a1.channels = c1
a1.sinks = k1
?
#Source
a1.sources.r1.type = netcat
a1.sources.r1.bind = loacathost
a1.sources.r1.port = 6666
?
#Channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity=100
?
#Sink
a1.sinks.k1.type = logger
?
#Bind
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1


5.各種組件的介紹

source:

  • netcat:監聽本機埠
  • exec:監控一條linux的命令,監聽一個檔案的目錄,如果掛掉,重新從頭開始讀
  • spooldir:監控目錄是否新增檔案,監控不到檔案的內容
  • talldir 監聽一個目錄的檔案,記錄好位置,重新讀取的話從上次讀的地方開始續讀
  • avro: 監聽埠,接收avrosink發送到的資料
  • kafka:作為消費者消費kafka中的資料

sink :

  • avro 把內容寫到哪個機器上面
  • logger:把資料寫到logger上
  • HDFSsink:寫到HDFS上
  • Ffile_roll : 寫到本地目錄里面
  • kafka:作為生產者向kafka發送資料

channel:

  • Memory Channel:以記憶體作為緩沖區
  • File Channel:以磁盤作為緩沖區
  • Kafka channel :以kafka作為緩沖區


三、flume進階


1.flume事務
退避的概念:當服務器斷開后,以指數的時間間隔進行嘗試連接,到達一定時間間隔后則以此時間間隔來嘗試連接

保證了資料不丟失的關鍵

  • put 事務流程:首先source先安照batch大小,將資料寫入導putlist中,當putlist放滿時則開啟一個put事物,將putlist中的資料放入channel,如果放入失敗,則清空putlist,同時告知source,這時source則會把指標重寫指向這個put前的資料開始重新讀取,這樣就保證的資料不丟失
  1. doput: 將批量資料先寫入臨時緩沖區putlist
  2. docommit:檢查channel記憶體佇列是否足夠合并
  3. dorollback:channel記憶體不足,滾回資料
  • take事務:
  1. dotake:將資料取到臨時緩沖區takelist,并將資料發送到HDFS
  2. docommit:如果資料發送成功,則清空臨時緩沖區takelist
  3. dorolback:如果資料發送出現例外,則rollback將臨時緩沖區takelist中的資料歸還給channel記憶體佇列

2.flume agent內部原理

重要組件:

1)ChannelSelector

ChannelSelector的作用就是選出Event將要被發往哪個Channel,其共有兩種型別,分別是Replicating(復制)和Multiplexing(多路復用),

ReplicatingSelector會將同一個Event發往所有的Channel,Multiplexing會根據相應的原則,將不同的Event發往不同的Channel,

2)SinkProcessor

SinkProcessor共有三種型別,分別是DefaultSinkProcessor、LoadBalancingSinkProcessor和FailoverSinkProcessor

DefaultSinkProcessor對應的是單個的Sink,LoadBalancingSinkProcessor和FailoverSinkProcessor對應的是Sink Group,LoadBalancingSinkProcessor可以實作負載均衡的功能,FailoverSinkProcessor可以錯誤恢復的功能,

3 Flume拓撲結構


3.1 簡單串聯

這種模式是將多個flume順序連接起來了,從最初的source開始到最終sink傳送的目的存盤系統,此模式不建議橋接過多的flume數量, flume數量過多不僅會影響傳輸速率,而且一旦傳輸程序中某個節點flume宕機,會影響整個傳輸系統,

3.2 復制和多路復用

Flume支持將事件流向一個或者多個目的地,這種模式可以將相同資料復制到多個channel中,或者將不同資料分發到不同的channel中,sink可以選擇傳送到不同的目的地,

3.3 負載均衡和故障轉移

Flume支持使用將多個sink邏輯上分到一個sink組,sink組配合不同的SinkProcessor可以實作負載均衡和錯誤恢復的功能,

3.4 聚合

這種模式是我們最常見的,也非常實用,日常web應用通常分布在上百個服務器,大者甚至上千個、上萬個服務器,產生的日志,處理起來也非常麻煩,用flume的這種組合方式能很好的解決這一問題,每臺服務器部署一個flume采集日志,傳送到一個集中收集日志的flume,再由此flume上傳到hdfs、hive、hbase等,進行日志分析,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/277831.html

標籤:其他

上一篇:20面試官21-04-17

下一篇:React框架發展史

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more