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

?

基于大數(shù)據(jù)處理的ETL框架的研究與設(shè)計

2016-09-14 09:17:14沈琦陳博
電子設(shè)計工程 2016年2期
關(guān)鍵詞:配置文件插件數(shù)據(jù)處理

沈琦,陳博

(北京工業(yè)大學(xué) 北京 100124)

基于大數(shù)據(jù)處理的ETL框架的研究與設(shè)計

沈琦,陳博

(北京工業(yè)大學(xué) 北京100124)

針對傳統(tǒng)抽取、轉(zhuǎn)換、裝載(ETL)架構(gòu)在數(shù)據(jù)處理過程控制方面和數(shù)據(jù)產(chǎn)品開發(fā)效率方面的不足,提出一種基于大數(shù)據(jù)處理的ETL架構(gòu)。通過分析主流的ETL工具--Datastage的工作原理和ETL過程的特點,設(shè)計ETL元數(shù)據(jù)描述模塊、ETL任務(wù)描述模塊、配置解析模塊和數(shù)據(jù)任務(wù)調(diào)度模塊等。使用該框架處理數(shù)據(jù)任務(wù)時,以配置文件的方式開發(fā),使工作效率得到了極大的提升?;谠撛O(shè)計思想開發(fā)一款基于大數(shù)據(jù)處理的ETL工具,在對數(shù)據(jù)處理過程(E、T、L)的控制方面得到了改進(jìn),同時也可以使數(shù)據(jù)開發(fā)人員從大量重復(fù)的操作中解脫出來,將更多的精力放在數(shù)據(jù)的邏輯處理方面。

大數(shù)據(jù)處理;數(shù)據(jù)抽?。粩?shù)據(jù)轉(zhuǎn)換;數(shù)據(jù)加載;ETL框架

信息是現(xiàn)代企業(yè)的重要資源,是企業(yè)運(yùn)用科學(xué)管理、決策分析的基礎(chǔ)。目前,大多數(shù)企業(yè)花費(fèi)大量的資金和時間來構(gòu)建聯(lián)機(jī)事務(wù)處理OLTP的業(yè)務(wù)系統(tǒng)和辦公自動化系統(tǒng),用來記錄事務(wù)處理的各種相關(guān)數(shù)據(jù)。據(jù)統(tǒng)計,數(shù)據(jù)量每2~3年時間就會成倍增長,這些數(shù)據(jù)蘊(yùn)含著巨大的商業(yè)價值,而企業(yè)所關(guān)注的通常只占在總數(shù)據(jù)量的2%~4%左右。因此,企業(yè)仍然沒有最大化地利用已存在的數(shù)據(jù)資源,導(dǎo)致浪費(fèi)了更多的時間和資金,也失去制定關(guān)鍵商業(yè)決策的最佳契機(jī)。于是,企業(yè)如何通過 各種技術(shù)手段,并把數(shù)據(jù)轉(zhuǎn)換為信息、知識,已經(jīng)成了提高其核心競爭力的主要瓶頸。而ETL[2]則是主要的一個技術(shù)手段。

1 主流的ETL工具——Datastage

DataStage[3]包括設(shè)計、開發(fā)、編譯、運(yùn)行及管理等整套工具。通過運(yùn)用DataStage能夠?qū)碜砸粋€或多個不同數(shù)據(jù)源中的數(shù)據(jù)進(jìn)行析取、轉(zhuǎn)換,再將結(jié)果裝載到一個或多個目的庫中。通過DataStage的處理,最終用戶可以得到分析和決策支持所需要的及時而準(zhǔn)確的數(shù)據(jù)及相關(guān)信息。DataStage支持不同種類的數(shù)據(jù)源和目的庫,它既可以直接從Oracle、Sybase等各種數(shù)據(jù)庫中存取數(shù)據(jù),也可以通過ODBC接口訪問各種數(shù)據(jù)庫,還支持Sequential?file類型的數(shù)據(jù)源。這一特性使得多個數(shù)據(jù)源與目標(biāo)的連接變得非常簡單,可以在單個任務(wù)中對多個甚至是無限個數(shù)據(jù)源和目標(biāo)進(jìn)行連接。DataStage自帶了超過300個的預(yù)定義庫函數(shù)和轉(zhuǎn)換,即便是非常復(fù)雜的數(shù)據(jù)轉(zhuǎn)換也可以很輕松的完成。它的圖形化設(shè)計工具可以控制任務(wù)執(zhí)行而無須任何腳本。

DataStage整體上還是按照ETL任務(wù)處理思想進(jìn)行數(shù)據(jù)集成,不過它的并行處理技術(shù)使用分區(qū)處理技巧,將大型的整合工作切割為分區(qū)(分割并行處理)并將這些分區(qū)同時傳送給所有處理器(管道并行處理)。管道與分區(qū)并行處理的組合可提供完整的并行處理功能(效能提升與處理器數(shù)量成正比),并讓硬件成為性能的唯一決定性因素。不過下游的處理可能需要以不同方式分區(qū)數(shù)據(jù)。透過自動重新分區(qū)數(shù)據(jù)的功能,使用者便可根據(jù)下游處理數(shù)據(jù)分割的需求重新分區(qū)處理流程上的數(shù)據(jù),而不需要將數(shù)據(jù)儲存在磁盤上。其具體工作流程如圖1所示。

圖1 Datastage的工作流程圖Fig.1 The flow chart of Datastage

DataStage的可執(zhí)行應(yīng)用的最小單位為ETL任務(wù)。而這些任務(wù)是通過DataStage Designer、DataStage Manager、DataStage Director來完成的。DataStage Designer是ETL任務(wù)開發(fā)的核心環(huán)境。DataStage Designer的主要功能可以概括為以下3個方面:ETL任務(wù)的開發(fā)、ETL任務(wù)的編譯、ETL任務(wù)的執(zhí)行。DataStage Manager主要用來管理項目資源[4]。DataStage Director主要有以下兩個功能:監(jiān)測ETL任務(wù)的運(yùn)行狀態(tài)、設(shè)置何時運(yùn)行ETL任務(wù)。

2 基于數(shù)據(jù)處理的ETL框架的設(shè)計

現(xiàn)今企業(yè)每天都會產(chǎn)生大量的數(shù)據(jù),這些數(shù)據(jù)絕大部分都會存儲于日志文件中,而我們的ETL框架的功能就是需要將這些日志文件進(jìn)行數(shù)據(jù)抽取、再對抽取出來的數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換、最終導(dǎo)入到為上層應(yīng)用服務(wù)的DB中。hadoop分布式集群,其提供了hdfs文件系統(tǒng)可以為ETL工具提供技術(shù)支持。Hive是基于hadoop的一個數(shù)據(jù)倉庫管理技術(shù),可以方便我們對HDFS上的文件進(jìn)行轉(zhuǎn)換處理操作。因此,文中提供的ETL框架的運(yùn)行環(huán)境為:hadoop、hive(數(shù)據(jù)倉庫管理工具)、mysql(目標(biāo)數(shù)據(jù)庫)、python(主語言,還需要用到少量的shell腳本)。ETL的整體架構(gòu)[5],如圖2所示。

圖2 ETL架構(gòu)圖Fig.2 ETL architecture diagram

由ETL的整體框架可以看出ETL操作[6]主要是在數(shù)據(jù)從底層數(shù)據(jù)源到上層應(yīng)用數(shù)據(jù)庫過程中進(jìn)行。為了能更好地完成這些操作我們需要為這些操作設(shè)計良好的任務(wù)語法,使我們編寫的數(shù)據(jù)任務(wù)腳本可以高效地處理在HDFS上的文件,還能使開發(fā)人員從繁重的代碼中解脫出來,將重心轉(zhuǎn)移到任務(wù)的邏輯上面;與此同時,還要為這些語法,編寫相應(yīng)的解析程序,支撐本框架的語法體系;最后,要為任務(wù)處理過程中的一些常用操作提供公共工具接口,以方便全局調(diào)用。

2.1任務(wù)語法設(shè)計

任務(wù)語法是指我們在用本文提供的框架開發(fā)數(shù)據(jù)任務(wù)時,如何才能清晰地區(qū)分E、T、L 3個步驟;在每一步的配置文件中我們又該以什么樣的格式編寫,才能被本文設(shè)計的框架識別。設(shè)計任務(wù)語法,不僅可以使我們的任務(wù)邏輯清晰,而且還有利于團(tuán)隊開發(fā),極大的提高了開發(fā)效率。

由于框架的主語言是python,并且python對.yaml這種配置文件有很好的解析技術(shù)支持,所以本框架的任務(wù)配置文件選擇用.yaml文件。按照ETL任務(wù)的一般處理過——程數(shù)據(jù)抽取、轉(zhuǎn)換和加載(Extract、Transform、Load),因此我們可以將每個ETL任務(wù)都設(shè)計成E、T、L 3個子任務(wù)。每個任務(wù)的配置信息寫在相應(yīng)目錄下的task.yaml中,每個子任務(wù)目錄下還可以有一些其他的腳本,具體任務(wù)文件的編寫和腳本的相關(guān)規(guī)則將在下文做詳細(xì)介紹。

ETL(extract,transform,load)是在建設(shè)數(shù)據(jù)倉庫過程中對一份數(shù)據(jù)的整個處理流程,大致過程為把數(shù)據(jù)從源系統(tǒng)抽?。‥)出來,經(jīng)過一系列的處理(T),然后加載到目標(biāo)庫中(L)。下面是一個任務(wù)的配置文件task.yaml的大致框架:

parent:[parent_task_name]#父任務(wù)名稱,用來繼承

task_name:[task_name]#任務(wù)名稱

[phase_name]:#執(zhí)行的階段

-step:[plugin_name].[module_name]#執(zhí)行中用到的插件配置

[attr_name]:[attr_value]

-step:[plugin_name].[module_name]

[phase_name]:

-step:

下面對配置項進(jìn)行一些解釋:parent:父任務(wù)名稱,無特殊需求,統(tǒng)一配置為EtlTask。task_name:任務(wù)名稱,由開發(fā)者自行指定,保證不會與其他現(xiàn)在任務(wù)名稱重復(fù)即可。phase_name:階段名稱,對應(yīng)于EtlTask中target中的定義,比如前面的EtlTask定義了以下階段extract,transform,load分別對應(yīng)于ETL 3個階段。這些階段(phase)只是起了一個標(biāo)識作用,讓配置文件內(nèi)容看起來更清晰。真正的操作是由phase下的一系列的步驟(step)決定的。step:步驟名稱,指定這一步進(jìn)行什么操作,例如transfer.move_data,則代表指定了執(zhí)行transfer插件中的move_date模塊。這些插件都用python語言在框架中編寫。

2.2配置文件解析

配置文件解析部分的功能主要是負(fù)責(zé)將任務(wù)規(guī)則設(shè)計中產(chǎn)生的配置文件中出現(xiàn)的一些標(biāo)簽和插件的引用與框架的python腳本相關(guān)聯(lián)。

2.2.1插件

本框架中定義的插件主要分為transfer類、file類、script 類3大類插件。

transfer插件主要定義了一些數(shù)據(jù)傳輸?shù)哪K,具體的模塊有:從ftp服務(wù)器上將數(shù)據(jù)日志文件下載到本地、從本地到HIVE、從本地到MYSQL數(shù)據(jù)庫。

file插件主要定義了一些數(shù)據(jù)文件處理的模塊,具體模塊有:將文件增加一列常量數(shù)據(jù)、檢查文件是否為空、替換文件中的特殊字符。

script插件主要定義了一些task.yaml文件中要調(diào)用的腳本文件的模塊,具體模塊有:script.shell(調(diào)用 shell腳本)、script.hive(調(diào)用hiveQL腳本)、script.sql(調(diào)用SQL腳本)。

2.2.2linux命令

本框架中有runtask、install_task兩大命令。

runtask-d數(shù)據(jù)日期。例如:runtask-d 20110101;-d,--date=YYYYmmdd或者YYYYmmddHHMM。表示執(zhí)行2011年1月1號的任務(wù)。

Install_task執(zhí)行任務(wù)名稱。例如:install_task data_time_info。表示安裝任務(wù)data_time_info。會將該任務(wù)的所需要的一些文件、數(shù)據(jù)信息加載到緩存。

2.3主要功能

本框架主要的功能有以下幾方面:初始化功能:清除db中數(shù)據(jù)和清除已存在文件;下載功能:下載上游數(shù)據(jù)文件,校驗MD5;文件規(guī)則檢查功能:檢驗下載的文件是否符合設(shè)定的規(guī)則;其他基礎(chǔ)db功能:同db相關(guān)的操作,如查詢?nèi)蝿?wù),查詢下載列表等。

2.3.1初始化功能

該模塊主要是對數(shù)據(jù)和文件進(jìn)行清理,比如需要導(dǎo)入2011-11-01的數(shù)據(jù),需要先把這天的數(shù)據(jù)刪除掉,避免插入重復(fù)的數(shù)據(jù);同時需要建立當(dāng)天數(shù)據(jù)的文件夾同時如果是修復(fù)數(shù)據(jù)的話會把之前下載過的這天的文件進(jìn)行刪除然后再進(jìn)行下載。具體流程,如圖3所示。

圖3 初始化模塊流程圖Fig.3 Initialization module flow chart

由上圖可以看出在執(zhí)行腳本時不會對公共文件進(jìn)行刪除操作,避免出現(xiàn)公共文件多次下載影響下載效率。

2.3.2下載功能

該模塊主要是進(jìn)行數(shù)據(jù)文件的下載,其中分為對ftp協(xié)議和http協(xié)議的下載,下載文件的同時判斷是否存在MD5文件并進(jìn)行校驗;對下載失敗的文件提供重試功能。具體流程,如圖4所示。

圖4 下載模塊流程圖Fig.4 Download the module flow chart

2.3.3文件規(guī)則檢查功能

該模塊主要是對下載的文件通過設(shè)定的規(guī)則進(jìn)行校驗,檢查文件下載的內(nèi)容是否正確。功能使用awk命令實現(xiàn)。

2.3.4db功能

該模塊內(nèi)容主要是同db之間的操作,其中包含查詢?nèi)蝿?wù)相關(guān)內(nèi)容,下載文件相關(guān)內(nèi)容等。包括函數(shù):Update(執(zhí)行指定的 sql)、Gettask(通過任務(wù) id查詢?nèi)蝿?wù)相關(guān)信息)、Getdownload(通過任務(wù)名稱查詢?nèi)蝿?wù)對應(yīng)的需要下載的文件相關(guān)內(nèi)容)。

2.3.5調(diào)度功能

該模塊是整個框架執(zhí)行的主體調(diào)度程序,實現(xiàn)的內(nèi)容是自動地按照順序計劃執(zhí)行任務(wù),從而使所有的數(shù)據(jù)任務(wù)嚴(yán)格按照ETL流程執(zhí)行。ETL流程即:通過任務(wù)名稱查詢出任務(wù)和下載文件相關(guān)信息->下載文件->校驗MD5文件->導(dǎo)入到HIVE數(shù)據(jù)倉庫中(E)->執(zhí)行業(yè)務(wù)腳本(T)->把轉(zhuǎn)化好的數(shù)據(jù)load入庫(L)->刪除臨時文件。

3 結(jié)束語

在數(shù)據(jù)倉庫中,ETL有兩個特點,一是數(shù)據(jù)同步,它不是一次性倒完數(shù)據(jù)就拉到,它是經(jīng)常性的活動,按照固定周期運(yùn)行的,甚至現(xiàn)在還有人提出了實時ETL的概念。二是數(shù)據(jù)量,一般都是巨大的,值得你將數(shù)據(jù)流動的過程拆分成E、T 和L。將數(shù)據(jù)任務(wù)按照E、T和L 3個部分層次化劃分,可以使用戶更好的把握數(shù)據(jù)的轉(zhuǎn)換過程。文中先通過對ETL工具——Datastage的優(yōu)缺點、整體架構(gòu)及工作原理做了細(xì)致地分析。隨后提出了設(shè)計一款ETL框架的基本思路和解決方案,該框架通過使用HIVE作為數(shù)據(jù)集成的中轉(zhuǎn)工具,可以提高文件的操作效率。該框架設(shè)計時考慮到了ETL的兩個特點,使該框架有以下特點:

1)使用HIVE作為數(shù)據(jù)集成的中轉(zhuǎn)工具,可以提高文件的操作效率(基于hadoop分布式集群)。

2)將數(shù)據(jù)任務(wù)按照E、T和L3個部分層次化劃分,可以使用戶更好的把握數(shù)據(jù)的轉(zhuǎn)換過程。

3)使用配置文件的方式創(chuàng)建任務(wù),可以大大加快開發(fā)人員的數(shù)據(jù)處理效率。

[1]PVassiliadis,ASimitsis,PGeorgantas,MTerrovitis SSkiadopoulos.Ageneric and customizable framework for the design of ETL scenarios[J].Information Systems Journa,200530(7): 492-525.

[2]PVassiliadis,etal.ARKTOS:to wards the modeling,design,control and execution of ETL processes[J].Information Systems,2001(26):537-561.

[3]陳弦,陳松喬.基于數(shù)據(jù)倉庫的通用ETL工具的設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用研究,2004(8):214-216.

[4]尤玉林,張憲民.一種可靠的數(shù)據(jù)倉庫中ETL策略與架構(gòu)設(shè)計[J].計算機(jī)工程與應(yīng)用,2006(3):172-175.

[5]周茂偉,鄧蘇,黃宏斌.基于元數(shù)據(jù)的ETL工具設(shè)計與實現(xiàn)[J].科學(xué)技術(shù)與工程,2006,6(21):3503-3507.

[6]鄭洪源,周良.基于CWM的標(biāo)準(zhǔn)ETL的設(shè)計與實現(xiàn)[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2006,1(24):50-55.

Research and design of ETL framework based on data processing

SHEN Qi,CHEN Bo
(Beijing University of Technology,Beijing 100124,China)

According to the traditional extraction,conversion,loading(ETL)architecture forprocess control deficiencies in data processing and data product development efficiency,the article presents a data processing based on ETL.The characteristics of ETL working principle and process analysis of the mainstream ETL tool--Datastage,design of ETL metadata description module,ETL module,configuration task description analysis module and data task scheduling module etc.Using the framework of data processing tasks,development to the configuration file of the way,so that the work efficiency has been greatlyimproved.ThedesignideaofthedevelopmentofalargedataprocessingbasedonETL tools,in data processing(E,T,L)of the control has been improved,but also can make the data developer freed from a large number of repetitive operations,will focus more on the aspects of the data logic processing.

data processing;data extraction;data conversion;data loading;ETL framework

TN709

A

1674-6236(2016)02-0025-03

2015-03-09稿件編號:201503111

沈 琦(1964—),女,北京人,博士,副教授。研究方向:計算機(jī)網(wǎng)絡(luò)與應(yīng)用。

猜你喜歡
配置文件插件數(shù)據(jù)處理
提示用戶配置文件錯誤 這樣解決
認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計法*
ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
自編插件完善App Inventor與樂高機(jī)器人通信
電子制作(2019年22期)2020-01-14 03:16:34
搭建簡單的Kubernetes集群
互不干涉混用Chromium Edge
忘記ESXi主機(jī)root密碼怎么辦
基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
MapWindowGIS插件機(jī)制及應(yīng)用
基于Revit MEP的插件制作探討
阳西县| 福清市| 囊谦县| 句容市| 吉林省| 德令哈市| 稻城县| 龙陵县| 太康县| 陵水| 兰考县| 德令哈市| 扶余县| 高青县| 兴海县| 富裕县| 台州市| 平顶山市| 凤山县| 连平县| 孟津县| 夏邑县| 大连市| 米泉市| 安岳县| 九江县| 东乌珠穆沁旗| 大洼县| 镇坪县| 修武县| 黄龙县| 海林市| 文昌市| 温泉县| 玉环县| 孝感市| 宁南县| 宽甸| 崇信县| 呼和浩特市| 梓潼县|