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

正文內(nèi)容

并行etl工具可擴展技術(shù)的研究與開發(fā)(編輯修改稿)

2025-07-21 03:30 本頁面
 

【文章內(nèi)容簡介】 pReduce也提供了相應(yīng)的接口給開發(fā)人員去自己實現(xiàn)讀寫、分發(fā)等功能以完成更復(fù)雜的操作。 并行ETLHadoop集群部署方便快捷,開源并行計算框架MapReduce大大簡化了并行計算程序的編寫工作。通過設(shè)計特定的Mapper和Reducer并編寫相應(yīng)的驅(qū)動程序驅(qū)動MapReduce任務(wù)執(zhí)行,用戶可以方便地實現(xiàn)并行處理邏輯進(jìn)而在Hadoop集群上處理大數(shù)據(jù)。因此,為了實現(xiàn)海量數(shù)據(jù)的ETL處理邏輯,用戶可以將整個邏輯分解成多個MapReduce任務(wù)并制定其執(zhí)行的先后關(guān)系,然后編碼實現(xiàn)并行ETL。這種方式因為對于處理邏輯和數(shù)據(jù)結(jié)構(gòu)的了解,可以編寫最有針對性的代碼進(jìn)而可以實現(xiàn)較優(yōu)的性能,但是開發(fā)工作量大,調(diào)試過程復(fù)雜,對于多樣的需求在工作量、準(zhǔn)確性和靈活性方面均無法滿足。Hive和Pig均是開源的并行ETL工具,它們提供腳本給用戶來設(shè)計ETL處理流程,這些腳本被解析成MapReduce任務(wù)進(jìn)而可以在Hadoop集群上執(zhí)行。也就是說,它們封裝了一系列的MapReduce代碼并以腳本的方式展現(xiàn)給用戶,省掉了用戶自己編寫MapReduce代碼的麻煩,進(jìn)而使得用戶可以更加方便地設(shè)計ETL方案。同樣的邏輯,用戶的代碼(腳本)編寫量大幅減小,同時,ETL方案可讀性大幅增加。性能方面,Hive接近自己編寫的代碼,而Pig主要是比較好上手,性能上略差些。 HiveHive是Facebook開發(fā)的構(gòu)建于Hadoop集群之上的數(shù)據(jù)倉庫應(yīng)用,由FaceBook貢獻(xiàn)出來,成為Apache下面的開源項目。Hive可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供豐富的類似SQL的數(shù)據(jù)處理功能。Hive使用一種叫做HQL的腳本語句,用戶編寫的HQL腳本語句被Hive解析為MapReduce作業(yè)并在Hadoop集群上運行。相對于自己編寫MapReduce代碼,其優(yōu)點是學(xué)習(xí)成本低,代碼量小,用戶可以通過少數(shù)的HQL語句快速實現(xiàn)較為復(fù)雜的MapReduce數(shù)據(jù)處理邏輯。如果將最后的結(jié)果也以Hive數(shù)據(jù)表的形式存儲在HDFS上面,那么這種ETL方式便是上文提到的ELT,即將數(shù)據(jù)抽取并載入到Hive中最后進(jìn)行數(shù)據(jù)的轉(zhuǎn)換。HQL屬于聲明式語言,其邏輯與工作流的相似性較小,這也使得以其為基礎(chǔ)設(shè)計組件的難度相對要大一些。另外,Hive需要定義與數(shù)據(jù)相關(guān)的元數(shù)據(jù)并對這些元數(shù)據(jù)進(jìn)行管理。 PigPig是Yahoo!貢獻(xiàn)的Apache開源項目,是一個基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺。它提供一種名為Pig Latin的腳本語言,與Hive的實現(xiàn)機制類似,該語言的編譯器會把用Pig Latin編寫的數(shù)據(jù)分析請求轉(zhuǎn)換為一系列經(jīng)過優(yōu)化處理的MapReduce運算。Pig Latin屬于流程式語言,與工作流流式的特點很契合。Pig不需要保存數(shù)據(jù)的元數(shù)據(jù),只需要在使用前為其指定元數(shù)據(jù)。對同樣的數(shù)據(jù),不同的應(yīng)用中可以指定不同的元數(shù)據(jù),顯得比較靈活。 優(yōu)化規(guī)則在不進(jìn)行優(yōu)化的前提下,針對相同的ETL需求,使用相同的ETL工具,因為對工具熟悉程度的差異、對需求理解程度的差異等各方面的緣故,不同的用戶會設(shè)計出不同的ETL方案,不同方案的執(zhí)行效率可能會有比較大的差異。為了盡量使執(zhí)行效率最優(yōu),ETL工具通常設(shè)計一系列優(yōu)化規(guī)則,以用于對用戶設(shè)計的ETL方案進(jìn)行優(yōu)化。特定的優(yōu)化規(guī)則往往還會以使用手冊的形式告知用戶,以便用戶設(shè)計方案時作為參考。傳統(tǒng)的ETL工具里面均封裝了一些優(yōu)化規(guī)則,因為數(shù)據(jù)結(jié)構(gòu)、設(shè)計架構(gòu)等方面的差異,不同ETL工具的優(yōu)化規(guī)則不盡相同,對于相同的優(yōu)化規(guī)則,其最后的實現(xiàn)機制也會不盡相同。在將處理邏輯遷移到并行框架里面來之后,因為處理方式的改變,優(yōu)化規(guī)則也要做出相應(yīng)的改變。以Hive為例,因為HQL是一種類SQL的腳本語言,所以針對SQL語句設(shè)計的一些優(yōu)化規(guī)則(如謂詞下推、分區(qū)信息利用等)可以移植到并行框架中來,同時需要對其實現(xiàn)機制進(jìn)行調(diào)整以適應(yīng)新的框架(MapReduce并行計算框架),另外,一些新的優(yōu)化規(guī)則被設(shè)計和實現(xiàn)(如列裁剪、MapJoin等)。 表達(dá)式引擎大部分ETL操作涉及到表達(dá)式求值,如過濾操作(對應(yīng)SQL中的WHERE)中的條件表達(dá)式,ETL工具一般集成表達(dá)式解析和求值的功能。為了簡化工作,本論文采用開源的表達(dá)式引擎。在經(jīng)過一番調(diào)研和測試,選擇了功能和性能都滿足要求的Fel。Fel支持解釋執(zhí)行和編譯執(zhí)行兩種方式求值,用戶只需要將表達(dá)式和表達(dá)式中的變量值傳遞給表達(dá)式引擎,就可以獲得表達(dá)式的值以及表達(dá)式結(jié)果對應(yīng)的數(shù)據(jù)類型。 元數(shù)據(jù)元數(shù)據(jù)為描述數(shù)據(jù)的數(shù)據(jù),主要是描述數(shù)據(jù)屬性的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件紀(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ù)對應(yīng)的元數(shù)據(jù)。Pig不需要保存元數(shù)據(jù),只在使用時臨時設(shè)置,對于不同的數(shù)據(jù)可以根據(jù)需求對應(yīng)成不同的元數(shù)據(jù)。本論文涉及到對Hive和Pig的集成,加上工具本身的內(nèi)置數(shù)據(jù)結(jié)構(gòu),因此需要統(tǒng)一管理元數(shù)據(jù)。 小結(jié)本章在介紹了ETL的相關(guān)概念,列舉了幾種傳統(tǒng)的有代表性的ETL工具,包括商用的和開源的兩個類別,通過分析這些ETL工具的共性可以看出:傳統(tǒng)ETL工具不論是商用的還是開源的,均提供了友好的圖形用戶界面,在這種圖形用戶界面中提供一整套ETL組件,各個組件對應(yīng)不同的ETL處理邏輯,通過向流程構(gòu)建界面中拖入特定的功能組件并根據(jù)處理邏輯的先后關(guān)系將它們用有向邊連接起來構(gòu)成ETL工作流,可以很方便用戶設(shè)計自己的ETL方案。另外,這些商用ETL工具均采用了C/S架構(gòu),而開源ETL工具在提供大數(shù)據(jù)支持之后也屬于一種C/S架構(gòu)。這一點相對于B/S架構(gòu)有如下缺點:用戶需要安裝特定的客戶端并進(jìn)行相應(yīng)的配置才能使用,而有些配置會相對復(fù)雜。市場上還沒有沒有比較成熟的采用B/S架構(gòu)的并行ETL工具。本章還介紹了分布式計算技術(shù),而重點是現(xiàn)今被很多公司和研究機構(gòu)應(yīng)用于實際工作中的Hadoop以及基于Hadoop的一些開源ETL工具。Hadoop在并行計算中的地位可謂非常重要,而本文也是基于Hadoop來實行對大數(shù)據(jù)進(jìn)行并行ETL處理。因為可擴展的需求,本章還對會用到的表達(dá)式引擎和元數(shù)據(jù)管理技術(shù)進(jìn)行的介紹,一個好的表達(dá)式引擎和元數(shù)據(jù)管理模塊可以在功能上和性能上提升整個ETL工具的表現(xiàn)。. . . .第三章 并行ETL工具可擴展技術(shù)的研究盡管上面介紹的ETL工具均提供了豐富的ETL組件以提供豐富的ETL處理邏輯,但是因為數(shù)據(jù)格式的多樣、ETL需求本身的復(fù)雜性等因素,導(dǎo)致在實際使用過程中,ETL工具提供的一整套ETL組件無法完成特定的ETL工作或者即使能夠?qū)崿F(xiàn)特定ETL需求但是設(shè)計出來的流程復(fù)雜并且性能低下,這時候就需要ETL工具能夠提供給用戶對其進(jìn)行擴展的功能,讓用戶自己實現(xiàn)一些處理邏輯并集成到現(xiàn)有ETL工具中。如第二章的描述,提供了UI界面的傳統(tǒng)ETL工具不論是商用的還是開源的均采用C/S的架構(gòu),這種架構(gòu)因為客戶端的因素,在可擴展性方面有特定的優(yōu)勢,本文針對B/S模式下的并行ETL工具的可擴展技術(shù),因而在設(shè)計和實現(xiàn)上要做出相應(yīng)的取舍。本章重點進(jìn)行并行ETL工具可擴展技術(shù)的研究,結(jié)合實際應(yīng)用需求,提出可行的在并行ETL工具中可以應(yīng)用的可擴展技術(shù)并總結(jié)為如下三個主要方面:可擴展組件技術(shù)、開源ETL工具集成技術(shù)和優(yōu)化規(guī)則可擴展技術(shù)。1 可擴展組件技術(shù)商用ETL工具本身提供的組件極為豐富,盡管如此,它們也還是在可定制方面提供了相應(yīng)的支持。PowerCenter提供兩種類型的可擴展組件,可擴展組件可以作為工具的組成部分加入到工具中以供后續(xù)使用:Java自編程組件支持用戶定制的Java代碼;用戶自定義組件支持用戶組合常用組件為新組件,該組件從本質(zhì)上是對某種子流程進(jìn)行了封裝和抽象,使之從表現(xiàn)上看成為了一個單獨定制的組件,也就是說,這種定制開發(fā)機制是針對多個應(yīng)用場景中重復(fù)出現(xiàn)的子流程,其主要目的在于減少重復(fù)性工作。Datastage內(nèi)嵌了一種類BASIC語言,可以寫一段處理程序來增加靈活性以滿足特殊需求,然而這也要求用戶對于這種特有的語言進(jìn)行額外的學(xué)習(xí)。開源的Kettle和Talend也都提供了一些可擴展組件以支持一些可定制的ETL邏輯的實現(xiàn)。Kettle可以寫自定義的SQL查詢、JavaScript和正則表達(dá)式。Talend支持寫自定義的SQL查詢和Java代碼。Hive和Pig自誕生之初就考慮了可擴展性,也都從兩個層面來支持定制:一個是UDF層面,即單從函數(shù)功能這一方面來對工具進(jìn)行擴展;另一個是腳本支持方面,即支持嵌入其他腳本語言定義的處理邏輯。由此可以看出,以提供可擴展組件的方式來實現(xiàn)擴展ETL工具功能的方式較為普遍。本論文研究如何為基于B/S架構(gòu)的并行ETL工具添加一個可定制的組件,該組件可以接受自定義的MapReduce代碼,因此在使用中如果出現(xiàn)新的需求,可以不用重新編譯、打包和部署工程。MapReduce作業(yè)可以只有Map階段,還可以由Map階段和Reduce階段構(gòu)成,也可以由Map階段、Combine階段和Reduce階段構(gòu)成。要完成一個MapReduce作業(yè),除了有完成相應(yīng)階段的類以外,還需要有一個驅(qū)動程序,該驅(qū)動程序?qū)υ撟鳂I(yè)進(jìn)行一些必要的參數(shù)配置,如輸入輸出路徑、Map階段或者Reduce階段要用到的參數(shù)等。驅(qū)動程序還要負(fù)責(zé)指定各階段對應(yīng)的具體的Mapper類、Combiner類和Reducer類,并完成整個作業(yè)的提交和后續(xù)處理工作。 圖31 MapReduce作業(yè)執(zhí)行流程如圖31所示,在提交MapReduce作業(yè)之前,執(zhí)行作業(yè)所需的各種資源均被復(fù)制到Hadoop分布式文件系統(tǒng)中,主要包括如下三類:1) 配置信息():與作業(yè)相關(guān)的各種配置參數(shù),包括Hadoop本身的一些參數(shù)和用戶在驅(qū)動程序中自己定義的參數(shù),這些參數(shù)往往是組件本身所需要的參數(shù),以Select組件來說,其所需參數(shù)至少要包括所選擇的字段名稱。2) 分片信息():即輸入數(shù)據(jù)的分片信息,通過這些信息,可以了解輸入數(shù)據(jù)在集群上的分布情況,進(jìn)而選擇在合適的節(jié)點運行TaskTracker以及在需要的時候可以獲悉需要的數(shù)據(jù)應(yīng)該從哪個遠(yuǎn)端節(jié)點拷貝到本地節(jié)點上來。3) 執(zhí)行文件():與作業(yè)具體執(zhí)行邏輯相關(guān)的文件,如Mapper類、??截惖紿DFS上的這些資源文件又會被分配了任務(wù)的從節(jié)點拷貝到本地,進(jìn)而構(gòu)造啟動JVM的參數(shù),然后啟動一個新的JVM來運行任務(wù)。實際使用中,可以通過兩種方式指定jar文件,一種是在驅(qū)動程序中使用JobConf類的setJar()方法來指定,另一種是通過Hadoop的jar命令來指定jar文件。setJar()的基本使用方式為:JobConf conf = new JobConf()。 //job配置信息(JobName)。 //設(shè)置job名稱()。 //設(shè)置job的Mapper ()。 //設(shè)置job的Reducer(myJarPath)。 //設(shè)置job的jar包對應(yīng)的本地路徑(conf)。 //job配置信息setJar()方法接受一個String類型的參數(shù),表示jar包對應(yīng)的本地路徑。第二種方式的實現(xiàn)機制是將包含驅(qū)動程序、MapReduce程序的Java工程打包成jar文件并放到集群中的某個節(jié)點上特定目錄下,然后執(zhí)行Hadoop的jar命令來運行作業(yè)。可以使用下面的命令執(zhí)行包含Hadoop作業(yè)Jar文件:hadoop jar arg0 arg1 ...這條命令實際執(zhí)行的是:java arg0 arg1 ...,嘗試從manifest中提取MainClass,如果提取不到,則把jar文件名之后的第一個參數(shù)指定的類作為MainClass。RunJar會通過URLClassLoader加載jar文件中的資源,并使用Java反射機制調(diào)用MainClass的main方法,調(diào)用時將hadoop jar命令中其他的參數(shù)作為main方法的實參?;谏厦娴姆治觯饕ㄟ^上述兩種方法來實現(xiàn)可擴展組件。因為B/S架構(gòu)下無法對Java代碼進(jìn)行在線編譯,因此需要將Java代碼傳到服務(wù)器端來完成編譯工作,相應(yīng)的編譯信息也需要在前臺展示給用戶。同時,多個自定義MapReduce代碼需要有個比較好的管理機制,以便用戶在需要的時候可以方便地查找和使用。 集成技術(shù)如第二章所言,傳統(tǒng)ETL工具基本都提供了友好的圖形用戶界面。為了添加處理大數(shù)據(jù)的能力,傳統(tǒng)ETL工具基本選擇了集成已有并行ETL工具的方式,這樣比較快捷,傳統(tǒng)ETL工具主要關(guān)注如何集成,而不必再進(jìn)行并行ETL模塊的開發(fā)。同時,現(xiàn)有并行ETL工具均以腳本方式運行,不方便用戶構(gòu)建和管理ETL流程,構(gòu)建ETL流程的過程也不直觀,并且,這些并行ETL工具均無法提供作業(yè)的定時調(diào)度功能,無法真正作為一個完整的ETL工具使用。可以說,集成已有并行ETL工具,同時提供一個友好的圖形用戶界面,是擴展ETL工具的一個主要方式。 Hive的集成如前所述,Informatica PowerCenter在保證原有ETL流程構(gòu)建邏輯不變的情況下提供對Hive的集成,一個流程解析模塊負(fù)責(zé)將用戶構(gòu)建的ETL流程解析成HQL腳本并提交給Hive執(zhí)行。圖32 Kettle SQL組件Kettle并沒有專門針對Hive集成做特別多的額外的工作,而是將與Hive相關(guān)的配置添加到兩個已有的組件中以完成擴展:一個組件叫做“DB連接”,添加了連接Hive的配置選項;一個組件叫做“SQL”,這個組件并沒有做改動,只是需要選擇對應(yīng)的Hive數(shù)據(jù)庫連接。其實現(xiàn)機制是通過Hive提供的JDBC數(shù)據(jù)庫接口來操作Hive數(shù)據(jù)表。Talend集成Hive的方式類似于Kettle,也是通過提供寫HQL腳本的接口給用戶的方式來實現(xiàn)通過Hive處理大數(shù)據(jù)。 Pig的集成Pig流程式的腳本語言使得用Pig來定義ETL流程極為方便,而no schema的方式也給用戶提供了很大的靈活性,正是因為擁有這些優(yōu)點,盡管Pig在性能上較同類型的Hive存在比較明顯的劣勢,仍舊有很多用戶選擇使用Pig來完成他們的ETL操作。出于性能的考慮,商用ETL工具都沒有選擇Pig作為其底
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1