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