付宇
摘 要:隨著大數(shù)據(jù)、社交網(wǎng)絡(luò)、云計算等技術(shù)不斷融入我們的生活以及現(xiàn)有的計算能力、存儲空間、網(wǎng)絡(luò)帶寬的高速發(fā)展,人類積累的數(shù)據(jù)在互聯(lián)網(wǎng)、通信、金融、商業(yè)、醫(yī)療等諸多領(lǐng)域不斷地增長和累積。在大數(shù)裾學(xué)習(xí)、開發(fā)過程中,會產(chǎn)生各種各樣的數(shù)據(jù)源信息,如網(wǎng)站流量日志分析系統(tǒng)產(chǎn)生的日志數(shù)據(jù),這些數(shù)據(jù)的收集、監(jiān)聽、使用非常重要。針對類似業(yè)務(wù)需求,通常會使用 Apache旗下的Flume日志采集系統(tǒng)完成相關(guān)數(shù)據(jù)采集工作。本文主要對Flume大數(shù)據(jù)日志采集系統(tǒng)進(jìn)行介紹。
關(guān)鍵詞:大數(shù)據(jù);Flume;日志采集
近幾年來,隨著計算機和信息技術(shù)的迅猛發(fā)展和普及應(yīng)用,行業(yè)應(yīng)用系統(tǒng)的規(guī)模迅速擴(kuò)大,行業(yè)應(yīng)用所產(chǎn)生的數(shù)據(jù)呈爆炸性增長。動輒達(dá)到數(shù)百TB甚至數(shù)十至數(shù)百PB規(guī)模的行業(yè)/企業(yè)大數(shù)據(jù)已遠(yuǎn)遠(yuǎn)超出了現(xiàn)有傳統(tǒng)的計算技術(shù)和信息系統(tǒng)的處理能力。如何對產(chǎn)生的大數(shù)據(jù)進(jìn)行采集是大數(shù)據(jù)處理面臨的問題之一。Apache Flume是一個高可靠、高可用的分布式系統(tǒng),用于高效地從許多不同的數(shù)據(jù)源收集、聚合大批量的日志數(shù)據(jù),進(jìn)行集中式存儲。Flume最早是Cloudera公司提供的一個高可用的、高可靠的、分布式海量日志采集、聚合和傳輸系統(tǒng),之后納入到了 Apache旗下,作為一個頂級開源項目。Apache Flume不僅只限于日志數(shù)據(jù)的采集,由于Flume采集的數(shù)據(jù)源是可定制的,因此Flume還可用于傳輸大量事件數(shù)據(jù),包括但不限于網(wǎng)絡(luò)流量數(shù)據(jù)、社交媒體生成的數(shù)據(jù)、電子郵件消息以及幾乎任何可能的數(shù)據(jù)源。本文接下來主要對Flume的架構(gòu)和相關(guān)組件進(jìn)行介紹。
1 ?Flume的運行機制和系統(tǒng)結(jié)構(gòu)
1.1Flume運行機制
Flume中有3個核心組件,它們分別是數(shù)據(jù)采集器(Source)、緩沖通道(Channel)以及接收器(Sink)。Flume的核心運行機制就是把數(shù)據(jù)從數(shù)據(jù)源,例如Web Server,通過數(shù)據(jù)采集器(Source)收集過來,再將收集的數(shù)據(jù)通過緩沖通道(Channel)匯集到指定的接收器(Sink)。Flume的基本架構(gòu)中有一個Agent,它是Flume的核心角色,F(xiàn)lume Agent是一個JVM進(jìn)程,它承載著將數(shù)據(jù)從外部數(shù)據(jù)源流向下一個目標(biāo)的3個核心組件Source、Channel和Sink。
數(shù)據(jù)采集器Source用于源數(shù)據(jù)的采集,(例如從一個Web服務(wù)器采集源數(shù)據(jù)),然后將采集到的數(shù)據(jù)寫入到Channel中并流向Sink。
緩沖通道Channel是一個緩沖隊列,它用來對Source中的數(shù)據(jù)進(jìn)行緩存,并將數(shù)據(jù)髙效、準(zhǔn)確地寫人Sink,當(dāng)數(shù)據(jù)全部寫入Sink后,F(xiàn)lume就會刪除該緩存通道中的數(shù)據(jù)。
接收器Sink接收并匯集流向Sink的所有數(shù)據(jù)。根據(jù)需求,可以直接對數(shù)據(jù)進(jìn)行集中式存儲(例如采用HDFS進(jìn)行存儲),也可以繼續(xù)作為數(shù)據(jù)源傳入其他遠(yuǎn)程服務(wù)器或者Source中。
在整個數(shù)據(jù)傳輸?shù)倪^程中,F(xiàn)lume會將流動的數(shù)據(jù)封裝到一個event中,event是Flume內(nèi)部數(shù)據(jù)傳輸?shù)幕締卧R粋€完整的event包含headers和body,其中headers包含了一些標(biāo)識信息,而body中就是Flume收集到的數(shù)據(jù)信息。
1.2Flume系統(tǒng)結(jié)構(gòu)
在實際開發(fā)中,F(xiàn)lume需要采集數(shù)據(jù)的類型多種多樣,同時還會進(jìn)行不同的中間操作,所以根據(jù)具體需求,可以將Flume日志采集系統(tǒng)分為簡單結(jié)構(gòu)和復(fù)雜結(jié)構(gòu)。
當(dāng)我們需要采集的數(shù)據(jù)源比較單一、簡單的時候,可以直接使用一個Agent來進(jìn)行數(shù)據(jù)采集并最終存儲,這就是簡單結(jié)構(gòu)。
接下來介紹復(fù)雜結(jié)構(gòu),有時候Flume需要采集的數(shù)據(jù)源分布在不同的服務(wù)器上,使用一個Agent進(jìn)行數(shù)據(jù)采集就不再適用,這時,就可以根據(jù)業(yè)務(wù)需求部署多個Agent進(jìn)行數(shù)據(jù)采集,在開發(fā)中還有可能遇到Flume從同一個服務(wù)端采集數(shù)據(jù),然后通過多路復(fù)用流分別傳輸并存儲到不同目的地的情況,這就是復(fù)雜結(jié)構(gòu)。
2 Flume核心組件
2.1 Flume Sources
在Flume日志采集系統(tǒng)中,采集方案是開發(fā)者需要編寫的核心部分,而在采集方案中需要根據(jù)不同需求來分別針對Source、Channel和Sink進(jìn)行配置。
在編寫Flume采集方案時,首先必須明確的是采集的數(shù)據(jù)源的類型以及出處,接著,根據(jù)這些信息與Flume已提供支持的Flume Sources類型進(jìn)行匹配,選擇對應(yīng)的數(shù)據(jù)采集器類型,也就是type屬性;然后,再根據(jù)選擇的數(shù)據(jù)采集器類型,配置必要和非必要的數(shù)據(jù)采集器屬性,完成Flume Sources的配置。比較常見的Sources類型有Avro Source,它可以創(chuàng)建分層集合拓?fù)洌肁vro Source可以實現(xiàn)多級流動、扇出流、扇入流等效果。
2.2 Flume Channels
Channels通道是event在Agent上暫存的存儲庫,Source向Channel中添加event,Sink在讀取完數(shù)據(jù)后再刪除它。在配置Channels時,需要明確的是將要傳輸?shù)膕ources數(shù)據(jù)源類型;接著,根據(jù)這些信息并結(jié)合開發(fā)中的實際需求,選擇Flume已提供支持的Flume Channels;然后,再根據(jù)選擇的Channel類型,配置必要和非必要的Channel屬性。比較常見的Channels類型有Memory Channel和File Channel。Memory Channel會將event存儲在具有可配置最大尺寸的內(nèi)存隊列中,它非常適用于需要更高吞吐量的流量。File Channel是Flume的持久通道,它將所有event寫人磁盤,因此不會丟失進(jìn)程或機器關(guān)機、崩潰時的數(shù)據(jù)。
2.3 Flume Sinks
Flume Sources采集到的數(shù)據(jù)通過Channels就會流向Sink中,此時的Sink類似一個采集到的數(shù)據(jù)集結(jié)的遞進(jìn)中心,它需要根據(jù)后續(xù)需求進(jìn)行配置,從而最終選擇是將數(shù)據(jù)直接進(jìn)行集中式存儲,如直接存儲到HDFS中,還是繼續(xù)作為其他Agent的Source繼續(xù)傳輸。
在配置Sinks時,需要明確的就是將要傳輸?shù)臄?shù)據(jù)目的地、結(jié)果類型;接著,根據(jù)實際需求,選擇Flume已提供支持的Flume Sinks類型;然后,再根據(jù)選擇的Sinks類型,配置必要和非必要的Sinks屬性。
3結(jié)論
在當(dāng)前大數(shù)據(jù)、社交網(wǎng)絡(luò)、云計算等技術(shù)中,如何對產(chǎn)生的大數(shù)據(jù)進(jìn)行采集是大數(shù)據(jù)處理面臨的問題之一。Apache Flume是一個高可靠、高可用的分布式系統(tǒng),用于高效地從許多不同的數(shù)據(jù)源收集、聚合大批量的日志數(shù)據(jù),進(jìn)行集中式存儲。通過理解Flume的工作原理和機制,對Flume的核心組件進(jìn)行配置就可以快速搭建高效可靠的大數(shù)據(jù)日志采集系統(tǒng)。
參考文獻(xiàn):
[1] 孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn).計算機研究與發(fā)展,2013,1.
[2] 張彥超,劉云,張海峰,程輝,熊菲.基于在線社交網(wǎng)絡(luò)的信息傳播模型.物理學(xué)報,2011,5.
[3] 陳康,鄭緯民.云計算:系統(tǒng)實例與研究現(xiàn)狀.軟件學(xué)報,2009,05.
[4] 趙志偉.大數(shù)據(jù)平臺實時計算監(jiān)控方案分析.自動化與儀表,2020,04.
(武漢軟件工程職業(yè)學(xué)院 ?湖北 武漢 ? 430205)