国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向數(shù)據(jù)集成的分布式ETL研究與設(shè)計(jì)

2017-12-02 19:08張孟春
軟件導(dǎo)刊 2017年11期
關(guān)鍵詞:數(shù)據(jù)集成分布式

張孟春

摘要:針對(duì)數(shù)據(jù)分析融合平臺(tái)建設(shè)中數(shù)據(jù)集成開(kāi)發(fā)效率低、數(shù)據(jù)集成慢和數(shù)據(jù)網(wǎng)絡(luò)分散等問(wèn)題,提出跨網(wǎng)絡(luò)傳輸?shù)姆植际紼TL框架設(shè)計(jì)。通過(guò)對(duì)主流ETL工具進(jìn)行分析,總結(jié)了ETL的工作原理及過(guò)程,設(shè)計(jì)了一種基于消息中間件面向數(shù)據(jù)集成的分布式ETL框架。使用該框架處理數(shù)據(jù)集成任務(wù)時(shí),提交數(shù)據(jù)集成過(guò)程的描述文件進(jìn)行數(shù)據(jù)處理?;谠P万?qū)動(dòng)和面向切面設(shè)計(jì)思想,設(shè)計(jì)數(shù)據(jù)任務(wù)執(zhí)行引擎和控制模型?;谠摽蚣荛_(kāi)發(fā)的工具可使數(shù)據(jù)開(kāi)發(fā)人員從大量重復(fù)的數(shù)據(jù)操作中解脫出來(lái),將更多精力放在數(shù)據(jù)的邏輯處理上。

關(guān)鍵詞關(guān)鍵詞:數(shù)據(jù)集成;分布式; ETL;消息中間件

DOIDOI:10.11907/rjdk.171780

中圖分類號(hào):TP391

文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)011019703

0引言

ETL是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要工具,構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)60%左右的工作量由ETL工具完成。ETL工具從一個(gè)或多個(gè)業(yè)務(wù)數(shù)據(jù)庫(kù)中抽取數(shù)據(jù),經(jīng)過(guò)清洗轉(zhuǎn)換,然后加載到數(shù)據(jù)倉(cāng)庫(kù)中。隨著信息化建設(shè)的深入,企業(yè)和政府深層次利用數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘和信息共享成為急需解決的問(wèn)題。一般數(shù)據(jù)多采用上下級(jí)代理方式,數(shù)據(jù)分散在各地方和部門,這種數(shù)據(jù)集成需要跨網(wǎng)絡(luò)傳輸。如何從網(wǎng)絡(luò)分布的異構(gòu)數(shù)據(jù)源中快速構(gòu)建數(shù)據(jù)倉(cāng)庫(kù),是數(shù)據(jù)集成面臨的關(guān)鍵問(wèn)題。

相對(duì)于傳統(tǒng)的ETL,數(shù)據(jù)集成領(lǐng)域的ETL需要解決復(fù)雜的網(wǎng)絡(luò)環(huán)境、集成效率、性能需求等問(wèn)題。本文采用消息中間件作為數(shù)據(jù)通信總線,屏蔽網(wǎng)絡(luò)底層通信協(xié)議和網(wǎng)絡(luò)環(huán)境差異。使用基于元數(shù)據(jù)架構(gòu)的ETL作為分布式ETL數(shù)據(jù)處理節(jié)點(diǎn),設(shè)計(jì)了分布ETL工具并實(shí)現(xiàn)了子節(jié)點(diǎn)。

1數(shù)據(jù)集成研究現(xiàn)狀

數(shù)據(jù)集成是指把不同來(lái)源、格式、特點(diǎn)及性質(zhì)的數(shù)據(jù)進(jìn)行邏輯或物理上的集中,從而為企業(yè)提供一個(gè)靈活、可擴(kuò)展的數(shù)據(jù)視圖,數(shù)據(jù)集成方法分為模式集成和數(shù)據(jù)復(fù)制[3]。模式集成方法將各數(shù)據(jù)源的局部視圖轉(zhuǎn)換成全局模式;數(shù)據(jù)復(fù)制方法是在保持?jǐn)?shù)據(jù)源數(shù)據(jù)一致性、提高信息共享利用效率的基礎(chǔ)上,將各數(shù)據(jù)源的數(shù)據(jù)復(fù)制到一個(gè)公共數(shù)據(jù)源上。文獻(xiàn)[1]提出一種基于ETL的數(shù)據(jù)集成工具和ETL過(guò)程模型,開(kāi)發(fā)面向數(shù)據(jù)集成的ETL系統(tǒng)Datalntegartor。

ETL的過(guò)程研究集中在數(shù)據(jù)抽取和數(shù)據(jù)轉(zhuǎn)換上。文獻(xiàn)[2]從提取、轉(zhuǎn)換、裝載3個(gè)不同角度詳細(xì)闡述了ETL的核心內(nèi)容,并介紹了3個(gè)不同流程中涉及的關(guān)鍵技術(shù)。文獻(xiàn)[3]介紹了幾種不同的數(shù)據(jù)提取方法,對(duì)各種方法進(jìn)行了詳細(xì)的比較,并對(duì)每種提取方法適應(yīng)的環(huán)境進(jìn)行了總結(jié)。文獻(xiàn)[4]將數(shù)據(jù)抽取分為全量抽取和增量抽取,并將ETL的過(guò)程區(qū)分為全量ETL和增量ETL過(guò)程。

在數(shù)據(jù)傳輸方面,文獻(xiàn)[5]、[6]、[7]提出使用消息中間件進(jìn)行數(shù)據(jù)傳輸。文獻(xiàn)[5]通過(guò)觸發(fā)器捕獲變化的數(shù)據(jù),并將數(shù)據(jù)建成xml文檔,使用消息中間件OpenJMS進(jìn)行數(shù)據(jù)傳遞。文獻(xiàn)[6]提出采用xml作為中間數(shù)據(jù)格式實(shí)現(xiàn)異構(gòu)數(shù)據(jù)源的統(tǒng)一轉(zhuǎn)換,利用消息的異步處理機(jī)制完成應(yīng)用系統(tǒng)間的數(shù)據(jù)交換和傳輸。文獻(xiàn)[7]基于ActiveMQ設(shè)計(jì)了一種輕量級(jí)的企業(yè)服務(wù)總線L-ESB,總線通過(guò)消息隊(duì)列傳遞消息和數(shù)據(jù)。

2ETL過(guò)程描述

ETL過(guò)程指數(shù)據(jù)抽取、轉(zhuǎn)換、加載過(guò)程。目前對(duì)ETL過(guò)程的描述有兩種觀點(diǎn):①數(shù)據(jù)倉(cāng)庫(kù)是基于數(shù)據(jù)源建立的物化視圖,而ETL過(guò)程是用于維護(hù)物化視圖的過(guò)程;②數(shù)據(jù)清理需要指定數(shù)據(jù)處理動(dòng)作,應(yīng)該使用工作流(workflow)來(lái)描述ETL過(guò)程。本文采用第二種思想,將ETL過(guò)程視為一種數(shù)據(jù)處理流程。

2.1ETL過(guò)程形式化描述

對(duì)數(shù)據(jù)操作過(guò)程可以抽象成有向的DGA圖,節(jié)點(diǎn)表示數(shù)據(jù)操作邊,代表操作的先后次序,可進(jìn)行ETL子過(guò)程的嵌套。ETL過(guò)程描述是對(duì)DGA圖描述,是ETL工具進(jìn)行數(shù)據(jù)處理的執(zhí)行計(jì)劃。ETL過(guò)程的一般定義如下:

定義1ETL={job1,job2…,jobk},它由多個(gè)相互獨(dú)立的作業(yè)job組成。

定義2job=(Tasks,Rs)(i=1,2,3,…,k),它由多個(gè)相互關(guān)聯(lián)的Task組成,其中Tasks={Task1,Task2…,Taskn},表示每個(gè)作業(yè)有多個(gè)ETL任務(wù)組成;Rs={R1,R2…,Rn}Ri={P(Taski,Taskj)|j,i?(1,2,…n),j≠i}表示ETL任務(wù)之間的先后順序關(guān)系。

定義3Task與job定義類似,Task=(Os,Rs),Os表示數(shù)據(jù)操作集合,Rs表示數(shù)據(jù)操作之間的約束關(guān)系。

數(shù)據(jù)操作有以下3種:

(1)抽取操作:不同的抽取操作代表不同的數(shù)據(jù)源,抽取操作根據(jù)數(shù)據(jù)源的描述信息進(jìn)行數(shù)據(jù)讀取,以便為隨后的步驟提供數(shù)據(jù)。不同數(shù)據(jù)源的讀取操作不同,這部分是ETL數(shù)據(jù)集成的主要障礙。

(2)轉(zhuǎn)換操作:在數(shù)據(jù)抽取和加載之間,任何對(duì)數(shù)據(jù)的操作過(guò)程均可稱為轉(zhuǎn)換操作。數(shù)據(jù)轉(zhuǎn)換是ETL中最為復(fù)雜的問(wèn)題,主要解決模型轉(zhuǎn)換中的各種沖突,包括命名沖突、格式?jīng)_突、結(jié)構(gòu)沖突等。轉(zhuǎn)換步驟是對(duì)模型轉(zhuǎn)換和模式映射的規(guī)則描述。

(3)加載操作:將完成處理的數(shù)據(jù)加載到目標(biāo)倉(cāng)庫(kù),系統(tǒng)的所有操作包括事實(shí)表操作和維表操作。

2.2ETL描述格式

采用Xml對(duì)ETL過(guò)程模型進(jìn)行描述。XML是W3C組織制定的通用數(shù)據(jù)格式表示語(yǔ)言。XML標(biāo)準(zhǔn)以其開(kāi)放、自描述、向前兼容的特性成為數(shù)據(jù)交換的事實(shí)標(biāo)準(zhǔn)。Xml提供一種結(jié)構(gòu)化的統(tǒng)一方法,用于描述和傳輸數(shù)據(jù),可以方便地實(shí)現(xiàn)模型擴(kuò)展。XML文檔采用Unidcode編碼,任何標(biāo)準(zhǔn)的XML語(yǔ)法分析器都可以讀取、解碼和檢驗(yàn)這種基于文本的自描述數(shù)據(jù)文檔,大大方便了XML在網(wǎng)絡(luò)之間的交換。ETL過(guò)程描述結(jié)構(gòu)如下:

<!—job基本信息描述,包括作業(yè)名稱、作者、提交時(shí)間等-->

taskname

nexttaskname

3體系架構(gòu)

3.1總體架構(gòu)

系統(tǒng)總體結(jié)構(gòu)見(jiàn)圖1。由圖1可知,分布式ETL是一個(gè)多層架構(gòu)體系,包括管理層、控制層與執(zhí)行層,每層功能不同。管理層由客戶端工具組成,負(fù)責(zé)ETL解決方案的設(shè)計(jì)和監(jiān)控??刂茖影ü芾斫涌诤腿蝿?wù)調(diào)度器;管理接口是整個(gè)后臺(tái)的應(yīng)用通信接口,架起管理層和后臺(tái)的通信橋梁;任務(wù)調(diào)度器也稱為任務(wù)調(diào)度服務(wù)層,是ETL作業(yè)運(yùn)行的調(diào)度控制中心。執(zhí)行層由一系列的任務(wù)執(zhí)行節(jié)點(diǎn)組成,主要接受調(diào)度控制器發(fā)出的各種調(diào)度指令,并根據(jù)指令進(jìn)行任務(wù)實(shí)例化、執(zhí)行與停止等工作。

工具分為前端作業(yè)設(shè)計(jì)工具和后臺(tái)作業(yè)運(yùn)行。后臺(tái)作業(yè)運(yùn)行由一系列服務(wù)組件部署在不同節(jié)點(diǎn)上,并通過(guò)不同服務(wù)組件間協(xié)同工作,完成任務(wù)調(diào)度以及客戶端通信處理。工具支持多客戶端,用戶可以管理自己的作業(yè)并監(jiān)控執(zhí)行情況;系統(tǒng)用戶可以管理整個(gè)集群的節(jié)點(diǎn)及用戶權(quán)限管理;工具有一個(gè)調(diào)度控制器和多個(gè)任務(wù)執(zhí)行服務(wù)節(jié)點(diǎn)。

客戶端工具包括:用戶認(rèn)證管理工具admin、數(shù)據(jù)集成方案設(shè)計(jì)工具designer、監(jiān)控工具monior。后臺(tái)cm節(jié)點(diǎn)主要監(jiān)控客戶端請(qǐng)求并提供服務(wù),它是客戶端與server節(jié)點(diǎn)的連接通道。Server負(fù)責(zé)控制集群的其它運(yùn)行節(jié)點(diǎn)和任務(wù)調(diào)度;執(zhí)行節(jié)點(diǎn)node負(fù)責(zé)運(yùn)行任務(wù)。采用消息中間件作為系統(tǒng)的控制總線和數(shù)據(jù)總線,負(fù)責(zé)傳輸數(shù)據(jù)和控制信息。

3.2節(jié)點(diǎn)通信

前臺(tái)工具與后臺(tái)cm節(jié)點(diǎn)采用http協(xié)議進(jìn)行通信。消息中間件負(fù)責(zé)集群節(jié)點(diǎn)node之間的數(shù)據(jù)傳輸和任務(wù)遷移,以及server節(jié)點(diǎn)與node節(jié)點(diǎn)之間控制信息的傳輸,其中消息隊(duì)列保存系統(tǒng)間消息,確保消息的異步性、持久性和可靠性。控制信息采用同步方式進(jìn)行數(shù)據(jù)傳輸。消息中間件采用使用廣泛、免費(fèi)開(kāi)源的ActiveMQ。

在消息中間件中所有數(shù)據(jù)都通過(guò)消息進(jìn)行傳輸,一條消息由消息頭、屬性及消息的有效負(fù)載組成。Message消息是整個(gè)消息系統(tǒng)的重要組成部分,因?yàn)榛谙⒌膽?yīng)用系統(tǒng)所有數(shù)據(jù)和事件都是使用消息進(jìn)行通信的。消息頭提供了消息的相關(guān)元數(shù)據(jù),它描述了消息由誰(shuí)創(chuàng)建、何時(shí)創(chuàng)建、數(shù)據(jù)有效長(zhǎng)度等信息。使用消息選擇器進(jìn)行消息過(guò)濾,基于特定的消息頭和屬性值選擇接收消息。消息中間件提供幾種類型的消息,包括TextMessage、StreamMessage、MapMessage、ObjectMessage和BytesMessage。

系統(tǒng)需要傳輸?shù)臄?shù)據(jù)包括:數(shù)據(jù)處理任務(wù)、處理后的數(shù)據(jù)、節(jié)點(diǎn)之間的控制信息。數(shù)據(jù)處理任務(wù)采用xml描述,使用TextMessage進(jìn)行封裝;處理后的數(shù)據(jù)塊采用ObjectMessage進(jìn)行傳輸;控制信息采用MapMessage進(jìn)行傳輸。數(shù)據(jù)處理在內(nèi)存中使用統(tǒng)一數(shù)據(jù)模型表示,將各種數(shù)據(jù)模式的數(shù)據(jù)轉(zhuǎn)換成對(duì)象模型進(jìn)行數(shù)據(jù)處理,采用ObjectMessage直接將數(shù)據(jù)處理結(jié)果RowSet對(duì)象進(jìn)行序列化傳輸,減少了CPU的消耗??刂菩畔⒍嘤面I值對(duì)表示相關(guān)信息的屬性值,采用MapMessage進(jìn)行控制信息傳輸。控制消息的發(fā)送采用同步非持久化機(jī)制,數(shù)據(jù)消息采用異步持久化進(jìn)行數(shù)據(jù)收發(fā)。

3.3作業(yè)執(zhí)行

數(shù)據(jù)集成作業(yè)對(duì)數(shù)據(jù)進(jìn)行流水線處理。Server節(jié)點(diǎn)接收job分解成一系列的task,根據(jù)特定算法將任務(wù)發(fā)送到各個(gè)節(jié)點(diǎn);node節(jié)點(diǎn)接收任務(wù)、根據(jù)指令運(yùn)行任務(wù)、處理數(shù)據(jù)并將數(shù)據(jù)發(fā)送到下個(gè)任務(wù)所在的節(jié)點(diǎn)。Node節(jié)點(diǎn)上一個(gè)任務(wù)對(duì)應(yīng)一個(gè)線程,通過(guò)這種并行流水線的方式提高ETL執(zhí)行效率。

3.3.1任務(wù)分配

Node節(jié)點(diǎn)會(huì)定期匯報(bào)節(jié)點(diǎn)資源狀況及任務(wù)執(zhí)行狀態(tài),Server節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)信息進(jìn)行任務(wù)分配和負(fù)載均衡。在后臺(tái)引入“slots”作為資源的邏輯單元進(jìn)行資源管理。使用ETL進(jìn)行數(shù)據(jù)集成過(guò)程很長(zhǎng),而且集群資源動(dòng)態(tài)變化,網(wǎng)絡(luò)狀態(tài)不穩(wěn)定,無(wú)法準(zhǔn)確估計(jì)任務(wù)時(shí)間。為避免某個(gè)節(jié)點(diǎn)負(fù)載過(guò)重,任務(wù)分配采用負(fù)載均衡思想。任務(wù)之間需要進(jìn)行數(shù)據(jù)塊傳輸,在負(fù)載均衡的情況下,盡量將有依賴關(guān)系的任務(wù)分配到一個(gè)節(jié)點(diǎn)上運(yùn)行。流程如下:①計(jì)算集群node的slots、slotsum;②建立作業(yè)需要的slot,設(shè)計(jì)中如果沒(méi)有就特別指定,一個(gè)任務(wù)使用一個(gè)slot;③平衡因子factor=min(slots/(slotsum-已經(jīng)使用的slot),1);④計(jì)算每個(gè)節(jié)點(diǎn)可使用的slots=factor*(slotsum-已經(jīng)使用的slot);⑤進(jìn)行任務(wù)分配,任務(wù)隊(duì)列進(jìn)行排序(任務(wù)隊(duì)列構(gòu)建時(shí)采用廣度優(yōu)先算法);⑥生成任務(wù)分配關(guān)系。例如節(jié)點(diǎn)1可利用的slots為3,則將任務(wù)的前3個(gè)任務(wù)分配給節(jié)點(diǎn)1。

3.2.2任務(wù)執(zhí)行流程

Node 節(jié)點(diǎn)通信組件監(jiān)控消息隊(duì)列并進(jìn)行消息處理,接受server指令實(shí)例化任務(wù);如果是數(shù)據(jù)抽取任務(wù),則根據(jù)數(shù)據(jù)源信息進(jìn)行數(shù)據(jù)抽取。control監(jiān)控?cái)?shù)據(jù)塊大小,滿足條件發(fā)送數(shù)據(jù);如果是轉(zhuǎn)換任務(wù)和加載任務(wù)就掛起,control接收到數(shù)據(jù)塊就喚醒任務(wù)線程。

4結(jié)語(yǔ)

ETL是一類從數(shù)據(jù)源中抽取數(shù)據(jù)并進(jìn)行清洗轉(zhuǎn)換的工具,能夠很好地滿足數(shù)據(jù)集成需求。使用ETL進(jìn)行數(shù)據(jù)集成時(shí),面臨工作量巨大、集成效率低等問(wèn)題。本文提出一種分布式ETL框架,并行處理數(shù)據(jù)執(zhí)行任務(wù)。流程為:首先對(duì)ETL過(guò)程進(jìn)行描述,給出xml描述結(jié)構(gòu),為數(shù)據(jù)處理提供執(zhí)行計(jì)劃;然后調(diào)度器server將具有先后依賴關(guān)系的任務(wù)分發(fā)到各個(gè)節(jié)點(diǎn);最后由各節(jié)點(diǎn)執(zhí)行任務(wù),組成具有邏輯關(guān)系的流水線進(jìn)行數(shù)據(jù)處理。本框架設(shè)計(jì)增加了數(shù)據(jù)吞吐量,提高了數(shù)據(jù)處理能力。

參考文獻(xiàn)參考文獻(xiàn):

[1]鐘華,馮文瀾,譚紅星,等.面向數(shù)據(jù)集成的ETL系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2004,31(9):152156.

[2]張瑞.ETL數(shù)據(jù)抽取研究綜述[J].軟件導(dǎo)刊,2010,9(10):164165.

[3]鐘巧華.數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)抽取技術(shù)研究[J].計(jì)算機(jī)工程,2004,30(1):6263.

[4]張旭峰,孫未未,汪衛(wèi),等.增量ETL過(guò)程自動(dòng)化產(chǎn)生方法的研究[J].計(jì)算機(jī)研究與發(fā)展,2006, 43(6): 10971103.

[5]趙曉君.基于JMS和XML的異構(gòu)數(shù)據(jù)庫(kù)集成研究[D].武漢:武漢理工大學(xué),2005.

[6]萬(wàn)軍.基于JMS和XML的數(shù)據(jù)交換模型設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州:蘇州大學(xué), 2005.

[7]龐新巖.基于ActiveMQ的企業(yè)服務(wù)總線研究與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2015.

責(zé)任編輯(責(zé)任編輯:杜能鋼)endprint

猜你喜歡
數(shù)據(jù)集成分布式
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
XML數(shù)據(jù)交換技術(shù)在中醫(yī)智能化診斷數(shù)據(jù)集成中的應(yīng)用
高校一表通系統(tǒng)建設(shè)探究
基于數(shù)據(jù)集成的水上項(xiàng)目國(guó)家隊(duì)數(shù)據(jù)庫(kù)網(wǎng)絡(luò)管理平臺(tái)的設(shè)計(jì)與開(kāi)發(fā)
西門子 分布式I/O Simatic ET 200AL
家庭分布式儲(chǔ)能的發(fā)展前景