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

正文內(nèi)容

并行etl工具可擴展技術(shù)的研究與開發(fā)-在線瀏覽

2024-08-04 03:30本頁面
  

【正文】 TL工具中,商用的都基于 C/S 模式,開源的本來是單機的,在向大數(shù)據(jù)處理方面做過相應(yīng)擴展后也屬于C/S模式。DataStage也提供了可定制的類Basic代碼嵌入組件[8]。Hadoop是Apache基金會下的一個開源項目,是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架,實現(xiàn)了包括HDFS分布式文件系統(tǒng)和MapReduce分布式計算框架在內(nèi)的云計算平臺的基礎(chǔ)框架[2]。Hive是基于Hadoop的大規(guī)模數(shù)據(jù)處理工具,它提供類SQL的腳本語言HQL,該工具提供了常用的關(guān)系操作、表達式操作和內(nèi)置函數(shù),并支持用戶以UDF和嵌入自定義腳本的形式對工具進行擴展[3] 。和Hive一樣,該工具提供了常用的關(guān)系操作、表達式操作和內(nèi)置函數(shù),同時,支持用戶以UDF和嵌入自定義腳本的形式對工具進行擴展,以完成特定的ETL操作[4]。PowerCenter提供了兩套執(zhí)行引擎,傳統(tǒng)的和并行的(Hive);另外添加了中間的解析模塊,將傳統(tǒng)的工作流解析為可被Hive執(zhí)行的形式,而用戶不需要關(guān)心具體使用哪個執(zhí)行引擎[7]。Kettle通過三種方式完成在大數(shù)據(jù)處理方面的擴展:一種是運行MapReduce代碼的Jar包;另一種是支持在組件中寫HQL腳本進而從Hive中查詢數(shù)據(jù)[5];還有一種是將原來本地的操作轉(zhuǎn)換為Map或者Reduce中的操作,功能有限并且還在不斷的完善中。商用ETL工具利用基于代價的優(yōu)化器優(yōu)化查詢計劃,但是在最初也都是使用基于規(guī)則的優(yōu)化器。Hive和Pig也都設(shè)計了自己的優(yōu)化規(guī)則并設(shè)計了特定的實現(xiàn)機制以保證規(guī)則的可擴展[10][11]。對Hive和Pig的集成成為一種快速擴展ETL工具并行處理能力的手段,商用ETL工具的佼佼者PowerCenter集成得最好,開源ETL工具在做這方面的嘗試但是成果有限。 研究內(nèi)容及成果傳統(tǒng)ETL工具基本都是基于C/S模式,用戶往往需要安裝龐大的軟件客戶端和做復(fù)雜配置,而B/S模式則將核心功能放在服務(wù)器端,用戶只需要通過非常常見的Web瀏覽器即可實現(xiàn)對系統(tǒng)功能的使用。MapReduce計算框架使開發(fā)人員可以方便地實現(xiàn)并行計算,本文希望提供一種自定義MapReduce代碼的嵌入方案,以便開發(fā)人員方便地擴展ETL功能以應(yīng)對比較特殊的應(yīng)用場景或者方便地利用已有成果。本文希望在可用性方面擴展現(xiàn)有ETL工具,使之能夠以圖形化的方式比較好地集成開源并行ETL腳本工具Hive和Pig。在實際的應(yīng)用中,一些新的規(guī)則會被歸納總結(jié)出來,這就需要ETL工具能夠比較方便地對優(yōu)化規(guī)則進行擴展。本論文基于MapReduce計算框架特點、Hive和Pig腳本語言語法特點及優(yōu)化規(guī)則實現(xiàn)機制,結(jié)合工作中遇到的ETL實際應(yīng)用需求,針對現(xiàn)有ETL工具可擴展性差、對開源ETL工具集成度不夠、優(yōu)化規(guī)則擴展困難這三個方面的問題進行了細致研究,提出了相應(yīng)的擴展方案,并對相應(yīng)的技術(shù)進行了編碼實現(xiàn)。 論文結(jié)構(gòu)本論文的組織結(jié)構(gòu)如下:第一章是緒論:首先說明了課題的研究背景和意義,接著對相關(guān)技術(shù)的現(xiàn)狀進行了分析,最后介紹了作者的主要工作和論文結(jié)構(gòu)。第三章是并行ETL工具可擴展技術(shù)的研究:主要包括自定義MapReduce代碼嵌入、Hive和Pig的集成以及優(yōu)化規(guī)則可擴展三個方面。第五章是實驗及結(jié)果分析:主要是將軟件系統(tǒng)部署在Hadoop集群之上,設(shè)計一些測試用例就上述三個方面的擴展技術(shù)的實現(xiàn)情況進行驗證并對結(jié)果進行分析。 參考. . . .第二章 相關(guān)概念及技術(shù)介紹 ETLETL是數(shù)據(jù)抽?。‥xtract)、轉(zhuǎn)換(Transform)、裝載(Load)的過程,是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán),用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)的清洗和轉(zhuǎn)換,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中去[12]。清洗可以在抽取的過程中進行,也可以作為轉(zhuǎn)換的組成部分,主要是將有問題的紀(jì)錄剔除出來。轉(zhuǎn)換主要是對抽取出來的數(shù)據(jù)進行一系列的轉(zhuǎn)換操作,使之成為滿足目標(biāo)數(shù)據(jù)集中模型需求的形式。裝載是將轉(zhuǎn)換的結(jié)果裝載到目標(biāo)數(shù)據(jù)集中,可以將其看成抽取的逆操作,涉及的方面也與抽取類似。從ETL的實現(xiàn)方式上來看,還可以分為ETL和ELT。而隨著數(shù)據(jù)倉庫功能的日益強大,ETL逐漸演化出一種ELT的實現(xiàn)方式,抽取的數(shù)據(jù)不再通過中間的處理而是直接載入到數(shù)據(jù)倉庫中,對數(shù)據(jù)的轉(zhuǎn)化在數(shù)據(jù)倉庫中完成,其處理結(jié)果也就直接保存在了數(shù)據(jù)倉庫中。上述框架實現(xiàn)了分布式計算和分布式存儲更高層次的抽象,使用戶不用關(guān)注復(fù)雜的內(nèi)部并行工作機制、不用具備豐富的分布式系統(tǒng)知識及開發(fā)經(jīng)驗,即可實現(xiàn)大規(guī)模分布式系統(tǒng)的部署,以及海量數(shù)據(jù)的并行處理[13]。作為一個能夠并行處理海量數(shù)據(jù)的軟件框架,Hadoop主要有以下幾個優(yōu)點:1) 高可靠性:Hadoop假設(shè)計算和存儲均可能失敗,因此維護多個數(shù)據(jù)副本,并保證在有任務(wù)失敗的情況下自動進行任務(wù)的重新分配;2) 高擴展性:Hadoop集群的各個節(jié)點相互獨立,新添加的節(jié)點可以很方便地進行存儲的負(fù)載均衡,任務(wù)也會被自動分發(fā)給新添加的節(jié)點,集群規(guī)??梢苑奖愕剡M行擴展;3) 高效性:Hadoop以并行方式工作,通過在節(jié)點之間動態(tài)地移動數(shù)據(jù)來保證各個節(jié)點的負(fù)載均衡,從而加快了整個作業(yè)的處理速度;4) 低成本:Hadoop是開源的并且基于社區(qū)服務(wù)器即可搭建高性能的Hadoop集群,因此它的軟硬件成本都比較低,任何個人和機構(gòu)都可以使用。 HDFSHDFS是一種分布式文件系統(tǒng)。目錄節(jié)點與數(shù)據(jù)節(jié)點是不同的邏輯概念,在實際的物理集群上,它們可以是同一物理節(jié)點。通過NameNode,HDFS對外提供一個統(tǒng)一的訪問接口,在用戶看來,文件是一個統(tǒng)一的整體,可以以文件為單位進行相應(yīng)的操作;而實際的文件則是被分割成若干數(shù)據(jù)塊,分布于同一集群中不同的DataNode上。它保存了文件的元數(shù)據(jù)信息,包括文件名、文件備份信息、文件與實際存儲的數(shù)據(jù)塊的對應(yīng)關(guān)系等。HDFS采用分層的文件體系,提供絕大多數(shù)其他文件系統(tǒng)也有的功能,包括創(chuàng)建、刪除、重命名目錄以及文件內(nèi)容查看等。在HDFS中,一個文件在被分成若干個數(shù)據(jù)塊并存儲到不同數(shù)據(jù)節(jié)點的同時,每個數(shù)據(jù)塊又有若干冗余,這些冗余同樣被存儲在不同的數(shù)據(jù)節(jié)點上以保證單節(jié)點磁盤故障等問題不會影響整個集群上數(shù)據(jù)的安全。通過MapReduce,開發(fā)人員可以很輕易地實現(xiàn)并行計算從而可以處理海量數(shù)據(jù)。map函數(shù)的輸出為key,value鍵值對的形式,這些輸出會被排序,具有相同key的value會被放在一起。map端的數(shù)據(jù)分發(fā)完成后,reduce端需要按key值進行一輪歸并排序,以便將來自不同map端的具有相同key的value集中到一起。2. MapReduce編程模型MapReduce將并行計算分成兩個相互關(guān)聯(lián)的階段:map階段和reduce階段,分別對應(yīng)一個Mapper類和Reducer類。MapReduce對兩個階段的讀寫操作和一些中間操作進行了封裝,輸入數(shù)據(jù)分別以key,value和key,values的形式提供給用戶使用,用戶不用關(guān)心如何讀寫、如何分發(fā)、如何歸并等細節(jié),而只用關(guān)心實際處理邏輯,也就是關(guān)注Mapper類的map方法和Reducer類的reduce方法的實現(xiàn)。 并行ETLHadoop集群部署方便快捷,開源并行計算框架MapReduce大大簡化了并行計算程序的編寫工作。因此,為了實現(xiàn)海量數(shù)據(jù)的ETL處理邏輯,用戶可以將整個邏輯分解成多個MapReduce任務(wù)并制定其執(zhí)行的先后關(guān)系,然后編碼實現(xiàn)并行ETL。Hive和Pig均是開源的并行ETL工具,它們提供腳本給用戶來設(shè)計ETL處理流程,這些腳本被解析成MapReduce任務(wù)進而可以在Hadoop集群上執(zhí)行。同樣的邏輯,用戶的代碼(腳本)編寫量大幅減小,同時,ETL方案可讀性大幅增加。 HiveHive是Facebook開發(fā)的構(gòu)建于Hadoop集群之上的數(shù)據(jù)倉庫應(yīng)用,由FaceBook貢獻出來,成為Apache下面的開源項目。Hive使用一種叫做HQL的腳本語句,用戶編寫的HQL腳本語句被Hive解析為MapReduce作業(yè)并在Hadoop集群上運行。如果將最后的結(jié)果也以Hive數(shù)據(jù)表的形式存儲在HDFS上面,那么這種ETL方式便是上文提到的ELT,即將數(shù)據(jù)抽取并載入到Hive中最后進行數(shù)據(jù)的轉(zhuǎn)換。另外,Hive需要定義與數(shù)據(jù)相關(guān)的元數(shù)據(jù)并對這些元數(shù)據(jù)進行管理。它提供一種名為Pig Latin的腳本語言,與Hive的實現(xiàn)機制類似,該語言的編譯器會把用Pig Latin編寫的數(shù)據(jù)分析請求轉(zhuǎn)換為一系列經(jīng)過優(yōu)化處理的MapReduce運算。Pig不需要保存數(shù)據(jù)的元數(shù)據(jù),只需要在使用前為其指定元數(shù)據(jù)。 優(yōu)化規(guī)則在不進行優(yōu)化的前提下,針對相同的ETL需求,使用相同的ETL工具,因為對工具熟悉程度的差異、對需求理解程度的差異等各方面的緣故,不同的用戶會設(shè)計出不同的ETL方案,不同方案的執(zhí)行效率可能會有比較大的差異。特定的優(yōu)化規(guī)則往往還會以使用手冊的形式告知用戶,以便用戶設(shè)計方案時作為參考。在將處理邏輯遷移到并行框架里面來之后,因為處理方式的改變,優(yōu)化規(guī)則也要做出相應(yīng)的改變。 表達式引擎大部分ETL操作涉及到表達式求值,如過濾操作(對應(yīng)SQL中的WHERE)中的條件表達式,ETL工具一般集成表達式解析和求值的功能。在經(jīng)過一番調(diào)研和測試,選擇了功能和性能都滿足要求的Fel。 元數(shù)據(jù)元數(shù)據(jù)為描述數(shù)據(jù)的數(shù)據(jù),主要是描述數(shù)據(jù)屬性的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件紀(jì)錄等功能。Pig不需要保存元數(shù)據(jù),只在使用時臨時設(shè)置,對于不同的數(shù)據(jù)可以根據(jù)需求對應(yī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方案。這一點相對于B/S架構(gòu)有如下缺點:用戶需要安裝特定的客戶端并進行相應(yīng)的配置才能使用,而有些配置會相對復(fù)雜。本章還介紹了分布式計算技術(shù),而重點是現(xiàn)今被很多公司和研究機構(gòu)應(yīng)用于實際工作中的Hadoop以及基于Hadoop的一些開源ETL工具。因為可擴展的需求,本章還對會用到的表達式引擎和元數(shù)據(jù)管理技術(shù)進行的介紹,一個好的表達式引擎和元數(shù)據(jù)管理模塊可以在功能上和性能上提升整個ETL工具的表現(xiàn)。如第二章的描述,提供了UI界面的傳統(tǒng)ETL工具不論是商用的還是開源的均采用C/S的架構(gòu),這種架構(gòu)因為客戶端的因素,在可擴展性方面有特定的優(yōu)勢,本文針對B/S模式下的并行ETL工具的可擴展技術(shù),因而在設(shè)計和實現(xiàn)上要做出相應(yīng)的取舍。1 可擴展組件技術(shù)商用ETL工具本身提供的組件極為豐富,盡管如此,它們也還是在可定制方面提供了相應(yīng)的支持。Datastage內(nèi)嵌了一種類BASIC語言,可以寫一段處理程序來增加靈活性以滿足特殊需求,然而這也要求用戶對于這種特有的語言進行額外的學(xué)習(xí)。Kettle可以寫自定義的SQL查詢、JavaScript和正則表達式。Hive和Pig自誕生之初就考慮了可擴展性,也都從兩個層面來支持定制:一個是UDF層面,即單從函數(shù)功能這一方面來對工具進行擴展;另一個是腳本支持方面,即支持嵌入其他腳本語言定義的處理邏輯。本論文研究如何為基于B/S架構(gòu)的并行ETL工具添加一個可定制的組件,該組件可以接受自定義的MapReduce代碼,因此在使用中如果出現(xiàn)新的需求,可以不用重新編譯、打包和部署工程。要完成一個MapReduce作業(yè),除了有完成相應(yīng)階段的類以外,還需要有一個驅(qū)動程序,該驅(qū)動程序?qū)υ撟鳂I(yè)進行一些必要的參數(shù)配置,如輸入輸出路徑、Map階段或者Reduce階段要用到的參數(shù)等。 圖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ù)至少要包括所選擇的字段名稱。3) 執(zhí)行文件():與作業(yè)具體執(zhí)行邏輯相關(guān)的文件,如Mapper類、。實際使用中,可以通過兩種方式指定jar文件,一種是在驅(qū)動程序中使用JobConf類的setJar()方法來指定,另一種是通過Hadoop的jar命令來指定jar文件。 //job配置信息(JobName)。 //設(shè)置job的Mapper ()。 //設(shè)置job的jar包對應(yīng)的本地路徑(conf)。第二種方式的實現(xiàn)機制是將包含驅(qū)動程序、MapReduce程序的Java工程打包成jar文件并放到集群中的某個節(jié)點上特定目錄下,然后執(zhí)行Hadoop的jar命令來運行作業(yè)。RunJar會通過URLClassLoader加載jar文件中的資源,并使用Java反射機制調(diào)用MainClass的main方法,調(diào)用時將hadoop jar命令中其他的參數(shù)作為main方法的實參。因為B/S架構(gòu)下無法對Java代碼進行在線編譯,因此需要將Java代碼傳到服務(wù)器端來完成編譯工作,相應(yīng)的編譯信息也需要在前臺展示給用戶。 集成技術(shù)如第二章所言,傳統(tǒng)ETL工具基本都提供了友好的圖形用戶界面。同時,現(xiàn)有并行ETL工具均以腳本方式運行,不方便用戶構(gòu)建和管理ETL流程,構(gòu)建ETL流程的過程也不直觀,并且,這些并行ETL工具均無法提供作業(yè)的定時調(diào)度功能,無法真正作為一個完整的ETL工具使用。 Hive的集成如前所述,Informatica PowerCenter在保證原有ETL流程構(gòu)建邏輯不變的情況下提供對Hive的集成,一個流程解析模塊負(fù)責(zé)將用戶構(gòu)建的ETL流程解析成HQL腳本并提交給Hive執(zhí)行。其實現(xiàn)機制是通過Hive提供的JDBC數(shù)據(jù)庫接口來操作Hive數(shù)據(jù)表。 Pig的集成Pig流程式的腳本語
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1