亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種實(shí)時(shí)etl系統(tǒng)及方法

文檔序號:9349962閱讀:921來源:國知局
一種實(shí)時(shí)etl系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理技術(shù),特別是涉及一種實(shí)時(shí)ETL系統(tǒng)及方法。
【背景技術(shù)】
[0002] ETL(Extract-Transformation-Loading)即數(shù)據(jù)的抽取、轉(zhuǎn)換和加載,也叫數(shù)據(jù)集 成,是構(gòu)建數(shù)據(jù)倉庫的一種重要技術(shù)。
[0003]傳統(tǒng)ETL過程將批量數(shù)據(jù)從業(yè)務(wù)數(shù)據(jù)庫等數(shù)據(jù)源中抽取出來,經(jīng)過清洗、轉(zhuǎn)換等 分析統(tǒng)計(jì)處理后,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型將結(jié)果加載到數(shù)據(jù)倉庫中。ETL過 程通常采用定時(shí)任務(wù)調(diào)度的方式執(zhí)行,當(dāng)滿足時(shí)間條件時(shí),ETL服務(wù)器調(diào)度執(zhí)行預(yù)先定義好 的ETL任務(wù),每次對數(shù)據(jù)源中的一批數(shù)據(jù)進(jìn)行操作,將結(jié)果加載到數(shù)據(jù)倉庫中,適用于對原 始數(shù)據(jù)進(jìn)行定時(shí)的批量處理情況,其業(yè)務(wù)流程如圖1所示。
[0004]但是,隨著電子商務(wù)、移動互聯(lián)網(wǎng)、電信業(yè)務(wù)的發(fā)展,對業(yè)務(wù)數(shù)據(jù)分析的時(shí)限要求 越來越高,出現(xiàn)了一批諸如用戶點(diǎn)擊流分析、基于位置的服務(wù)、實(shí)時(shí)賬單查詢等應(yīng)用,這些 應(yīng)用都要求業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)能盡快被后臺分析系統(tǒng)感知。傳統(tǒng)的ETL技術(shù)方案在面對實(shí) 時(shí)大數(shù)據(jù)分析應(yīng)用的情況下,其局限性非常明顯,主要表現(xiàn)在以下幾個方面:
[0005] (1)時(shí)間片調(diào)度方式不能滿足實(shí)時(shí)性要求:傳統(tǒng)ETL方案中數(shù)據(jù)處理任務(wù)按時(shí)間 片調(diào)度,即每隔一段時(shí)間調(diào)度一次任務(wù),對業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換、加載操作,后 臺分析系統(tǒng)能否在業(yè)務(wù)系統(tǒng)的數(shù)據(jù)發(fā)生改變的情況下立即與之同步取決于調(diào)度的時(shí)間片 大小,時(shí)間片過大則分析系統(tǒng)同步時(shí)延較大,這在時(shí)延要求較高的實(shí)時(shí)分析環(huán)境下是不允 許的;時(shí)間片過小則會導(dǎo)致計(jì)算資源浪費(fèi)。
[0006] (2)大數(shù)據(jù)環(huán)境下執(zhí)行ETL任務(wù)效率不高:傳統(tǒng)ETL方案中所有任務(wù)在特定的ETL 服務(wù)器上執(zhí)行,在大數(shù)據(jù)環(huán)境下,單臺處理機(jī)的執(zhí)行效率有限,且不易擴(kuò)展。
[0007] (3)可靠性得不到保障:ETL服務(wù)器主機(jī)或網(wǎng)絡(luò)連接中斷導(dǎo)致所有正在運(yùn)行ETL任 務(wù)失敗,嚴(yán)重時(shí)會導(dǎo)致數(shù)據(jù)丟失、混亂,這在可靠性要求較高的場景中是不允許的。

【發(fā)明內(nèi)容】

[0008] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種實(shí)時(shí)ETL系統(tǒng)及方法,具有很 高的效率,能夠解決目前ETL技術(shù)應(yīng)用在實(shí)時(shí)大數(shù)據(jù)環(huán)境下的局限性問題。
[0009]本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:一種實(shí)時(shí)ETL系統(tǒng),包括ETL客戶 端、分布式數(shù)據(jù)緩存隊(duì)列、分布式狀態(tài)管理機(jī)和ETL群集。
[0010]所述ETL客戶端,用于設(shè)計(jì)ETL流程、測試ETL流程和發(fā)布ETL流程。
[0011] 所述分布式數(shù)據(jù)緩存隊(duì)列,用于緩存輸入數(shù)據(jù)。
[0012] 所述分布式狀態(tài)管理機(jī),用于存儲系統(tǒng)狀態(tài)信息。
[0013]所述ETL群集,用于按行從數(shù)據(jù)源獲取輸入數(shù)據(jù),并將輸入數(shù)據(jù)緩存到分布式數(shù) 據(jù)緩存隊(duì)列中,然后對輸入數(shù)據(jù)進(jìn)行處理。
[0014]所述系統(tǒng)狀態(tài)信息包括輸入數(shù)據(jù)的元數(shù)據(jù)信息和當(dāng)前的分布式數(shù)據(jù)緩存隊(duì)列的 隊(duì)列信息。
[0015] 所述ETL群集包括多個ETL節(jié)點(diǎn),多個ETL節(jié)點(diǎn)組成分布式數(shù)據(jù)處理ETL網(wǎng)絡(luò),分 布式數(shù)據(jù)處理ETL網(wǎng)絡(luò)包括抽取任務(wù)分布式子網(wǎng)絡(luò)和處理任務(wù)分布式子網(wǎng)絡(luò)。
[0016] 所述抽取任務(wù)分布式子網(wǎng)絡(luò),用于按行從數(shù)據(jù)源中獲取輸入數(shù)據(jù),并將輸入數(shù)據(jù) 緩存到分布式數(shù)據(jù)緩存隊(duì)列。
[0017] 所述處理任務(wù)分布式子網(wǎng)絡(luò),用于對輸入數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換,并輸出結(jié)果數(shù)據(jù)。
[0018] -種實(shí)時(shí)ETL方法,包括以下步驟:
[0019] SI.設(shè)計(jì)和測試ETL流程,將測試合格的ETL流程以元數(shù)據(jù)的方式存儲為xml文 件;
[0020] S2.將測試合格的ETL流程構(gòu)造成能夠在ETL群集中運(yùn)行的分布式數(shù)據(jù)處理ETL 流程,并將該分布式數(shù)據(jù)處理ETL流程發(fā)送到ETL群集;
[0021] S3. ETL群集中的多個ETL節(jié)點(diǎn)組成分布式數(shù)據(jù)處理ETL網(wǎng)絡(luò),構(gòu)建每個數(shù)據(jù)源的 分布式數(shù)據(jù)緩存隊(duì)列,按行從數(shù)據(jù)源中獲取輸入數(shù)據(jù),將輸入數(shù)據(jù)發(fā)送到該數(shù)據(jù)源對應(yīng)的 分布式數(shù)據(jù)緩存隊(duì)列,將該分布式數(shù)據(jù)緩存隊(duì)列的隊(duì)列信息和該分布式數(shù)據(jù)緩存隊(duì)列對應(yīng) 數(shù)據(jù)源中輸入數(shù)據(jù)的元數(shù)據(jù)信息發(fā)送到分布式狀態(tài)管理機(jī);
[0022] S4.從分布式數(shù)據(jù)緩存隊(duì)列中抽取輸入數(shù)據(jù),并使輸入數(shù)據(jù)流經(jīng)分布式數(shù)據(jù)處理 ETL網(wǎng)絡(luò)中的處理任務(wù)分布式子網(wǎng)絡(luò)中的所有ETL節(jié)點(diǎn);
[0023] S5.每條進(jìn)入分布式數(shù)據(jù)處理ETL網(wǎng)絡(luò)中的輸入數(shù)據(jù)形成一個消息樹;
[0024] S6.判斷每條輸入數(shù)據(jù)是否在分布式數(shù)據(jù)處理ETL網(wǎng)絡(luò)中被完全處理:
[0025] 若存在輸入數(shù)據(jù)未被完全處理,則從分布式數(shù)據(jù)緩存隊(duì)列中重新抽取該輸入數(shù) 據(jù),將該輸入數(shù)據(jù)發(fā)送到分布式數(shù)據(jù)處理ETL網(wǎng)絡(luò)中,重新處理;
[0026] 若所有輸入數(shù)據(jù)均被完全處理,輸出處理完成后的結(jié)果數(shù)據(jù)。
[0027] 所述步驟S2包括以下子步驟:
[0028] S21.檢測ETL流程的DAG圖中入度為0的ETL轉(zhuǎn)換單元,并將該入度為0的ETL 轉(zhuǎn)換單元?dú)w類到輸入步驟節(jié)點(diǎn)集合;檢測ETL的DAG圖中出度為0的ETL轉(zhuǎn)換單元,并將該 出度為〇的ETL轉(zhuǎn)換單元?dú)w類到輸出步驟節(jié)點(diǎn)集合;將ETL流程的DAG圖中除入度為0、出 度為〇以外的ETL轉(zhuǎn)換單元?dú)w類到中間處理步驟節(jié)點(diǎn)集合;
[0029] S22.從步驟Sl中的xml文件中讀取每個ETL轉(zhuǎn)換單元的元數(shù)據(jù),并構(gòu)建每個ETL 轉(zhuǎn)換單元的元數(shù)據(jù)對象;
[0030] S23.根據(jù)輸入步驟節(jié)點(diǎn)集合中各ETL轉(zhuǎn)換單元的元數(shù)據(jù)對象和ETL流程的DAG圖 中各ETL轉(zhuǎn)換單元間的連接關(guān)系構(gòu)成抽取任務(wù)分布式子網(wǎng)絡(luò);
[0031] S24.根據(jù)中間處理步驟節(jié)點(diǎn)集合中各ETL轉(zhuǎn)換單元的元數(shù)據(jù)對象和ETL流程的 DAG圖中各ETL轉(zhuǎn)換單元間的連接關(guān)系構(gòu)成處理任務(wù)分布式子網(wǎng)絡(luò)。
[0032] 所述步驟S3還包括:將步驟S22中的元數(shù)據(jù)存儲在分布式數(shù)據(jù)緩存隊(duì)列中。
[0033] 所述步驟S6中判斷輸入數(shù)據(jù)是否被處理完成的方式為:為輸入數(shù)據(jù)的消息樹分 配一個變量,并將該變量均初始化為〇,待所述輸入數(shù)據(jù)經(jīng)過處理任務(wù)分布式子網(wǎng)絡(luò)處理 后,判斷所述變量是否為〇。
[0034] 若該變量為0,則該輸入數(shù)據(jù)被完全處理。
[0035] 若該變量不為〇,則該輸入數(shù)據(jù)未被完全處理。
[0036] 所述判斷輸入數(shù)據(jù)是否被處理完成的方式包括以下子步驟:
[0037] S61.定義處理任務(wù)分布式子網(wǎng)絡(luò)中任意一個ETL節(jié)點(diǎn)為k,接收到的輸入數(shù)據(jù)為 A,則ETL節(jié)點(diǎn)k為輸入數(shù)據(jù)A生成一個隨機(jī)的64位標(biāo)識符Sa,并將標(biāo)識符Sa保存到該處 理任務(wù)分布式子網(wǎng)絡(luò)的標(biāo)識序列中,為ETL節(jié)點(diǎn)k的消息樹分配一個64位的變量result, 并將該變量result均初始化為0,然后將變量result通過公式(1)與標(biāo)識符3&進(jìn)行異或 運(yùn)算:
[0038] result =Sa XOR result 公式(I)
[0039] S62.若處理任務(wù)分布式子網(wǎng)絡(luò)中ETL節(jié)點(diǎn)k之后無用于對輸入數(shù)據(jù)A進(jìn)行處理的 ETL節(jié)點(diǎn),則ETL節(jié)點(diǎn)k處理完成后,變量result再次通過公式(1)與標(biāo)識符3&進(jìn)行異或 運(yùn)算,跳轉(zhuǎn)步驟S63 ;
[0040] 若處理任務(wù)分布式子網(wǎng)絡(luò)中ETL節(jié)點(diǎn)k之后有用于對輸入數(shù)據(jù)A進(jìn)行處理的ETL 節(jié)點(diǎn),則ETL節(jié)點(diǎn)k生成輸入數(shù)據(jù)A的一個或多個中間輸出值(A 1, A2, A3,…,AJ,并將中間 輸出值M1, A2, A3,…,AJ發(fā)送給后續(xù)ETL節(jié)點(diǎn),每個An表示ETL節(jié)點(diǎn)k的一個中間輸出值, 為每個中間輸出值4生成一個隨機(jī)的64位標(biāo)識符I5,并將標(biāo)識符記錄到該處理任務(wù) 分布式子網(wǎng)絡(luò)的標(biāo)識序列中,變量result的值通過公式(2)進(jìn)行更新:
[0041 ]result-reswltXORS,XORS....XOR 公式(2)
[0042] ETL節(jié)點(diǎn)k處理完成后,變量result再次與標(biāo)識符5&通過公式(1)進(jìn)行異或運(yùn) 算;
[0043] S63.每過間隔時(shí)間t檢測一次變量result的值:
[0044] 若變量result的值為0,則輸入數(shù)據(jù)A被完全處理;
[0045] 若變量result的值不為0,則經(jīng)過超時(shí)時(shí)長p后再次檢測該result的值,若該變 量result的值仍不為0,則輸入數(shù)據(jù)A未被完全處理。
[0046] 步驟S4中每個ETL節(jié)點(diǎn)對輸入數(shù)據(jù)進(jìn)行處理,ETL節(jié)點(diǎn)對輸入數(shù)據(jù)進(jìn)行處理包括 以下步驟:
[0047] S41.處理任務(wù)分布式子網(wǎng)絡(luò)中的任意一個ETL節(jié)點(diǎn)在自己的輸入緩存區(qū)中獲取 該ETL節(jié)點(diǎn)的輸入數(shù)據(jù)和輸入數(shù)據(jù)的元數(shù)據(jù)信息;
[0048] S42.所述ETL節(jié)點(diǎn)根據(jù)自己的節(jié)點(diǎn)元數(shù)據(jù)信息中描述的操作步驟對輸入數(shù)據(jù)進(jìn) 行處理,并修改輸入數(shù)據(jù)的元數(shù)據(jù)信息,生成該ETL節(jié)點(diǎn)的輸出數(shù)據(jù)的元數(shù)據(jù)信息;
[0049] S43.所述ETL節(jié)點(diǎn)將自己的輸出數(shù)據(jù)和輸出數(shù)據(jù)的
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1