• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Hadoop的數(shù)據(jù)倉庫構(gòu)建模式研究

    2015-12-31 08:42:00王緩緩郭敬義張警燦余肖生
    關(guān)鍵詞:數(shù)據(jù)倉庫云計算大數(shù)據(jù)

    王緩緩,郭敬義,張警燦,余肖生

    (三峽大學 計算機與信息學院,湖北 宜昌 443002)

    基于Hadoop的數(shù)據(jù)倉庫構(gòu)建模式研究

    王緩緩,郭敬義,張警燦,余肖生

    (三峽大學 計算機與信息學院,湖北 宜昌443002)

    摘要:針對目前基于Hadoop的數(shù)據(jù)倉庫一般采用“一對一”的模式或方法構(gòu)建的情況,首先通過實例分析其不足之處;然后借鑒軟件工程中的“生成器”設(shè)計模式的思想,提出一種Hadoop數(shù)據(jù)倉庫的構(gòu)建模式,稱為“元數(shù)據(jù)驅(qū)動的生成器模式”,用于構(gòu)建基于Hadoop的數(shù)據(jù)倉庫,即ETL過程。該模式具有兩點優(yōu)勢:一是由元數(shù)據(jù)驅(qū)動,充分發(fā)揮了關(guān)系數(shù)據(jù)庫管理系統(tǒng)對元數(shù)據(jù)操作的效率優(yōu)勢;二是識別了“通用知識”和“具體對象知識”兩類知識,并在對知識的分類基礎(chǔ)上設(shè)計和實現(xiàn)ETL過程,消除了“一對一”模式下大量不必要的重復操作。

    關(guān)鍵詞:云計算;大數(shù)據(jù);數(shù)據(jù)倉庫;Hadoop;ETL

    目前,如何對大規(guī)模的歷史數(shù)據(jù)進行有效的管理和挖掘,從中發(fā)現(xiàn)有用的信息用以輔助管理決策已經(jīng)成為相關(guān)領(lǐng)域的研究課題。數(shù)據(jù)倉庫在此需求背景下產(chǎn)生和發(fā)展。數(shù)據(jù)倉庫是一個“面向主題的、集成的、與時間有關(guān)的、非易失的數(shù)據(jù)集合”,它是一個存儲了依據(jù)業(yè)務(wù)需求經(jīng)過轉(zhuǎn)換和清洗后數(shù)據(jù)的數(shù)據(jù)庫[1]。ETL將數(shù)據(jù)抽取(Extract)、轉(zhuǎn)換(Transform)以及加載(Loading)到數(shù)據(jù)倉庫或數(shù)據(jù)集市中,以備前段分析工具使用[2-4]。ETL作為BI/DW(businessintelligence)的核心和靈魂,是實施數(shù)據(jù)倉庫的重要步驟,也是數(shù)據(jù)倉庫實施過程中工作量最大的環(huán)節(jié)。因此,對其進行系統(tǒng)的改進具有現(xiàn)實意義。

    現(xiàn)有的關(guān)于數(shù)據(jù)倉庫ETL理論的研究主要集中在ETL建模研究[5-6]和ETL過程研究[7-14]兩個方面。此外,在數(shù)據(jù)倉庫ETL的實踐方面也有很多成果。商用的ETL工具方面,例如IBM公司的Datastage、Informatica公司的Powercenter、微軟公司的DataTransformationServices(DTS)、NCRTeradata公司的ETLAutomation;開源的ETL工具方面,例如Kettle、Talend、CloverETL等[15-16]。但是這些ETL工具基本上被用于傳統(tǒng)的關(guān)系型數(shù)據(jù)倉庫。另外,由于這些工具建立在操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之上,故其運行效率打了折扣,而對于數(shù)據(jù)倉庫特別是基于云計算的數(shù)據(jù)倉庫構(gòu)建來說,其數(shù)據(jù)量相當大,故命令行模式效率最高。然而,如果ETL系統(tǒng)是基于命令行模式的,那么傳統(tǒng)的關(guān)系型數(shù)據(jù)倉庫構(gòu)建則不能借助輔助ETL工具,而需要自行開發(fā)[17]。

    目前基于云計算的數(shù)據(jù)倉庫ETL理論方面的研究相對較少,用于構(gòu)建HadoopHive數(shù)據(jù)倉庫的成熟的第三方ETL工具也較少,基本上是用戶自行開發(fā)。通過對現(xiàn)有理論和實踐成果進行總結(jié)可以發(fā)現(xiàn),Hive在輔助用戶實現(xiàn)云數(shù)據(jù)倉庫的ETL過程時,基本是一對一(case-to-case)模式。例如平面文件在抽取、轉(zhuǎn)換和加載時只能是按照每個文件逐一進行,而不能批量進行。這種模式的生產(chǎn)效率較低。對于具體對象,如某個具體的平面文件,這些不同的平面文件的內(nèi)容各不相同,即是不重復的,本文稱之為“具體對象知識”。而對于加載這些平面文件時用到的HiveQL關(guān)鍵字和語法則是相同的,本文稱之為“通用知識”?!耙粚σ弧蹦J皆趯崿F(xiàn)云數(shù)據(jù)倉庫ETL過程時,具體對象知識和通用知識是混合的、不易清晰分離的?!巴ㄓ弥R”由開發(fā)設(shè)計人員設(shè)計完成后,在大量的設(shè)計說明書、程序及測試說明書中不斷重復出現(xiàn),導致了設(shè)計、開發(fā)、測試部門的重復勞動,是造成“一對一”模式實現(xiàn)云數(shù)據(jù)倉庫ETL過程低效的主要原因[18],因此改進云數(shù)據(jù)倉庫ETL過程的模式是非常必要的[19]。

    生成器模式 (builderpattern) 是軟件工程設(shè)計模式的一種,它將一個復雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示[20]。本研究借鑒其思想,將云數(shù)據(jù)倉庫ETL過程中的“通用知識”和“具體對象知識”識別并分離開來,在知識分類的基礎(chǔ)上設(shè)計并實現(xiàn)Hadoop/Hive數(shù)據(jù)倉庫ETL系統(tǒng)。

    1Hadoop/Hive及生成器模式

    1.1 Hadoop項目及其結(jié)構(gòu)

    大數(shù)據(jù)時代,對于如何高效地存儲、管理和分析海量數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)倉庫已經(jīng)不能滿足現(xiàn)有需求,云計算以其強大和高效的存儲和計算能力正在成為海量數(shù)據(jù)管理的經(jīng)濟有效方式。

    Hadoop是一個開源的分布式云計算平臺,其核心是分布式文件系統(tǒng)(hadoopdistributedfilesystem,HDFS)和MapReduce。Hive是一個建立在Hadoop基礎(chǔ)上的數(shù)據(jù)庫管理系統(tǒng),提供類似于傳統(tǒng)RDBMS中SQL語言的查詢語言,即HiveQL(hiveSQL)。Hive編譯器把HQL編譯成一組MapReduce任務(wù),在用戶與MapReduce之間建立一個橋梁,以方便用戶進行Hadoop系統(tǒng)開發(fā)[21]。Hive的系統(tǒng)結(jié)構(gòu)如圖1所示。

    元數(shù)據(jù)對Hive來說至關(guān)重要。Hive的元數(shù)據(jù)存儲在傳統(tǒng)的RDBMS中,Hive通過ODBC或者JDBC連接RDBMS。這樣做是因為通常需要快速地訪問這些Metadata,如果將元數(shù)據(jù)存儲在hdfs中是無法滿足要求的。本文提出的構(gòu)建HadoopHive數(shù)據(jù)倉庫的生成器模式正是由Hive元數(shù)據(jù)驅(qū)動,對于提高構(gòu)建效率可起到至關(guān)重要的作用。Hive元數(shù)據(jù)組織結(jié)構(gòu)如表1所示。

    表1  Hive元數(shù)據(jù)組織結(jié)構(gòu)

    1.2 生成器模式

    在軟件工程中,生成器模式(builderpattern)是指建造者模式可以將一個產(chǎn)品的內(nèi)部表象與產(chǎn)品的生成過程分割開來,從而使一個建造過程生成具有不同的內(nèi)部表象的產(chǎn)品對象。生成器模式的結(jié)構(gòu)如圖2所示。

    圖1 Hive系統(tǒng)結(jié)構(gòu)

    圖2 生成器模式的結(jié)構(gòu)

    建造者(Builder)角色:給出一個抽象接口,以規(guī)范產(chǎn)品對象的各個組成成分的建造。一般而言,此接口獨立于應(yīng)用程序的商業(yè)邏輯。模式中直接創(chuàng)建產(chǎn)品對象的是具體建造者(ConcreteBuilder)角色。具體建造者類必須實現(xiàn)這個接口所要求的方法:一個是建造方法,另一個是結(jié)果返還方法。

    具體建造者(ConcreteBuilder)角色:擔任這個角色的是與應(yīng)用程序緊密相關(guān)的類,它們在應(yīng)用程序調(diào)用下創(chuàng)建產(chǎn)品實例。這個角色主要完成的任務(wù)是實現(xiàn)Builder角色提供的接口,逐步完成創(chuàng)建產(chǎn)品實例的過程,并在建造過程完成后提供產(chǎn)品的實例。

    指導者(Director)角色:擔任這個角色的類調(diào)用具體建造者角色以創(chuàng)建產(chǎn)品對象。指導者并沒有產(chǎn)品類的具體知識,真正擁有產(chǎn)品類的具體知識的是具體建造者對象。

    產(chǎn)品(Product)角色:建造中的復雜對象。

    指導者角色是與客戶端打交道的角色。建造者角色將客戶端創(chuàng)建產(chǎn)品的請求劃分為對各個零件的建造請求,再將這些請求委派給具體建造者角色。具體建造者角色做具體建造工作,但不為客戶端所知。

    本文借鑒生成器模式的思想,采用shell腳本和關(guān)系數(shù)據(jù)庫的存儲過程來構(gòu)建基于Hadoop/Hive的數(shù)據(jù)倉庫。

    2Hadoop/Hive數(shù)據(jù)倉庫的一般構(gòu)建模式分析

    以一個簡單抽象的平面文件“test.txt”的抽取和加載到Hadoop/Hive數(shù)據(jù)倉庫的“test表”為例,對基于傳統(tǒng)范式的數(shù)據(jù)倉庫構(gòu)建行為進行分析。

    首先假設(shè)在Hadoop中已經(jīng)建了一張“test”表,建表的HiveQL語句為“CREATETABLEpokes(SNOINT,SNamestring,BirthDate)”,即“test表”含有SNO、SName、Birth3個字段。然后將test.csv文件加載到hadoop/hive的test表:

    hive>LOADDATALOCALINPATH′/mgo/test.txt′OVERWRITEINTOTABLEtest

    該操作僅完成一個平面文件的加載,如果有更多的平面文件需要加載,則必須根據(jù)要加載的平面文件的具體情況,多次復制并局部修改上述語句。因此,采用這種方法構(gòu)建HadoopHive數(shù)據(jù)倉庫,本文稱為“一對一”模式。需要指出的是,在加載之前通常伴隨著數(shù)據(jù)的清洗工作,因而如果采用“一對一”模式構(gòu)建HadoopHive數(shù)據(jù)倉庫,效率是非常低的。

    3基于元數(shù)據(jù)驅(qū)動的生成器模式構(gòu)建Hadoop/Hive的數(shù)據(jù)倉庫

    3.1 通用知識和具體對象知識

    分析上面的實例,可以發(fā)現(xiàn)最突出的問題是“重復”。這里有兩種類型的“重復”:

    1) 內(nèi)容重復:例如,上述完整加載過程的HiveQL命令“LOADDATA文件名intoTable表名”。

    2) 操作重復:即上述HiveQL命令的編輯操作,旨在為產(chǎn)生后續(xù)的加載更多的平面文件:“復制(命令語句)-粘貼(多次)-搜索(表名和文件名,多次)-替換(用新的表名和文件名替換舊的多次)-調(diào)整(如有必要的話,多次)-驗證(驗證結(jié)果語句是否正確,多次)”。

    這些內(nèi)容重復和操作重復正是導致“一對一”模式構(gòu)建Hadoop/Hive數(shù)據(jù)倉庫低效的主要原因。 內(nèi)容重復出現(xiàn)的原因是因為上述創(chuàng)建表和加載平面文件的HiveQL命令是相同的,本文中稱類似重復的內(nèi)容為“通用知識”。而在上述平面文件加載的實例中,表名和文件名是不重復的,稱之為“具體對象知識”。因此,可以總結(jié)如下規(guī)律:在實現(xiàn)Hadoop/Hive數(shù)據(jù)倉庫ETL過程中通用知識重復,具體對象知識的載體不重復。

    在“一對一”模式下,兩類知識是混合的,不易清晰分離。這就是“一對一”模式的本質(zhì)特征,正是該特征導致了“一對一”模式大量的內(nèi)容重復和操作重復,是其效率低下的主要原因。

    3.2 構(gòu)建Hadoop/Hive數(shù)據(jù)倉庫的元數(shù)據(jù)驅(qū)動的生成器模式分析

    本節(jié)仍以平面文件加載為例,介紹構(gòu)建Hadoop/Hive數(shù)據(jù)倉庫的元數(shù)據(jù)驅(qū)動的生成器模式。Hadoop/Hive的元數(shù)據(jù)是采用關(guān)系型數(shù)據(jù)庫管理系統(tǒng)來存儲的,本文提出的生成器模式是一種元數(shù)據(jù)驅(qū)動的、并采用shell腳本來生成Hive腳本代碼的方法,其工作流程如圖3所示。

    圖3 構(gòu)建Hadoop/Hive數(shù)據(jù)倉庫的元數(shù)據(jù)驅(qū)動的

    構(gòu)建Hadoop/Hive的數(shù)據(jù)倉庫的元數(shù)據(jù)驅(qū)動的生成器模式的具體實現(xiàn)偽代碼如圖4所示。

    圖4 存儲過程和Shell腳本的偽代碼及其執(zhí)行順序

    對于采用元數(shù)據(jù)驅(qū)動的生成器模式,將具體對象知識作為shell腳本文件的參數(shù)。腳本文件通過調(diào)用關(guān)系數(shù)據(jù)庫中的存儲過程生成要加載的平面文件的HiveQL腳本文件,再將HiveQL腳本文件導入到Hive執(zhí)行,完成具體某一個平面文件的加載。僅通過在Shell腳本文件給出平面文件參數(shù)即可,不需做“查找&替換”。此外,通過關(guān)系數(shù)據(jù)庫的存儲過程來操作Hive元數(shù)據(jù)相比在Hive中使用HiveQL命令操作Hive數(shù)據(jù)的效率要高很多,因此,與“一對一”模式相比,元數(shù)據(jù)驅(qū)動的生成器模式的效率明顯提高。

    4結(jié)束語

    本文設(shè)計了一種構(gòu)建基于Hadoop/Hive數(shù)據(jù)倉庫的方法,稱為“基于Hive元數(shù)據(jù)的生成器模式”。這種模式由于建立在“通用知識”和“具體對象知識”兩類知識分類的基礎(chǔ)上,因而有著更高的靈活性、可擴展性。實踐證明,將本方法用于HadoopHive的數(shù)據(jù)倉庫ETL過程可以取得較好的效果。

    參考文獻:

    [1]InmonWH.BuildingtheDataWarehouse[M].America:JohnWiley,1992.

    [2]Luján-MoraS,VassiliadisP,TrujilloJ.DataMappingDiagramsforDataWarehouseDesignwithUML[C]//Proc.ofthe23rdInternationalConferenceonConceptualModeling.USA:Springer,2004:191-204.

    [3]TrujilloJ,Lujan-MoraS.AUMLBasedApproachforModelingETLProcessesinDataWarehouses[C]//Proc.ofthe22ndInternationalConferenceonConceptualModeling.NewYork:ACM,2003:7-320.

    [4]VassiliadisP,SimitsisA,GeorgantasP,etal.AGenericandCustomizableFrameworkfortheDesignofETLScenarios[J].InformationSystems,2005,30(7):492- 525.

    [5]鮑玉斌,孫煥良,冷芳玲,等.數(shù)據(jù)倉庫環(huán)境下以用戶為中心的數(shù)據(jù)清洗過程模型[J].計算機科學,2004,31(5):52-55.

    [6]SellisT.FormalspecificationandoptimizationofETLscenarios[C]//Proceedingsofthe9thACMinternationalworkshopondatawarehousingandOLAP.NewYork:ACM,2006:1-2.

    [7]SkoutasD,SimitsisA.Ontology-basedConceptualDesignofETLProcessesforbothStructuredandSemi-structuredData[J].Semanticwebandinformationsystems,2007,3 (4):1-24.

    [8]KimballR,CasertaJ.TheDataWarehouseETLToolkit[M].USA:JohnWiley&Sons,2004.

    [9]Oracle.OracleWarehouseBuilderProductPage[EB/OL].[2014-11-17].http://otn.oracle.com/products/warehouse/content.html.

    [10]HalevyA,RajaramanA,OrdilleJ.Dataintegration:theteenageyears[C]//Proceedingsofthe32ndinternationalconferenceonverylargedatabases.NewYork:ACM,2006:9-16.

    [11]VassiliadisP,VagenaZ,SkiadopoulosS,etal.Arktos:towardsthemodeling,design,controlandexecutionofETLprocesses[J].InformationSystems,2001,26 (1):537-561.

    [12]XuJG,PeiY.Overviewofdataextraction,transformationandloading[J].JournalofComputerScienceinChina,2011,38(4):15-20.

    [13]戴超凡,王濤.面向ETL的數(shù)據(jù)起源追蹤系統(tǒng)[J].計算機工程,2011,37(17):256-261.

    [14]宿芳,壽永熙,蘇依拉.元數(shù)據(jù)驅(qū)動ETL的研究[J].計算機工程與應(yīng)用,2012,48(6):114-125.

    [15]IBM.IBMDataWarehouseManager[EB/OL].[2014-11-17].http://www-3.ibm.com/software/data/db2/datawarehouse.

    [16]Informatica.PowerCenter[EB/OL].[2014-11-17].http://www.informatica.com/products/powercenter.

    [17]蔣彬,余肖生,王東娟,等.數(shù)據(jù)倉庫構(gòu)建之行為模式分析[J].信息系統(tǒng)學報,2013(12):1-8.

    [18]余肖生,吳西燕,王東娟,等.基于MGO的數(shù)據(jù)倉庫ETL過程構(gòu)建方法[J].重慶理工大學學報:自然科學版,2014,28(2):63-66.

    [19]JiangB.基于元數(shù)據(jù)驅(qū)動通用操作器的數(shù)據(jù)倉儲構(gòu)建[M].鄭悅林,譯.武漢:武漢大學出版社,2013.

    [20]GammaE,HelmR,JohnsonR,etal.DesignPatterns:AbstractionandReuseofObject-OrientedDesign[M].USA:Addison-WesleyProfessional,1994:11.

    [21]Hadoop[EB/OL].[2014-11-25].http://hadoop.apache.org.

    (責任編輯楊黎麗)

    收稿日期:2015-03-22

    基金項目:湖北省教育廳自然科學研究項目(Q20141212)

    作者簡介:王緩緩(1978—),女,博士,副教授,主要從事信息管理與數(shù)據(jù)挖掘研究。

    doi:10.3969/j.issn.1674-8425(z).2015.07.013

    中圖分類號:TP311

    文獻標識碼:A

    文章編號:1674-8425(2015)07-0069-05

    ResearchonConstructionPatternofHadoopDataWarehouse

    WANGHuan-huan,GUOJing-yi,ZHANGJing-can,YUXiao-sheng

    (CollegeofComputerandInformationTechnology,

    ChinaThreeGorgesUniversity,Yichang443002,China)

    Abstract:The “case to case” pattern is a commonly used method for constructing Hadoop Hive data warehouse recently. Firstly, the “case to case” pattern was introduced and its disadvantage was shown with an example. Then inspired by the “Builder Pattern” which is one of design patterns in the area of software engineering, a pattern called “metadata-driven builder pattern” was put forward for constructing Hadoop Hive data warehouse and ETL process. This pattern has two advantages. One is that it is driven by the metadata and the metadata is operated by the relational database management (RDBMS). Doing so can achieve higher efficiency because the metadata of Hive is just stored in the RDBMS. The other one is that the “general knowledge” and “specific-object knowledge” are differentiated and the ETL process is designed and realized based on such differentiation. Doing so can avoid lots of repetitions that the “case to case” pattern leads to.

    Key words:cloud computing; big data; data warehouse; Hadoop; ETL

    引用格式:王緩緩,郭敬義,張警燦,等.基于Hadoop的數(shù)據(jù)倉庫構(gòu)建模式研究[J].重慶理工大學學報:自然科學版,2015(7):69-73.

    Citationformat:WANGHuan-huan,GUOJing-yi,ZHANGJing-can,etal.ResearchonConstructionPatternofHadoopDataWarehouse[J].JournalofChongqingUniversityofTechnology:NaturalScience,2015(7):69-73.

    猜你喜歡
    數(shù)據(jù)倉庫云計算大數(shù)據(jù)
    基于數(shù)據(jù)倉庫的住房城鄉(xiāng)建設(shè)信息系統(tǒng)整合研究
    分布式存儲系統(tǒng)在液晶面板制造數(shù)據(jù)倉庫中的設(shè)計
    電子制作(2016年15期)2017-01-15 13:39:15
    探析電力系統(tǒng)調(diào)度中數(shù)據(jù)倉庫技術(shù)的應(yīng)用
    基于云計算的移動學習平臺的設(shè)計
    實驗云:理論教學與實驗教學深度融合的助推器
    大學教育(2016年9期)2016-10-09 08:54:03
    云計算中的存儲虛擬化技術(shù)應(yīng)用
    科技視界(2016年20期)2016-09-29 13:34:06
    基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
    科技視界(2016年20期)2016-09-29 10:53:22
    基于數(shù)據(jù)倉庫的數(shù)據(jù)分析探索與實踐
    霍邱县| 平安县| 德惠市| 东丽区| 南投县| 营口市| 平阳县| 天门市| 黑龙江省| 望江县| 池州市| 铜陵市| 黄山市| 宁蒗| 樟树市| 玉林市| 云龙县| 达拉特旗| 宝应县| 娄烦县| 平定县| 汉沽区| 广汉市| 裕民县| 永平县| 丰镇市| 门源| 从江县| 获嘉县| 吉林市| 广河县| 岳阳市| 北宁市| 丁青县| 长白| 云霄县| 麻栗坡县| 玉田县| 武汉市| 彰化市| 疏附县|