freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

并行etl工具可擴(kuò)展技術(shù)的研究與開發(fā)-文庫吧資料

2025-06-30 03:30本頁面
  

【正文】 任務(wù)執(zhí)行狀態(tài)的監(jiān)控。出于性能的考慮,商用ETL工具都沒有選擇Pig作為其底層執(zhí)行引擎,而開源的Kettle和Talend均選擇了對(duì)Pig進(jìn)行集成。Talend集成Hive的方式類似于Kettle,也是通過提供寫HQL腳本的接口給用戶的方式來實(shí)現(xiàn)通過Hive處理大數(shù)據(jù)。圖32 Kettle SQL組件Kettle并沒有專門針對(duì)Hive集成做特別多的額外的工作,而是將與Hive相關(guān)的配置添加到兩個(gè)已有的組件中以完成擴(kuò)展:一個(gè)組件叫做“DB連接”,添加了連接Hive的配置選項(xiàng);一個(gè)組件叫做“SQL”,這個(gè)組件并沒有做改動(dòng),只是需要選擇對(duì)應(yīng)的Hive數(shù)據(jù)庫連接。可以說,集成已有并行ETL工具,同時(shí)提供一個(gè)友好的圖形用戶界面,是擴(kuò)展ETL工具的一個(gè)主要方式。為了添加處理大數(shù)據(jù)的能力,傳統(tǒng)ETL工具基本選擇了集成已有并行ETL工具的方式,這樣比較快捷,傳統(tǒng)ETL工具主要關(guān)注如何集成,而不必再進(jìn)行并行ETL模塊的開發(fā)。同時(shí),多個(gè)自定義MapReduce代碼需要有個(gè)比較好的管理機(jī)制,以便用戶在需要的時(shí)候可以方便地查找和使用。基于上面的分析,主要通過上述兩種方法來實(shí)現(xiàn)可擴(kuò)展組件??梢允褂孟旅娴拿顖?zhí)行包含Hadoop作業(yè)Jar文件:hadoop jar arg0 arg1 ...這條命令實(shí)際執(zhí)行的是:java arg0 arg1 ...,嘗試從manifest中提取MainClass,如果提取不到,則把jar文件名之后的第一個(gè)參數(shù)指定的類作為MainClass。 //job配置信息setJar()方法接受一個(gè)String類型的參數(shù),表示jar包對(duì)應(yīng)的本地路徑。 //設(shè)置job的Reducer(myJarPath)。 //設(shè)置job名稱()。setJar()的基本使用方式為:JobConf conf = new JobConf()??截惖紿DFS上的這些資源文件又會(huì)被分配了任務(wù)的從節(jié)點(diǎn)拷貝到本地,進(jìn)而構(gòu)造啟動(dòng)JVM的參數(shù),然后啟動(dòng)一個(gè)新的JVM來運(yùn)行任務(wù)。2) 分片信息():即輸入數(shù)據(jù)的分片信息,通過這些信息,可以了解輸入數(shù)據(jù)在集群上的分布情況,進(jìn)而選擇在合適的節(jié)點(diǎn)運(yùn)行TaskTracker以及在需要的時(shí)候可以獲悉需要的數(shù)據(jù)應(yīng)該從哪個(gè)遠(yuǎn)端節(jié)點(diǎn)拷貝到本地節(jié)點(diǎn)上來。驅(qū)動(dòng)程序還要負(fù)責(zé)指定各階段對(duì)應(yīng)的具體的Mapper類、Combiner類和Reducer類,并完成整個(gè)作業(yè)的提交和后續(xù)處理工作。MapReduce作業(yè)可以只有Map階段,還可以由Map階段和Reduce階段構(gòu)成,也可以由Map階段、Combine階段和Reduce階段構(gòu)成。由此可以看出,以提供可擴(kuò)展組件的方式來實(shí)現(xiàn)擴(kuò)展ETL工具功能的方式較為普遍。Talend支持寫自定義的SQL查詢和Java代碼。開源的Kettle和Talend也都提供了一些可擴(kuò)展組件以支持一些可定制的ETL邏輯的實(shí)現(xiàn)。PowerCenter提供兩種類型的可擴(kuò)展組件,可擴(kuò)展組件可以作為工具的組成部分加入到工具中以供后續(xù)使用:Java自編程組件支持用戶定制的Java代碼;用戶自定義組件支持用戶組合常用組件為新組件,該組件從本質(zhì)上是對(duì)某種子流程進(jìn)行了封裝和抽象,使之從表現(xiàn)上看成為了一個(gè)單獨(dú)定制的組件,也就是說,這種定制開發(fā)機(jī)制是針對(duì)多個(gè)應(yīng)用場景中重復(fù)出現(xiàn)的子流程,其主要目的在于減少重復(fù)性工作。本章重點(diǎn)進(jìn)行并行ETL工具可擴(kuò)展技術(shù)的研究,結(jié)合實(shí)際應(yīng)用需求,提出可行的在并行ETL工具中可以應(yīng)用的可擴(kuò)展技術(shù)并總結(jié)為如下三個(gè)主要方面:可擴(kuò)展組件技術(shù)、開源ETL工具集成技術(shù)和優(yōu)化規(guī)則可擴(kuò)展技術(shù)。. . . .第三章 并行ETL工具可擴(kuò)展技術(shù)的研究盡管上面介紹的ETL工具均提供了豐富的ETL組件以提供豐富的ETL處理邏輯,但是因?yàn)閿?shù)據(jù)格式的多樣、ETL需求本身的復(fù)雜性等因素,導(dǎo)致在實(shí)際使用過程中,ETL工具提供的一整套ETL組件無法完成特定的ETL工作或者即使能夠?qū)崿F(xiàn)特定ETL需求但是設(shè)計(jì)出來的流程復(fù)雜并且性能低下,這時(shí)候就需要ETL工具能夠提供給用戶對(duì)其進(jìn)行擴(kuò)展的功能,讓用戶自己實(shí)現(xiàn)一些處理邏輯并集成到現(xiàn)有ETL工具中。Hadoop在并行計(jì)算中的地位可謂非常重要,而本文也是基于Hadoop來實(shí)行對(duì)大數(shù)據(jù)進(jìn)行并行ETL處理。市場上還沒有沒有比較成熟的采用B/S架構(gòu)的并行ETL工具。另外,這些商用ETL工具均采用了C/S架構(gòu),而開源ETL工具在提供大數(shù)據(jù)支持之后也屬于一種C/S架構(gòu)。本論文涉及到對(duì)Hive和Pig的集成,加上工具本身的內(nèi)置數(shù)據(jù)結(jié)構(gòu),因此需要統(tǒng)一管理元數(shù)據(jù)。Hive處理的數(shù)據(jù)為表結(jié)構(gòu),需要進(jìn)行元數(shù)據(jù)管理,其元數(shù)據(jù)存在關(guān)系型數(shù)據(jù)庫Derby或者M(jìn)ySQL中,用戶可以通過Hive提供的DDL來改變數(shù)據(jù)對(duì)應(yīng)的元數(shù)據(jù)。Fel支持解釋執(zhí)行和編譯執(zhí)行兩種方式求值,用戶只需要將表達(dá)式和表達(dá)式中的變量值傳遞給表達(dá)式引擎,就可以獲得表達(dá)式的值以及表達(dá)式結(jié)果對(duì)應(yīng)的數(shù)據(jù)類型。為了簡化工作,本論文采用開源的表達(dá)式引擎。以Hive為例,因?yàn)镠QL是一種類SQL的腳本語言,所以針對(duì)SQL語句設(shè)計(jì)的一些優(yōu)化規(guī)則(如謂詞下推、分區(qū)信息利用等)可以移植到并行框架中來,同時(shí)需要對(duì)其實(shí)現(xiàn)機(jī)制進(jìn)行調(diào)整以適應(yīng)新的框架(MapReduce并行計(jì)算框架),另外,一些新的優(yōu)化規(guī)則被設(shè)計(jì)和實(shí)現(xiàn)(如列裁剪、MapJoin等)。傳統(tǒng)的ETL工具里面均封裝了一些優(yōu)化規(guī)則,因?yàn)閿?shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)架構(gòu)等方面的差異,不同ETL工具的優(yōu)化規(guī)則不盡相同,對(duì)于相同的優(yōu)化規(guī)則,其最后的實(shí)現(xiàn)機(jī)制也會(huì)不盡相同。為了盡量使執(zhí)行效率最優(yōu),ETL工具通常設(shè)計(jì)一系列優(yōu)化規(guī)則,以用于對(duì)用戶設(shè)計(jì)的ETL方案進(jìn)行優(yōu)化。對(duì)同樣的數(shù)據(jù),不同的應(yīng)用中可以指定不同的元數(shù)據(jù),顯得比較靈活。Pig Latin屬于流程式語言,與工作流流式的特點(diǎn)很契合。 PigPig是Yahoo!貢獻(xiàn)的Apache開源項(xiàng)目,是一個(gè)基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺(tái)。HQL屬于聲明式語言,其邏輯與工作流的相似性較小,這也使得以其為基礎(chǔ)設(shè)計(jì)組件的難度相對(duì)要大一些。相對(duì)于自己編寫MapReduce代碼,其優(yōu)點(diǎn)是學(xué)習(xí)成本低,代碼量小,用戶可以通過少數(shù)的HQL語句快速實(shí)現(xiàn)較為復(fù)雜的MapReduce數(shù)據(jù)處理邏輯。Hive可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供豐富的類似SQL的數(shù)據(jù)處理功能。性能方面,Hive接近自己編寫的代碼,而Pig主要是比較好上手,性能上略差些。也就是說,它們封裝了一系列的MapReduce代碼并以腳本的方式展現(xiàn)給用戶,省掉了用戶自己編寫MapReduce代碼的麻煩,進(jìn)而使得用戶可以更加方便地設(shè)計(jì)ETL方案。這種方式因?yàn)閷?duì)于處理邏輯和數(shù)據(jù)結(jié)構(gòu)的了解,可以編寫最有針對(duì)性的代碼進(jìn)而可以實(shí)現(xiàn)較優(yōu)的性能,但是開發(fā)工作量大,調(diào)試過程復(fù)雜,對(duì)于多樣的需求在工作量、準(zhǔn)確性和靈活性方面均無法滿足。通過設(shè)計(jì)特定的Mapper和Reducer并編寫相應(yīng)的驅(qū)動(dòng)程序驅(qū)動(dòng)MapReduce任務(wù)執(zhí)行,用戶可以方便地實(shí)現(xiàn)并行處理邏輯進(jìn)而在Hadoop集群上處理大數(shù)據(jù)。同時(shí),MapReduce也提供了相應(yīng)的接口給開發(fā)人員去自己實(shí)現(xiàn)讀寫、分發(fā)等功能以完成更復(fù)雜的操作。開發(fā)人員通過實(shí)現(xiàn)自己的Mapper類和Reducer類,并在驅(qū)動(dòng)程序中進(jìn)行相應(yīng)的配置就可以驅(qū)動(dòng)MapReduce作業(yè)執(zhí)行,從而完成自己的并行處理邏輯。reduce方法包含reduce端的主要處理邏輯,每次處理一個(gè)key,Itoratorvalue形式的對(duì)象,其結(jié)果被輸出到HDFS。map端的輸出被分發(fā)到reduce端,分發(fā)以key值為依據(jù),保證具有相同key值的鍵值對(duì)被分發(fā)給同一個(gè)reduce task。1. MapReduce執(zhí)行框架圖22 MapReduce執(zhí)行框架如圖22所示, MapReduce執(zhí)行流程如下:一個(gè)大的輸入文件被分成多個(gè)分片,每個(gè)分片對(duì)應(yīng)一個(gè)map task,map task中的map方法包含map端的主要處理邏輯。 MapReduceMapReduce是一個(gè)簡單高效的并行計(jì)算模型,可用于處理結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)[13]。同時(shí),HDFS還提供一些與本地文件系統(tǒng)進(jìn)行交互的功能,如從本地加載數(shù)據(jù)到HDFS和從HDFS獲取數(shù)據(jù)到本地等。DataNode通過發(fā)送心跳信息給NameNode以使其知道它是否存活,通過發(fā)送數(shù)據(jù)目錄給NameNode以使其知道它所包含的數(shù)據(jù)塊編號(hào)。NameNode作為數(shù)據(jù)訪問的入口,負(fù)責(zé)集群上數(shù)據(jù)的管理維護(hù)工作。圖21 HDFS架構(gòu)圖HDFS采用主從(master/slave)結(jié)構(gòu),一個(gè)集群有唯一的master和若干個(gè)slave,前者即為目錄節(jié)點(diǎn)(NameNode),后者即為數(shù)據(jù)節(jié)點(diǎn)(DataNode)。一個(gè)Hadoop集群主要包括一個(gè)用于管理這個(gè)文件系統(tǒng)的目錄節(jié)點(diǎn)和多個(gè)用于存儲(chǔ)實(shí)際數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)。因?yàn)樯鲜龅膬?yōu)點(diǎn),Hadoop自出現(xiàn)之初就獲得了普遍的關(guān)注和認(rèn)可,隨著Hadoop版本的越來越穩(wěn)定,越來越多的應(yīng)用被移植到Hadoop上面來,Hadoop生態(tài)圈獲得了良性的發(fā)展。Apache Hadoop開源項(xiàng)目就是克隆了這一框架,主要由Hadoop Distributed File System(HDFS)和MapReduce兩部分組成:HDFS是Google File System(GFS)的開源實(shí)現(xiàn);MapReduce是Google MapReduce的開源實(shí)現(xiàn)。 Hadoop2003年,谷歌公布了GFS和MapReduce兩種高性能、高可擴(kuò)展的分布式海量數(shù)據(jù)處理框架,并驗(yàn)證了該處理框架在海量網(wǎng)頁數(shù)據(jù)處理方面的優(yōu)越性。ETL的方式即先從不同的數(shù)據(jù)源中抽取數(shù)據(jù),放到ETL工具中來,ETL工具完成相應(yīng)的轉(zhuǎn)化后將處理的結(jié)果載入到目標(biāo)數(shù)據(jù)集中(通常為數(shù)據(jù)倉庫)。數(shù)據(jù)的抽取和裝載主要涉及多樣的數(shù)據(jù)存儲(chǔ)方式和傳輸方式,數(shù)據(jù)可能被存儲(chǔ)在關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫或者文件中,而傳輸方式則包括串行和并行,并且涉及到同步和異步的問題。轉(zhuǎn)換在ETL處理過程中占比最大,因此,ETL工具均會(huì)提供豐富的轉(zhuǎn)換功能,如記錄篩選、字段選擇、數(shù)據(jù)匯總、數(shù)據(jù)關(guān)聯(lián)等??赡艿膯栴}包括:數(shù)據(jù)類型不匹配、字段缺失、二義性、違反業(yè)務(wù)規(guī)則等。具體而言:抽取主要是針對(duì)不同的數(shù)據(jù)源,充分理解數(shù)據(jù)的定義,設(shè)計(jì)不同的數(shù)據(jù)抽取方式,進(jìn)行必要的數(shù)據(jù)類型轉(zhuǎn)換,選擇合適的數(shù)據(jù)傳輸機(jī)制,如數(shù)據(jù)庫直連、通過FTP接口機(jī)等。第六章是總結(jié)與展望:主要是總結(jié)論文所取得的成果,并就下一步的工作進(jìn)行展望。第四章是并行ETL工具可擴(kuò)展技術(shù)的研究:主要針對(duì)三種擴(kuò)展方式進(jìn)行編碼實(shí)現(xiàn),介紹了系統(tǒng)架構(gòu)以及實(shí)現(xiàn)的細(xì)節(jié)。第二章是相關(guān)概念及技術(shù)介紹:主要介紹ETL的相關(guān)概念和為了實(shí)現(xiàn)可擴(kuò)展將要應(yīng)用的一些技術(shù),包括:Hadoop、MapReduce、Hive、Pig、優(yōu)化規(guī)則等。本論文的主要成果包括:1) 實(shí)現(xiàn)一種自定義MapReduce代碼嵌入機(jī)制,包括兩個(gè)可定制組件,可以讓用戶實(shí)現(xiàn)將自己定義的MapReduce操作應(yīng)用于并行ETL工具中;2) 提供一整套Hive、Pig組件,支持用戶在圖形用戶界面中以構(gòu)建工作流的方式設(shè)計(jì)基于Hive或Pig的ETL工作流而不僅僅是局限于使用腳本,即對(duì)Hive和Pig進(jìn)行更深入的整合,對(duì)并行ETL工具進(jìn)行功能擴(kuò)展;3) 設(shè)計(jì)實(shí)現(xiàn)了一套規(guī)則表示和擴(kuò)展機(jī)制,方便用戶在使用過程中將提煉的規(guī)則集成到現(xiàn)有系統(tǒng)中。本論文希望開發(fā)出一種規(guī)則定義和實(shí)現(xiàn)機(jī)制,使得開發(fā)人員可以方便地對(duì)規(guī)則進(jìn)行擴(kuò)展。另一方面,Hive和Pig的實(shí)現(xiàn)機(jī)制均是將腳本解析為MapReduce執(zhí)行計(jì)劃,在解析的過程中涉及到一套優(yōu)化規(guī)則以便使最后的MapReduce執(zhí)行計(jì)劃性能上更優(yōu)。同時(shí),Hive和Pig均是基于Hadoop的腳本ETL工具,但是均沒有提供圖形用戶界面的使用方式,而傳統(tǒng)ETL工具基本上都提供友好的圖形界面,商用ETL的領(lǐng)軍產(chǎn)品PowerCenter在這方面的成就尤為突出?;谏鲜隹紤]和作者參與的項(xiàng)目的實(shí)際需求,本文設(shè)計(jì)實(shí)現(xiàn)的并行ETL工具采用了B/S的軟件架構(gòu),相關(guān)的研究和開發(fā)工作也均是基于此種模式?;趦?yōu)化規(guī)則來進(jìn)行并行ETL流程的優(yōu)化仍舊占據(jù)主導(dǎo)地位,優(yōu)化規(guī)則實(shí)現(xiàn)機(jī)制具有好的擴(kuò)展性非常必要。通過上面的分析不難看出,圖形用戶界面仍舊是ETL工具的首選,并且都趨向于集成開源并行ETL工具,市場上缺少基于B/S模式的并行ETL工具,另外,ETL工具通過提供一些可定制組件來實(shí)現(xiàn)功能擴(kuò)展。在進(jìn)行大數(shù)據(jù)的并行處理過程中,基于規(guī)則的優(yōu)化器被用來優(yōu)化執(zhí)行計(jì)劃[9]。Talend提供組件運(yùn)行HQL腳本和Pig Latin腳本,同時(shí)針對(duì)Pig開發(fā)了一套組件,支持拖拽工作流以定義ETL處理邏輯[6]。這種方式在集成Hive的同時(shí)還保留了圖形用戶界面的便捷性。云計(jì)算時(shí)代,傳統(tǒng)的商用ETL工具和開源ETL工具均開始集成開源并行ETL工具以完成功能上的擴(kuò)展,但是集成方式各異,集成的深度也有所不同。Pig同樣是一個(gè)基于Hadoop的大規(guī)模數(shù)據(jù)處理工具,它提供流程式語言Pig Latin,支持用戶以編寫腳本的形式完成ETL操作。開發(fā)人員基于Hadoop開發(fā)了不少針對(duì)大數(shù)據(jù)的并行ETL工具并且這些工具均具有一定程度的可擴(kuò)展性。Kettle和Talend也都提供可擴(kuò)展組件以方便用戶運(yùn)行腳本,其中Talend還支持用戶自己輸入Java代碼。在工具本身的可擴(kuò)展性方面,PowerCenter提供兩種類型的可擴(kuò)展組件:Java自編程組件支持用戶定制的Java代碼,用戶自定義組件支持用戶組合常用組件為新組件,可擴(kuò)展組件可以作為工具的組成部分加入到工具中以供后續(xù)使用[7]。主流的開源ETL主要有如下兩種:Kettle和Talend,都提供GUI [5] [6]。用戶可以拖拽功能組件到相應(yīng)的工作區(qū)域并進(jìn)行參數(shù)配置,然后通過在組件之間連有向邊來設(shè)置執(zhí)行的先后關(guān)系以完成ETL流程的設(shè)計(jì)。傳統(tǒng)的ETL工具分商用和開源兩種,主流的商用ETL工具主要有如下三種:IBM公司的Datastage、Informatica公司的PowerCenter和NCR Teradata公司的ETL Automation。商用ETL工具盡管功能強(qiáng)大,但是其高昂的價(jià)格也使得一些中小企業(yè)和研究機(jī)構(gòu)對(duì)其望而卻步,一些開源的ETL工具滿足了這些用戶的需求。
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1