999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OSGI的ETL設計與實現

2019-04-20 02:23:20程聰
科技視界 2019年3期
關鍵詞:數據處理

程聰

【摘 要】隨著信息化以及大數據快速發展,結構化、半結構化、非結構化的數據越來越多,結構越來越繁雜,傳統的ETL已經在數據整合方面存在很大的瓶頸,在可擴展性以及穩定性方面存在很大的弊端。文章介紹了OSGI框架的技術特性,基于OSGI框架Equinox開發實現的hbust ETL的體系結構,最后詳細、著重地論述了hbust ETL核心bundle及其插件擴展點的設計與實現方法。hbust ETL具備很好的數據整合可擴展性以及穩定性,特別在處理當下的大數據方面,具備很大的優勢,不同bundle處理不同版本的hadoop、hive、hbase等等,不同版本大數據處理,可通過開發可擴展的bundle,發布于OSGI容器,不用修改ETL源代碼,即可進行該版本數據整合處理。

【關鍵詞】SOGI ?bundle;插件擴展點;ETL;數據處理

中圖分類號: TP311.52;TP399-C1 文獻標識碼: A 文章編號: 2095-2457(2019)03-0001-007

DOI:10.19694/j.cnki.issn2095-2457.2019.03.001

OSGI-based ETL design and implementation

CHENG Cong

(Hubei university of science and technology,School of computer science and technology,Hubei Xianning 437000, China)

【Abstract】With the rapid development of informatization and big data, there are more and more structured, semi-structured and unstructured data, and the structure is more and more complex. The traditional ETL has great bottlenecks in data integration, and great drawbacks in scalability and stability.The technical features of the OSGI framework, the architecture of the hbust ETL developed based on the OSGI framework Equinox, and the design and implementation of the hbust ETL core bundle and its plug-in extension points are discussed in detail and emphatically.hbust ETL has good expansibility and stability for data integration, especially in dealing with the current big data, have a lot of advantages, different bundle deal with different versions of the hadoop, hive, hbase, and so on, different versions of the data processing, but by developing extensible bundle, released on OSGI container, don't need to modify the ETL source code, this version can be made data integration process.

【Key words】SOGI; Bundle; Plug-in extension point; ETL; Data process

0 引言

ETL(Extract-Transform-Load)作為現在一種通用的數據遷移、裝載的數據處理工具,面對當今大數據、人工智能飛速發展的時代,ETL必須具備可擴展性,對接各種類型的關系數據庫、NoSQL數據庫、Hadoop、hive以及hbase等等繁雜存儲結構的數據以及各種各樣的基于規則的數據清洗。這些數據包括結構化、半結構化、非結構化數據,并且非結構化的數據越來越多。OSGI框架本身支持模塊化的動態部署,模塊的動態擴展,這種框架應用于ETL,各種類型數據在OSGI的框架容器的bundle中能夠獨立處理,使得ETL的動態可擴展性、系統穩定性大大提高。

1 OSGI框架

OSGI(Open Service Gateway Initiative)技術是Java動態化模塊化系統的一系列規范,Java平臺的模塊層。OSGI框架一般具備的基礎功能:(1)支持模塊化的動態部署。基于OSGI而構建的系統可以以模塊化的方式動態地部署至框架中,從而增加、擴展或改變系統的功能。(2)支持模塊化的封裝和交互。每個工程(模塊)可通過聲明Export-Package對外提供訪問此工程的類和接口。(3)支持模塊的動態擴展。基于OSGI提供的面相服務的組件模型的設計方法,以及OSGI實現框架提供的擴展點方法可實現模塊的動態擴展。(4)模塊化的設計。在OSGI中模塊由一個或多個bundle構成,模塊之間的交互通過Import-Package、Export-Package以及OSGI Service的方式實現。(5)動態化的設計。動態化的設計是指系統中所有的模塊必須支持動態的插拔和修改,“即插即用,即刪即無”。(6)可擴展的設計。通常使用定義擴展點的方式。按照Eclipse推薦的擴展點插件的標準格式定義bundle中的擴展點,其它要擴展的bundle可通過實現相應的擴展點來擴展該bundle的功能。(7)每個bundle擁有獨立的classloader,通過它來完成本bundle類的加載。(8)穩定、高效的系統。基于OSGI的系統采用的是微核機制,微核機制保證了系統的穩定性,微核機制的系統只要微核是穩定運行的,那么系統就不會崩潰,也就是說基于OSGI的系統不會受到運行在其中的bundle的影響,不會因為bundle的崩潰而導致整個系統的崩潰。

目前比較成熟、流行的OSGI框架有Equinox、felix。Equinox是Eclipse的項目,并作為OSGI R4 RI而知名,目前隨著Eclipse的版本而發布的,同時也提供獨立的下載。Equinox除了完整實現OSGI R4規范以外,還吸取了Eclipse的插件擴展點機制,bundle通過發布擴展點的方式來定義bundle可擴展部分,當需要擴展bundle的時候只需要實現bundle提供的擴展點的接口就可以了,通過這樣的方式就可以完成bundle的擴展。

2 hbust ETL

傳統的ETL工具模塊可擴展性差,一般只內置幾種常見的數據處理組件。信息化數據中心建設中,結構化數據、半結構化數據、非結構化數據等各種存儲結構的數據,越來越繁雜,也越來越多,通常就是我們現在所說的大數據。傳統ETL在處理各種結構類型的數據,具有不適應性,一般只能通過修改源代碼內置需要整合處理的數據處理方案,可擴展性、穩定性得不到保障,也影響系統數據處理的性能。

本文介紹的ETL(hbust ETL)正是基于OSGI框架的Equinox進行開發,每個模塊作為一個獨立的bundle,bundle內部可以定義擴展點,本bundle或其它bundle可以擴展實現該擴展點。整體大的模塊bundle分為engine bundle、database handler bundle、file handler bundle、transform rule bundle、 hadoop bundle、hbase bundle、hive bundle以及common bundle、other bundles等等。

2.1 hbust ETL設計:

圖1,服務器:采用OSGI的體系結構,每個功能模塊都是一個OSGI bundle。其中執行引擎bundle定義了流程節點擴展點,數據清洗轉換規則bundle定義了基于規則的數據清洗擴展點,數據庫讀寫處理器bundle定義了數據庫讀寫處理擴展點,大數據處理bundle定義了大數據處理擴展點等等。系統內置的組件和用戶擴展的組件都統一通過擴展點的方式實現,流程執行時通過查詢系統擴展點信息來加載相應的類并執行。

2.2 hbust ETL執行引擎

hbust ETL中的流程包括數據流和控制流,其流程的結構是任意的,即任何結構的流程,只要其屬性配置正確即可被執行。hbust ETL中的流程表示為一個節點和邊組成的有向無環圖。流程的執行就是遍歷有向圖的過程。一個典型的流程圖如圖2所示,方框表示活動節點,帶有箭頭的線表示節點活動之間的關系。

圖1中的開始節點和結束節點是系統在流程執行之前自動加上的,流程的執行從開始節點啟動,直到結束節點執行完成則整個流程執行完成。每個節點執行完自己的功能后再根據邊的指向找到下一個節點并啟動。

hbust ETL控制流

控制流的執行過程如圖3所示,虛線箭頭代表一個線程,從下圖中可以看出,每個節點的功能由進入該節點的線程執行,該線程執行完當前節點的功能后,再跟邊的指向執行下一個節點。如果當前節點有多個輸出則,則每個輸出都有一個對應的線程去執行該輸出指向的節點。如果一個節點有多個輸入,則該節點需要等到多個線程都到達時才能開始執行,此時該節點可以歸還一個線程,只保留一個線程繼續執行。

數據流的執行過程如圖4所示,與控制流相比,數據流的節點的遍歷和執行是由不同的線程完成的,數據流節點遍歷的過程和控制流類似,只是對于數據流來說,遍歷的過程只是配置節點屬性和啟動節點線程,具體的數據處理是由每個節點自己的線程完成的。與控制流不同,數據流只有當所有的數據都處理完畢或者出錯才結束。

流水線是一個FIFO的同步隊列,上一個節點的線程將數據發送到隊列中,下一個節點則從隊列中取數據。

數據流節點的結構:

一個數據流的節點由輸入點、輸出點、容器和數據處理器4部分組成,如圖6所示:

輸入點和輸出點的個數決定了節點可以連接的輸入和輸出數量。節點容器實現節點的通用功能包括節點屬性的讀取、節點事件的發送、日志和統計信息的記錄、故障恢復、數據分區。

數據處理器實現具體的數據處理邏輯。容器根據當前節點的類型創建相應的數據處理器的實例后在一個獨立的線程中啟動它,數據的讀取、處理和發送都是數據處理器線程中執行。

2.3 hbust ETL核心模塊bundle

2.3.1 Engine bundle

定義了擴展點"com.hbust.etl.engine.activities"。控制流節點需要擴展節點類型type和節點活動類名activityClass;數據流節點需要擴展節點類型type和節點活動類名activityClass,以及節點角色role,角色role分source、transformation以及destination三種,方便數據流節點抽取、轉換或裝載數據。

(2)擴展實現內置的流程活動節點

2.3.2 database handler bundles

"com.hbust.etl.engine.activities"活動擴展點中,我們看到TableSource以及TableDestination的活動,涉及到數據庫讀寫相關的處理,目前不同的ETL使用場景,可能使用不同的數據庫,極可能出現場景中的數據庫在ETL沒有內置,在不修改ETL源代碼的情況下,可以單獨開發bundle來對應未有內置的數據庫的訪問處理。所以在數據庫讀寫訪問這塊,使用bundle以及插件擴展點的機制,完全可以進行各種數據庫讀寫的訪問。

(1)各種數據庫的通用操作,供其它特定的database handler bundle以import package或require bundle方式進行復用。

(2)定義數據庫處理擴展點。擴展點的定義與engine bundle的activity擴展點類似,定義數據庫的類型、版本以及數據庫操作的接口,在各自數據庫內實現擴展該擴展點,實現數據庫操縱的接口的實現。

各種數據庫自己的bundle:

各種類型的數據庫,包括每種數據庫不同版本,實現一個bundle,該bundle內部擴展實現該數據庫處理擴展點。這樣一來,每個bundle可以加載自己的JDBC,創建自己的數據庫連接,供engine bundle的連接池來管理,供engine bundle數據處理器使用。

2.3.3 Transform rule bundle:

"com.hbust.etl.engine.activities"活動擴展點中,我們也看到TransformRuleActivity活動,該Activity利用這種各樣的清洗規則對數據進行轉換清洗。同樣,我們在系統不可能內置所有的清洗規則,在實際應用場景,必須要擴展注入某些清洗規則來清洗數據。在不修改ETL源代碼的情況下,同樣可以開發額外的數據清洗bundle,這些bundle擴展實現Transform rule bundle中定義的擴展點,實現數據清洗轉換類。

(1)定義數據清洗規則擴展點。擴展點的定義與engine bundle的activity擴展點類似,定義數據清洗規則類型、數據清洗的接口,在各自數據清洗bundle內實現擴展該擴展點,實現數據清洗的接口的實現。

(2)實現數據清洗規則擴展點,然后注冊,供engine bundle數據處理器使用。

2.3.4 其它模塊bundle

各種文件的讀寫操作可放在common bundle進行擴展、注冊。當今的大數據的處理,比如hadoop、hive、hbase以及nosql數據庫的處理,同樣可以使用bundle以及插件擴展點的機制,對它們的各種版本的數據操作處理進行注冊,然后根據版本類型獲取自己的數據操縱類,進行數據的訪問。篇幅有限,不一一描述擴展點的定義以及擴展實現。

3 結束語

該文介紹了OSGI框架的技術特性,基于OSGI框架Equinox開發實現的hbust ETL的體系結構,hbust ETL核心bundle及其插件擴展點的設計與實現。hbust ETL利用OSGI bundle以及插件擴展點機制,大大地提升了ETL的可擴展性、系統穩定性。面對當今各種復雜的數據處理,不修改源代碼的情況下,直接開發bundle擴展已經定義的擴展點,完成各種類型的數據處理,包括大數據的處理。

【參考文獻】

[1]林昊,曾憲杰.OSGi原理與最佳實踐電子工業出版社.

[2]林昆.面向數據倉庫的ETL工具的研究與實現計算機技術與自動化,2018,01.

[3]王欣.數據集成技術若干問題的研究:[博士學位論文].上海交通大學2016.

猜你喜歡
數據處理
驗證動量守恒定律實驗數據處理初探
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
ADS-B數據處理中心的設計與實現
電子測試(2018年4期)2018-05-09 07:28:12
MATLAB在化學工程與工藝實驗數據處理中的應用
基于希爾伯特- 黃變換的去噪法在外測數據處理中的應用
大數據處理中基于熱感知的能源冷卻技術
計算機工程(2015年4期)2015-07-05 08:28:04
Matlab在密立根油滴實驗數據處理中的應用
數據處理能力在求職中起關鍵作用
我國首個“突發事件基礎數據處理標準”發布
主站蜘蛛池模板: 亚洲欧美国产高清va在线播放| 久久人体视频| 国产JIZzJIzz视频全部免费| 久久精品人妻中文系列| 亚洲AV无码一区二区三区牲色| 这里只有精品免费视频| 久久精品一品道久久精品| 国产一区二区免费播放| 国产欧美日韩91| 中文字幕人妻av一区二区| 喷潮白浆直流在线播放| 久久精品人人做人人爽电影蜜月| 日韩人妻无码制服丝袜视频| 国产va在线观看免费| 狼友视频一区二区三区| 精品久久久久久成人AV| 亚洲精品无码专区在线观看 | 久久91精品牛牛| 久久99蜜桃精品久久久久小说| 亚洲a级在线观看| 国产免费精彩视频| 国产午夜精品鲁丝片| 制服丝袜一区二区三区在线| 狠狠色丁香婷婷| 亚洲无卡视频| 亚洲最猛黑人xxxx黑人猛交| 最新日韩AV网址在线观看| 国产内射一区亚洲| 日本人妻一区二区三区不卡影院| 欧美亚洲欧美| www.亚洲一区二区三区| 亚洲欧洲自拍拍偷午夜色无码| 日韩精品一区二区三区中文无码| 亚洲性视频网站| 色有码无码视频| 亚洲中文精品人人永久免费| 中文字幕在线欧美| 免费A∨中文乱码专区| 国产在线自乱拍播放| 国产美女在线观看| 欧美不卡在线视频| 青青草a国产免费观看| 凹凸精品免费精品视频| 国产视频资源在线观看| 国产幂在线无码精品| 亚洲中文无码h在线观看| 18禁色诱爆乳网站| 欧美三级日韩三级| 福利一区在线| 91在线精品麻豆欧美在线| 美女视频黄频a免费高清不卡| 久久精品亚洲中文字幕乱码| 亚洲欧美人成人让影院| 欧美色综合网站| 国产成人a毛片在线| 中国一级特黄大片在线观看| 亚洲欧洲国产成人综合不卡| 久久永久免费人妻精品| 国产欧美日韩va另类在线播放| 国内精自线i品一区202| 国产精品免费p区| 992Tv视频国产精品| 精品无码人妻一区二区| 免费在线播放毛片| 无码人中文字幕| av尤物免费在线观看| 国产美女免费| 国产凹凸一区在线观看视频| 丰满人妻一区二区三区视频| 四虎永久免费在线| 色色中文字幕| 国产一级毛片网站| 国产av剧情无码精品色午夜| 波多野结衣一区二区三区88| 成人av专区精品无码国产| 国产呦视频免费视频在线观看| 日韩视频免费| 国产在线视频二区| www.youjizz.com久久| 91成人免费观看在线观看| 亚洲国产黄色| 国产福利微拍精品一区二区|