本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種基于flume系統(tǒng)的數(shù)據(jù)處理方法及其裝置。
背景技術(shù):
大數(shù)據(jù)分析的基礎(chǔ)是大數(shù)據(jù),通常采集數(shù)據(jù)的來源多種多樣,而且數(shù)據(jù)格式和編碼格式也不完全一致,數(shù)據(jù)質(zhì)量良莠不齊,因此在進行大數(shù)據(jù)分析之前,我們都需要對數(shù)據(jù)進行數(shù)據(jù)清洗;數(shù)據(jù)清洗(Data cleaning)是一個對數(shù)據(jù)進行重新審查和校驗的過程,數(shù)據(jù)清洗的目的在于刪除重復(fù)信息,糾正或剔除錯誤的數(shù)據(jù),以保證數(shù)據(jù)的一致性。
在數(shù)據(jù)采集階段,我們一般會采用Flume作為數(shù)據(jù)采集工具。Flume是Cloudera公司提供的一個高可用高可靠分布式的海量數(shù)據(jù)采集聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時Flume可以對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方的能力。
如圖1所示,常規(guī)的Flume包括source層、channel層和sink層,由source層從數(shù)據(jù)源采集數(shù)據(jù),并發(fā)送至channel層,channel層對數(shù)據(jù)進行簡單的緩存,sink層從channel層中獲取數(shù)據(jù),并發(fā)送至接收方;數(shù)據(jù)源一般為需要采集數(shù)據(jù)的生產(chǎn)機器,接收方可以是相應(yīng)的存儲文件系統(tǒng)、數(shù)據(jù)庫或者遠程服務(wù)器,采集的數(shù)據(jù)一般為生產(chǎn)機器的日志。
常規(guī)的flume對采集到的數(shù)據(jù)進行數(shù)據(jù)清洗的方式為前置清洗,前置清洗是在source層中配置攔截器,source層采集到的數(shù)據(jù)里符合系統(tǒng)設(shè)定的數(shù)據(jù)可以通過攔截器,而不符合系統(tǒng)設(shè)定的數(shù)據(jù)將會被清理。
但是在實際應(yīng)用中,flume的前置清洗有如下缺點:
(1)Flume系統(tǒng)附在生產(chǎn)機器上,而攔截器的清洗工作會占用生產(chǎn)機器的資源,對生產(chǎn)機器造成負擔(dān);
(2)攔截器配置在source層中,影響source層的數(shù)據(jù)采集進度;
(3)攔截器的清洗方式簡單,無法處理復(fù)雜的清洗需求。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的之一在于提供一種基于flume系統(tǒng)的數(shù)據(jù)處理方法,其能解決解決清洗數(shù)據(jù)影響生產(chǎn)機器運行以及數(shù)據(jù)采集的問題。
本發(fā)明的目的之二在于提供一種基于flume系統(tǒng)的數(shù)據(jù)處理裝置,其能解決解決清洗數(shù)據(jù)影響生產(chǎn)機器運行以及數(shù)據(jù)采集的問題。
本發(fā)明的目的之一采用以下技術(shù)方案實現(xiàn):
一種基于flume系統(tǒng)的數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)清洗系統(tǒng),包括如下步驟:
S1、source層從數(shù)據(jù)源采集原始數(shù)據(jù);
S2、source層將采集到的原始數(shù)據(jù)發(fā)送至channel層;
S3、channel層將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊;
S4、channel層從數(shù)據(jù)清洗模塊獲取目標數(shù)據(jù);
S5、sink層從channel層獲取目標數(shù)據(jù);
S6、sink層將目標數(shù)據(jù)發(fā)送至接收方。
作為優(yōu)選,所述S3中channel層將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊的傳輸方式為異步傳輸。
作為優(yōu)選,所述channel層將原始數(shù)據(jù)異步傳輸至數(shù)據(jù)清洗模塊的底層傳輸方式為TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
作為優(yōu)選,所述S4中channel層從數(shù)據(jù)清洗模塊獲取目標數(shù)據(jù)的傳輸方式為異步傳輸。
作為優(yōu)選,所述channel層從數(shù)據(jù)清洗模塊異步傳輸獲取目標數(shù)據(jù)的底層傳輸方式為TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
本發(fā)明的目的之二采用以下技術(shù)方案實現(xiàn):
一種基于flume系統(tǒng)的數(shù)據(jù)處理裝置,包括:
采集模塊,應(yīng)用于source層中,用于從數(shù)據(jù)源采集原始數(shù)據(jù);
第一傳送模塊,應(yīng)用于source層,用于將采集到的原始數(shù)據(jù)發(fā)送至channel層;
輸出模塊,應(yīng)用于channel層,用于將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊;
輸入模塊,應(yīng)用于channel層,用于從數(shù)據(jù)清洗模塊獲取清洗后的目標數(shù)據(jù);
獲取模塊,應(yīng)用于sink層,用于從channel層獲取目標數(shù)據(jù);
第二傳送模塊,應(yīng)用于sink層,用于將目標數(shù)據(jù)發(fā)送至接收方。
作為優(yōu)選,所述輸出模塊中channel層將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊的傳輸方式為異步傳輸。
作為優(yōu)選,所述channel層將原始數(shù)據(jù)異步傳輸至數(shù)據(jù)清洗模塊的底層傳輸方式為TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
作為優(yōu)選,所述輸入模塊中channel層從數(shù)據(jù)清洗模塊獲取目標數(shù)據(jù)的傳輸方式為異步傳輸。
作為優(yōu)選,所述channel層從數(shù)據(jù)清洗模塊異步傳輸獲取目標數(shù)據(jù)的底層傳輸方式為TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:通過將flume系統(tǒng)的在source層中的清洗功能剝離至flume系統(tǒng)外的數(shù)據(jù)清洗模塊中,提高source層的數(shù)據(jù)采集效率,減少了對生產(chǎn)機器的損耗。
附圖說明
圖1為常規(guī)的flume系統(tǒng)的模塊連接圖;
圖2為本發(fā)明的數(shù)據(jù)清洗系統(tǒng)的模塊連接圖;
圖3為本發(fā)明的基于flume系統(tǒng)的數(shù)據(jù)處理方法的流程圖;
圖4為本發(fā)明的基于flume系統(tǒng)的數(shù)據(jù)處理裝置的模塊連接圖。
具體實施方式
下面,結(jié)合附圖以及具體實施方式,對本發(fā)明做進一步描述:
如圖2所示,本發(fā)明的flume系統(tǒng)包括source層、channel層和sink層;數(shù)據(jù)清洗系統(tǒng)包括flume系統(tǒng)、數(shù)據(jù)清洗模塊、數(shù)據(jù)源和接收方,數(shù)據(jù)源、source層、channel層、sink層和接收方依次連接,channel層和數(shù)據(jù)清洗模塊連接。
所述數(shù)據(jù)清洗模塊設(shè)置于flume系統(tǒng)外,數(shù)據(jù)清洗模塊內(nèi)包括多個清洗節(jié)點,可以根據(jù)用戶業(yè)務(wù)需求的不同,設(shè)置不同清洗需求的清洗節(jié)點。
一種基于flume系統(tǒng)的數(shù)據(jù)處理方法,應(yīng)用于數(shù)據(jù)清洗系統(tǒng),如圖3所示,包括如下步驟:
步驟10、source層從數(shù)據(jù)源采集原始數(shù)據(jù)。
步驟11、source層將采集到的原始數(shù)據(jù)發(fā)送至channel層;
本發(fā)明中不在source層中配置攔截器,source層僅負責(zé)采集原始數(shù)據(jù)和發(fā)送數(shù)據(jù)的工作。
步驟12、channel層將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊;
數(shù)據(jù)清洗模塊對原始數(shù)據(jù)進行清理得到目標數(shù)據(jù);channel層將原始數(shù)據(jù)通過發(fā)送至數(shù)據(jù)清洗模塊的發(fā)送方式為異步傳輸,其底層傳輸方式包括但不限于TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
步驟13、channel層從數(shù)據(jù)清洗模塊獲取清洗后的目標數(shù)據(jù);
channel層從數(shù)據(jù)清洗模塊獲取目標數(shù)據(jù)的獲取方式為異步傳輸,其底層傳輸方式包括但不限于TCP/UDP協(xié)議及其協(xié)議簇衍生方式。
步驟14、sink層從channel層獲取目標數(shù)據(jù);
步驟15、sink層將目標數(shù)據(jù)發(fā)送至接收方。
由于channel層將原始數(shù)據(jù)發(fā)送至flume系統(tǒng)外的數(shù)據(jù)清洗模塊進行清洗,數(shù)據(jù)清洗模塊對數(shù)據(jù)進行清洗不會影響flume系統(tǒng)中source層的采集進度,并且可以減少對生產(chǎn)機器的損耗。
另外當存在多個flume系統(tǒng)將原始數(shù)據(jù)從channel層中輸送至數(shù)據(jù)清洗模塊進行數(shù)據(jù)清洗時,數(shù)據(jù)清洗模塊可以根據(jù)每個flume系統(tǒng)的負載不同,將清洗完的數(shù)據(jù)發(fā)送至負載較低的flume系統(tǒng)中,數(shù)據(jù)清洗模塊可以為flume系統(tǒng)提供負載均衡。
一種基于flume系統(tǒng)的數(shù)據(jù)處理裝置,如圖4所示,包括:
采集模塊,應(yīng)用于source層中,用于從數(shù)據(jù)源采集原始數(shù)據(jù);
第一傳送模塊,應(yīng)用于source層,用于將采集到的原始數(shù)據(jù)發(fā)送至channel層;
輸出模塊,應(yīng)用于channel層,用于將原始數(shù)據(jù)發(fā)送至數(shù)據(jù)清洗模塊;
輸入模塊,應(yīng)用于channel層,用于從數(shù)據(jù)清洗模塊獲取清洗后的目標數(shù)據(jù);
輸入模塊和輸出模塊不會破壞flume中的層級結(jié)構(gòu),對flume的架構(gòu)無侵入;輸入模塊和輸出模塊可以跟隨flume的版本進行升級;輸入模塊和輸出模塊可以是但不限于以lib包的形式配置在flume系統(tǒng)的channel層中。
獲取模塊,應(yīng)用于sink層,用于從channel層獲取目標數(shù)據(jù);
第二傳送模塊,應(yīng)用于sink層,用于將目標數(shù)據(jù)發(fā)送至接收方。
對本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護范圍之內(nèi)。