2023-03-02
flume 數(shù)據(jù) sink
一、Flume 的介紹
在大數(shù)據(jù)的工作流程中,第一件要處理的事情就是將各個(gè)平臺(tái)產(chǎn)生的數(shù)據(jù),采集到大數(shù)據(jù)平臺(tái)進(jìn)行存儲(chǔ)。最常見(jiàn)的存儲(chǔ)的平臺(tái)就是 HDFS。那么將數(shù)據(jù)采集到 HDFS 就是工作流的第一環(huán)了。數(shù)據(jù)可能是產(chǎn)生在不同的位置的,有些是存放于業(yè)務(wù)數(shù)據(jù)庫(kù)中,有些是存放于數(shù)據(jù)庫(kù)日志文件中的。而我們要做的就是針對(duì)不同的位置,使用不同的工具來(lái)進(jìn)行數(shù)據(jù)的采集工作。其中對(duì)于服務(wù)器日志文件的采集,最常見(jiàn)的就是使用 Flume 來(lái)完成!
Flume是一種分布式的,可靠的、高可用的服務(wù),用于有效地收集,聚合和移動(dòng)大量日志數(shù)據(jù)。它具有基于流數(shù)據(jù)流的簡(jiǎn)單靈活的體系結(jié)構(gòu)。它具有可調(diào)整的可靠性機(jī)制以及許多故障轉(zhuǎn)移和恢復(fù)機(jī)制,具有強(qiáng)大的功能和容錯(cuò)能力。它使用一個(gè)簡(jiǎn)單的可擴(kuò)展數(shù)據(jù)模型,允許在線分析應(yīng)用程序。
參考官網(wǎng): http://flume.apache.org/
Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.
Flume最開(kāi)始是由 cloudera 開(kāi)發(fā)的實(shí)時(shí)日志收集系統(tǒng),受到了業(yè)界的認(rèn)可與廣泛應(yīng)用。但隨著 Flume功能的擴(kuò)展,flume的代碼工程臃腫、核心組件設(shè)計(jì)不合理、核心配置不標(biāo)準(zhǔn)等缺點(diǎn)漸漸暴露出來(lái),尤其是在發(fā)行版本 0.9.4中,日志傳輸不穩(wěn)定的現(xiàn)象尤為嚴(yán)重。
為了解決這些問(wèn)題,2011 年 10 月 22 號(hào),cloudera 對(duì) Flume進(jìn)行了里程碑式的改動(dòng):重構(gòu)核心組件、核心配置以及代碼架構(gòu),并將 Flume納入 apache 旗下,從cloudera Flume改名為 Apache Flume。
二、Flume 的體系結(jié)構(gòu)
Flume運(yùn)行的核心是 Agent。Flume是以agent為最小的獨(dú)立運(yùn)行單位。一個(gè)agent就是一個(gè)JVM。它是一個(gè)完整的數(shù)據(jù)收集工具,含有三個(gè)核心組件,分別是source、 channel、 sink。通過(guò)這些組件, Event 可以從一個(gè)地方流向另一個(gè)地方。如下圖所示:
在 Flume 中存在著一些組件,彼此協(xié)調(diào)工作:
● Client: 客戶端,Client生產(chǎn)數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立的線程中
● Event: 一個(gè)數(shù)據(jù)單元,消息頭和消息體組成。(Events可以是日志記錄、 avro 對(duì)象等。)
● Flow: Event從源點(diǎn)到達(dá)目的點(diǎn)的遷移的抽象。
● Agent: 一個(gè)獨(dú)立的Flume進(jìn)程,運(yùn)行在JVM中,包含組件Source、 Channel、 Sink。 每臺(tái)機(jī)器運(yùn)行一個(gè)agent,但是一個(gè)agent中可以包含多個(gè)sources和sinks。
● Source: 數(shù)據(jù)收集組件。source從Client收集數(shù)據(jù),傳遞給Channel
● Channel: 管道,負(fù)責(zé)接收source端的數(shù)據(jù),然后將數(shù)據(jù)推送到sink端。
● Sink: 負(fù)責(zé)從channel端拉取數(shù)據(jù),并將其推送到持久化系統(tǒng)或者是下一個(gè)Agent。
● selector: 選擇器,作用于source端,然后決定數(shù)據(jù)發(fā)往哪個(gè)目標(biāo)。
● interceptor: 攔截器,flume允許使用攔截器攔截?cái)?shù)據(jù)。允許使用攔截器鏈,作用于source和sink階段。
三、Flume 的模型
3.1. 單一數(shù)據(jù)模型
在單個(gè) Agent 內(nèi)由單個(gè) Source, Channel, Sink 建立一個(gè)單一的數(shù)據(jù)流模型,如下圖所示,整個(gè)數(shù)據(jù)流為 Web Server --> Source --> Channel --> Sink --> HDFS。
3.2. 多數(shù)據(jù)流模型
3.2.1. 多 Agent 串行傳輸數(shù)據(jù)流模型
3.2.2. 多 Agent 匯聚數(shù)據(jù)流模型
3.2.3. 單 Agent 多路數(shù)據(jù)流模型
3.2.4. SinkGroups 數(shù)據(jù)流模型
開(kāi)班時(shí)間:2021-04-12(深圳)
開(kāi)班盛況開(kāi)班時(shí)間:2021-05-17(北京)
開(kāi)班盛況開(kāi)班時(shí)間:2021-03-22(杭州)
開(kāi)班盛況開(kāi)班時(shí)間:2021-04-26(北京)
開(kāi)班盛況開(kāi)班時(shí)間:2021-05-10(北京)
開(kāi)班盛況開(kāi)班時(shí)間:2021-02-22(北京)
開(kāi)班盛況開(kāi)班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開(kāi)班時(shí)間:2020-09-21(上海)
開(kāi)班盛況開(kāi)班時(shí)間:2021-07-12(北京)
預(yù)約報(bào)名開(kāi)班時(shí)間:2019-07-22(北京)
開(kāi)班盛況
Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right
京ICP備12003911號(hào)-5
京公網(wǎng)安備 11010802035720號(hào)