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

正文內(nèi)容

并行etl工具可擴展技術(shù)的研究與開發(fā)(文件)

2025-07-12 03:30 上一頁面

下一頁面
 

【正文】 圖21 HDFS架構(gòu)圖HDFS采用主從(master/slave)結(jié)構(gòu),一個集群有唯一的master和若干個slave,前者即為目錄節(jié)點(NameNode),后者即為數(shù)據(jù)節(jié)點(DataNode)。DataNode通過發(fā)送心跳信息給NameNode以使其知道它是否存活,通過發(fā)送數(shù)據(jù)目錄給NameNode以使其知道它所包含的數(shù)據(jù)塊編號。 MapReduceMapReduce是一個簡單高效的并行計算模型,可用于處理結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)[13]。map端的輸出被分發(fā)到reduce端,分發(fā)以key值為依據(jù),保證具有相同key值的鍵值對被分發(fā)給同一個reduce task。開發(fā)人員通過實現(xiàn)自己的Mapper類和Reducer類,并在驅(qū)動程序中進(jìn)行相應(yīng)的配置就可以驅(qū)動MapReduce作業(yè)執(zhí)行,從而完成自己的并行處理邏輯。通過設(shè)計特定的Mapper和Reducer并編寫相應(yīng)的驅(qū)動程序驅(qū)動MapReduce任務(wù)執(zhí)行,用戶可以方便地實現(xiàn)并行處理邏輯進(jìn)而在Hadoop集群上處理大數(shù)據(jù)。也就是說,它們封裝了一系列的MapReduce代碼并以腳本的方式展現(xiàn)給用戶,省掉了用戶自己編寫MapReduce代碼的麻煩,進(jìn)而使得用戶可以更加方便地設(shè)計ETL方案。Hive可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供豐富的類似SQL的數(shù)據(jù)處理功能。HQL屬于聲明式語言,其邏輯與工作流的相似性較小,這也使得以其為基礎(chǔ)設(shè)計組件的難度相對要大一些。Pig Latin屬于流程式語言,與工作流流式的特點很契合。為了盡量使執(zhí)行效率最優(yōu),ETL工具通常設(shè)計一系列優(yōu)化規(guī)則,以用于對用戶設(shè)計的ETL方案進(jìn)行優(yōu)化。以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等)。Fel支持解釋執(zhí)行和編譯執(zhí)行兩種方式求值,用戶只需要將表達(dá)式和表達(dá)式中的變量值傳遞給表達(dá)式引擎,就可以獲得表達(dá)式的值以及表達(dá)式結(jié)果對應(yīng)的數(shù)據(jù)類型。本論文涉及到對Hive和Pig的集成,加上工具本身的內(nèi)置數(shù)據(jù)結(jié)構(gòu),因此需要統(tǒng)一管理元數(shù)據(jù)。市場上還沒有沒有比較成熟的采用B/S架構(gòu)的并行ETL工具。. . . .第三章 并行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工具中。PowerCenter提供兩種類型的可擴展組件,可擴展組件可以作為工具的組成部分加入到工具中以供后續(xù)使用:Java自編程組件支持用戶定制的Java代碼;用戶自定義組件支持用戶組合常用組件為新組件,該組件從本質(zhì)上是對某種子流程進(jìn)行了封裝和抽象,使之從表現(xiàn)上看成為了一個單獨定制的組件,也就是說,這種定制開發(fā)機制是針對多個應(yīng)用場景中重復(fù)出現(xiàn)的子流程,其主要目的在于減少重復(fù)性工作。Talend支持寫自定義的SQL查詢和Java代碼。MapReduce作業(yè)可以只有Map階段,還可以由Map階段和Reduce階段構(gòu)成,也可以由Map階段、Combine階段和Reduce階段構(gòu)成。2) 分片信息():即輸入數(shù)據(jù)的分片信息,通過這些信息,可以了解輸入數(shù)據(jù)在集群上的分布情況,進(jìn)而選擇在合適的節(jié)點運行TaskTracker以及在需要的時候可以獲悉需要的數(shù)據(jù)應(yīng)該從哪個遠(yuǎn)端節(jié)點拷貝到本地節(jié)點上來。setJar()的基本使用方式為:JobConf conf = new JobConf()。 //設(shè)置job的Reducer(myJarPath)??梢允褂孟旅娴拿顖?zhí)行包含Hadoop作業(yè)Jar文件:hadoop jar arg0 arg1 ...這條命令實際執(zhí)行的是:java arg0 arg1 ...,嘗試從manifest中提取MainClass,如果提取不到,則把jar文件名之后的第一個參數(shù)指定的類作為MainClass。同時,多個自定義MapReduce代碼需要有個比較好的管理機制,以便用戶在需要的時候可以方便地查找和使用??梢哉f,集成已有并行ETL工具,同時提供一個友好的圖形用戶界面,是擴展ETL工具的一個主要方式。Talend集成Hive的方式類似于Kettle,也是通過提供寫HQL腳本的接口給用戶的方式來實現(xiàn)通過Hive處理大數(shù)據(jù)。圖33 Pig script executor配置界面在執(zhí)行的過程中,Pig Script Executor組件會通過Pig的日志管理模塊讀出Pig的日志并將其顯示給用戶,與Hadoop相關(guān)的日志信息也會一起顯示,如此實現(xiàn)對任務(wù)執(zhí)行狀態(tài)的監(jiān)控。從實現(xiàn)機制來開,Hive和Pig擁有相似的處理流程,均是通過ANTLR來將腳本解析為抽象語法樹(AST),然后從抽象語法樹生成邏輯執(zhí)行計劃,邏輯計劃即為各種操作構(gòu)成的有向無環(huán)圖。經(jīng)過這樣的劃分和構(gòu)建,生成了一個由MapReduce作業(yè)構(gòu)成的有向無環(huán)圖,即最后的MR執(zhí)行計劃。Hive將Transform分類,每一類包括一個Transform集。整個優(yōu)化過程就是一個邊遍歷邊選擇最優(yōu)的優(yōu)化規(guī)則并進(jìn)行應(yīng)用的過程。 Pig常用優(yōu)化規(guī)則下表列出了常用的Pig邏輯計劃優(yōu)化規(guī)則和對應(yīng)優(yōu)化規(guī)則轉(zhuǎn)換類。3. 每個規(guī)則(Rule)都有一個名為pattern的OperatorPlan對象和一個Transformer對象以及一個match方法,PlanOptimizer的optimize方法先調(diào)用Rule的match方法獲得匹配的ListOperatorPlan。例如對plan:LOAD←JOIN→LOADpattern為:JOIN→LOAD匹配的結(jié)果只能是一個:JOIN→LOAD4. 如果該List不為null,就會調(diào)用Rule的Transformer對象的check方法對List的元素逐個進(jìn)行檢查,如果確實適用規(guī)則,那么調(diào)用Transformer的transform方法來完成優(yōu)化??蓴U展組件主要通過自己處理對應(yīng)的jar包來完成;并行ETL工具的集成方面,商用ETL工具只有PowerCenter對Hive做了較好的集成,但是商用ETL工具價格昂貴,開源ETL工具在這方面的工作不夠深入,尤其是對性能更為優(yōu)秀的Hive,集成方式多為提供一個寫腳本的接口,本論文分別針對Hive和Pig選擇了一套基本操作以用來設(shè)計對應(yīng)的流程組件,這些組件可以和本論文開發(fā)的工具的內(nèi)置組件一起構(gòu)建ETL工作流并且可以在Hadoop集群上面執(zhí)行。這樣一來,整個實現(xiàn)過程被分割成相互獨立的部分,在進(jìn)行擴展時,只需要對需要的部分進(jìn)行處理。導(dǎo)入的數(shù)據(jù)和Job執(zhí)行的結(jié)果均保存在HDFS上,由該層進(jìn)行存儲的負(fù)載均衡。 4) 界面層:采用Flex語言編寫,提供圖形用戶界面,主要包括組件區(qū)和流程編輯區(qū)以及其他的功能菜單和按鈕,用于與用戶交互。用戶只需要通過在自己的PC機上只要安裝一個瀏覽器(Browser),如FireFox或者Internet Explorer,就可以方便地使用服務(wù)器端的應(yīng)用,而不必像在C/S架構(gòu)下那樣需要用戶安裝龐大的軟件客戶端并進(jìn)行復(fù)雜的系統(tǒng)配置。比較而言,第一種方式更簡便,第二種方式需要自己編譯和打包工程,但是可以實現(xiàn)相對復(fù)雜的功能。通過JavaCompiler進(jìn)行編譯時可以指定一個輸出源,編譯過程中出現(xiàn)的錯誤信息將被寫入到這個輸出源。3. 處理流程圖44 自定義MR Java組件執(zhí)行流程 自定義MR Jar組件ETL工具不提供驅(qū)動程序,而是將驅(qū)動程序和Mapper、Reducer等類一起編譯打包,后臺接收后解析jar包,查找指定的驅(qū)動程序類并執(zhí)行其main方法。 功能組件的實現(xiàn)針對Hive和Pig各自不同的語言特點,設(shè)計不同的功能組件,使得由這些功能組件構(gòu)建的ETL工作流(即一個有向無環(huán)圖)可以被解析成具有相同邏輯的Hive或Pig腳本并能提交給執(zhí)行引擎執(zhí)行。 建表: ALTER TABLE tableName RENAME TO newname。 ALTER TABLE tableName ADD PARTITION (key1=39。) location 39。, key2=39。value239。 (備注:對列的改變只會修改 Hive 的元數(shù)據(jù),而不會改變實際數(shù)據(jù)。 刪除表: INSERT 操作:216。 WHERE操作: SELECT , FROM table1 a {LEFT|RIGHT|FULL} [OUTER] JOIN table2 b on (=)。另外,隨著Hive優(yōu)化機制的日益完善,一些自動化的識別技術(shù)被應(yīng)用于對系統(tǒng)資源和輸入數(shù)據(jù)規(guī)模等信息的探查,進(jìn)而基于這些信息進(jìn)行查詢計劃的優(yōu)化。 UNION ALL操作: SELECT * FROM table1 ORDER BY id [ASC|DESC]。此時ORDER BY必須指定 LIMIT,否則執(zhí)行會報錯)216。 SELECT * FROM table1 DISTRIBUTE BY id;(備注:將具有同樣id的記錄放到同一個節(jié)點上)216。 SELECT col1, col2 FROM table1 LIMIT limit_num。 添加UDF的jar文件:ADD JAR ‘/path/’。 MapReduce腳本:(備注:因為是基于Hadoop Streaming技術(shù)實現(xiàn),而Streaming的性能相對于寫UDF要低不少,所以暫時不予考慮)基于上述分析,本文共實現(xiàn)10個Hive組件,其名稱及配置參數(shù)如下表所示:表41 Hive組件及配置參數(shù)示意表操作名參數(shù)參數(shù)意義Readlocation輸入數(shù)據(jù)路徑fieldSep字段分隔符lineSep行分隔符isInternal是否內(nèi)部表partitionKeys分區(qū)鍵tableName表名fieldsInfo字段信息,包括字段名和字段類型Setparameters參數(shù)名和對應(yīng)的參數(shù)值addPaths添加的資源對應(yīng)的文件路徑tempFunctions臨時函數(shù)名以及對應(yīng)的UDF類SelectoutputExpressions輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型useDistinct是否去重WhereconditionExpression過濾表達(dá)式GroupByoutputInfo輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型aggKeys聚集鍵值JoinoutputInfo輸出字段信息,包括表達(dá)式、表達(dá)式別名和表達(dá)式返回值類型joinType關(guān)聯(lián)類型,包括內(nèi)連接、外連接和左半連接joinExpression關(guān)聯(lián)表達(dá)式,=SortByorder_sortExpressionOrder By或者Sort By表達(dá)式信息cluster_distributeExpressionCluster By或者Distribute By表達(dá)式信息LimitlimitNum輸出條數(shù)UnionAlloutputInfo輸出字段信息,包括字段名和字段類型Storelocation輸入數(shù)據(jù)路徑fieldSep字段分隔符lineSep行分隔符isInternal是否內(nèi)部表partitionKeys分區(qū)鍵tableName表名fieldsInfo字段信息,包括字段名和字段類型overwrite是否覆蓋原來的數(shù)據(jù)2. Pig的基本操作對于Pig,因為Pig Latin本身屬于流程式語言,所以只需將其實現(xiàn)不同功能的語句對應(yīng)成不同的功能組件即可,然后按照該語句的語法結(jié)構(gòu),為功能組件配置對應(yīng)的參數(shù)輸入接口即可。data39。 schema在省略的情況下會根據(jù)默認(rèn)的行分隔符和字段分隔符以及默認(rèn)的數(shù)據(jù)類型來解析數(shù)據(jù),同時生成的元數(shù)據(jù)也沒有字段名信息。216。 GROUP操作:merge39。Hive的絕大多數(shù)基本操作都離不開SELECT操作,因此,其GROUP BY必須借助SELECT才能完成聚集匯總的操作。 alias = COGROUP alias1 { ALL | BY expression}[INNER], alias2 { ALL | B。216。collected39。 alias = FILTER alias1 BY condition_expression。但是這種靈活性在字段數(shù)較多邏輯較復(fù)雜的時候容易出錯,因此本次集成將嚴(yán)格定義元數(shù)據(jù)。216。 創(chuàng)建臨時函數(shù)名:CREATE TEMPORARY FUNCTION funcName AS ‘’。 參數(shù)設(shè)置:SET =strict。 SELECT * FROM table1 CLUSTER BY id;(備注:相當(dāng)于SORT BY和DISTRIBUTE BY一起對同樣的字段進(jìn)行操作;因為ORDER BY、SORT BY、DISTRIBUTE BY和CLUSTER BY功能上有重合,所以將它們合并到一個組件中并在組件中內(nèi)置其相互關(guān)系,保證用戶不會同時使用有沖突的操作)216。 SELECT * FROM table1 SORT BY id [ASC|DESC] (備注:SORT BY只保證每個Task的輸出有序)216。 = strict 模式下,一些危險的查詢操作不能進(jìn)行。(備注:select_Statement表示SELECT查詢語句)216。盡管目前像SELECT /*+ MAPJOIN(things) */ sale
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1