国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)處理方法和系統(tǒng)的制作方法

      文檔序號(hào):6537590閱讀:143來(lái)源:國(guó)知局
      一種數(shù)據(jù)處理方法和系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開(kāi)了一種數(shù)據(jù)處理方法和系統(tǒng),其中,所述方法包括:抽取指定數(shù)據(jù)源中的數(shù)據(jù);將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      【專利說(shuō)明】一種數(shù)據(jù)處理方法和系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種數(shù)據(jù)處理方法和系統(tǒng)。
      【背景技術(shù)】
      [0002]隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,一個(gè)“信息大爆炸”的時(shí)代已然來(lái)臨。企業(yè)中,大量的日常業(yè)務(wù)數(shù)據(jù)被存儲(chǔ)在相應(yīng)的業(yè)務(wù)系統(tǒng)中,隨著時(shí)間的呈現(xiàn)爆炸性的增長(zhǎng);微博、社交網(wǎng)絡(luò)及各種電子商務(wù)網(wǎng)站每時(shí)每刻都產(chǎn)生著難以估量的數(shù)據(jù);手機(jī),平板電腦及各種各樣的傳感器,其數(shù)量越來(lái)越多,產(chǎn)生的數(shù)據(jù)也越來(lái)越難以衡量。然而數(shù)據(jù)并不等于信息(或稱知識(shí))。如何在大量的數(shù)據(jù)中找到需要的信息,為企業(yè)管理人員提供決策的依據(jù),從而產(chǎn)生新業(yè)務(wù),創(chuàng)造新利潤(rùn),成為每個(gè)企業(yè)亟需解決的問(wèn)題。
      [0003]在上述背景下,數(shù)據(jù)集成與分析技術(shù)應(yīng)運(yùn)而生,然而,現(xiàn)有的數(shù)據(jù)集成與分析技術(shù)方案大都存在以下缺陷:
      [0004](一)整個(gè)數(shù)據(jù)集成與分析過(guò)程的設(shè)計(jì)、運(yùn)行和管理都集中在一個(gè)節(jié)點(diǎn)上,因此需要價(jià)格昂貴的高性能服務(wù)器才能保證處理效率。
      [0005](二)數(shù)據(jù)源支持單一,傳統(tǒng)數(shù)據(jù)集成與分析方案一般只能支持對(duì)結(jié)構(gòu)化數(shù)據(jù)源,如關(guān)系型數(shù)據(jù)庫(kù)、ERP系統(tǒng)等的支持,對(duì)非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)源,如網(wǎng)頁(yè)、XML文件、TXT文件、辦公文檔等支持不足。
      [0006](三)無(wú)法高效處理大規(guī)模數(shù)據(jù)集。
      [0007](四)可擴(kuò)展性、兼容性差?,F(xiàn)有數(shù)據(jù)集成與分析技術(shù)一般僅對(duì)特定的產(chǎn)品具有兼容性,對(duì)其他產(chǎn)品一般不兼容。

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

      [0008]為解決現(xiàn)有存在的技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法和系統(tǒng)。
      [0009]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,所述方法包括:
      [0010]抽取指定數(shù)據(jù)源中的數(shù)據(jù);
      [0011]將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;
      [0012]根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;
      [0013]從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      [0014]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括:
      [0015]抽取模塊,用于抽取指定數(shù)據(jù)源中的數(shù)據(jù);
      [0016]第一加載模塊,將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;
      [0017]轉(zhuǎn)換模塊,用于根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;
      [0018]第二加載模塊,用于從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      [0019]由上可知,本發(fā)明的技術(shù)方案包括:抽取指定數(shù)據(jù)源中的數(shù)據(jù);將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;WHDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。由此,本發(fā)明采用開(kāi)源的分布式文件系統(tǒng)HDFS作為大數(shù)據(jù)的存儲(chǔ)系統(tǒng),可以對(duì)異構(gòu)大規(guī)模數(shù)據(jù)源進(jìn)行集成與分析。本發(fā)明對(duì)數(shù)據(jù)源類(lèi)型沒(méi)有要求,無(wú)需使用價(jià)格昂貴的高性能服務(wù)器,數(shù)據(jù)處理效率高,而且兼容性好。
      【專利附圖】

      【附圖說(shuō)明】
      [0020]圖1為本發(fā)明提供的一種數(shù)據(jù)處理方法的實(shí)施例的實(shí)現(xiàn)流程圖;
      [0021]圖2為本發(fā)明提供的一種數(shù)據(jù)處理系統(tǒng)的實(shí)施例的結(jié)構(gòu)示意圖;
      [0022]圖3為本發(fā)明提供的一種數(shù)據(jù)處理系統(tǒng)的另一實(shí)施例的結(jié)構(gòu)示意圖;
      [0023]圖4為本發(fā)明中數(shù)據(jù)抽取器的實(shí)施例的工作流程圖;
      [0024]圖5為本發(fā)明中將數(shù)據(jù)載入HDFS的實(shí)施例的工作流程圖;
      [0025]圖6為本發(fā)明中業(yè)務(wù)規(guī)則輸入器的實(shí)施例的工作流程圖;
      [0026]圖7為本發(fā)明從HDFS讀取數(shù)據(jù)的實(shí)施例的實(shí)現(xiàn)流程圖。
      【具體實(shí)施方式】
      [0027]本發(fā)明提供的一種數(shù)據(jù)處理方法的實(shí)施例,如圖1所示,所述方法包括:
      [0028]步驟101、抽取指定數(shù)據(jù)源中的數(shù)據(jù);
      [0029]這里,所述抽取指定數(shù)據(jù)源中數(shù)據(jù)包括:確定所述指定數(shù)據(jù)源是否發(fā)生變化;當(dāng)所述指定數(shù)據(jù)源發(fā)生變化時(shí),抽取所述指定數(shù)據(jù)源中發(fā)生變化的數(shù)據(jù)。
      [0030]所述確定所述指定數(shù)據(jù)源是否發(fā)生變化為:根據(jù)標(biāo)記的數(shù)據(jù)抽取截止標(biāo)志判斷所述指定數(shù)據(jù)源是否發(fā)生變化;所述數(shù)據(jù)抽取截止標(biāo)志為每次數(shù)據(jù)抽取后標(biāo)記的。
      [0031]步驟102、將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;
      [0032]步驟103、根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;
      [0033]所述根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理為:使用并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapRedcue根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。
      [0034]步驟104、從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      [0035]在一實(shí)施例中,所述方法還包括:
      [0036]確定收到的業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型;
      [0037]當(dāng)所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型為Hive作業(yè)時(shí),將所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型轉(zhuǎn)換成MapReduce 作業(yè)。
      [0038]本發(fā)明提供的一種數(shù)據(jù)處理系統(tǒng)的實(shí)施例,如圖2所示,所述系統(tǒng)包括:
      [0039]抽取模塊201,用于抽取指定數(shù)據(jù)源中的數(shù)據(jù);
      [0040]這里,所述抽取模塊201,具體用于根據(jù)標(biāo)記的數(shù)據(jù)抽取截止標(biāo)志判斷所述指定數(shù)據(jù)源是否發(fā)生變化,所述數(shù)據(jù)抽取截止標(biāo)志為每次數(shù)據(jù)抽取后標(biāo)記的;當(dāng)所述指定數(shù)據(jù)源發(fā)生變化時(shí),抽取所述指定數(shù)據(jù)源中發(fā)生變化的數(shù)據(jù)。
      [0041]第一加載模塊202,將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;
      [0042]轉(zhuǎn)換模塊203,用于根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果;
      [0043]所述轉(zhuǎn)換模塊203,具體用于使用并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapRedcue根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理
      [0044]在一實(shí)施例中,所述轉(zhuǎn)換模塊203,還用于確定收到的業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型;當(dāng)所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型為Hive作業(yè)時(shí),將所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型轉(zhuǎn)換成MapReduce作業(yè)。
      [0045]第二加載模塊204,用于從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      [0046]本發(fā)明的各實(shí)施例包括:采用差異抽取傳輸?shù)牟呗?,抽取分布在不同位置不同結(jié)構(gòu)的數(shù)據(jù)源中數(shù)據(jù),并將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中;對(duì)于分布式文件系統(tǒng)HDFS中的數(shù)據(jù),使用并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapRedcue,根據(jù)用戶制定的相關(guān)的業(yè)務(wù)規(guī)則,對(duì)這些數(shù)據(jù)進(jìn)行實(shí)際的處理轉(zhuǎn)換,得到結(jié)果;將得到的結(jié)果加載到關(guān)系型數(shù)據(jù)庫(kù)(如MySql)中。
      [0047]下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的詳細(xì)闡述。
      [0048]圖3所示為本發(fā)明提供的一種數(shù)據(jù)處理系統(tǒng)的另一實(shí)施例的結(jié)構(gòu)示意圖,所述系統(tǒng)包括:
      [0049]抽取模塊:該模塊主要功能是抽取指定數(shù)據(jù)源中的數(shù)據(jù)。該模塊除了支持抽取結(jié)構(gòu)化數(shù)據(jù)(如關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù))外,還可以抽取半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)(如各種格式的辦公文檔、文本、圖片、XML、HTML、各類(lèi)報(bào)表、圖像和音頻/視頻信息等等)。該抽取器采用差異抽取策略來(lái)執(zhí)行數(shù)據(jù)抽取,對(duì)一個(gè)文件來(lái)說(shuō),使用該策略可以只抽取文件中發(fā)生變化的部分,這樣可以大大減少數(shù)據(jù)傳輸,提高系統(tǒng)性能。
      [0050]第一加載模塊,該模塊主要功能是將抽取到的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中。
      [0051]轉(zhuǎn)換模塊:該模塊包含接收子模塊和執(zhí)行子模塊。接收子模塊用于接收用戶定義的業(yè)務(wù)規(guī)則,對(duì)于熟悉SQL的用戶來(lái)說(shuō),可以方便利用HiveQL語(yǔ)言來(lái)快速定義自己的業(yè)務(wù)規(guī)則;此外,對(duì)于復(fù)雜類(lèi)型的數(shù)據(jù)和業(yè)務(wù)邏輯,用戶可以編寫(xiě)自己的MapReduce程序來(lái)處理業(yè)務(wù)邏輯。執(zhí)行子模塊是由并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapReduce來(lái)實(shí)現(xiàn)的,用戶可依據(jù)要求編寫(xiě)自己的業(yè)務(wù)處理邏輯,然后將其交予執(zhí)行子模塊來(lái)執(zhí)行具體的計(jì)算操作,得到最終結(jié)果。
      [0052]第二加載模塊:該模塊的主要功能是將經(jīng)過(guò)轉(zhuǎn)換的數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中。該模塊還可以按照用戶的要求將數(shù)據(jù)加載到指定的目的地。
      [0053]圖4為本發(fā)明中抽取模塊的工作流程圖,如圖4所示,該流程主要包括以下幾個(gè)步驟:
      [0054]步驟401:取得用戶輸入的數(shù)據(jù)源地址。對(duì)于結(jié)構(gòu)化數(shù)據(jù)源(如數(shù)據(jù)庫(kù)),用戶需要輸入數(shù)據(jù)庫(kù)的用戶名和密碼;非結(jié)構(gòu)化數(shù)據(jù)源,用戶需要輸入數(shù)據(jù)所在目錄或該數(shù)據(jù)文件本身。
      [0055]步驟402:判斷是否是結(jié)構(gòu)化數(shù)據(jù)源。根據(jù)用戶輸入的數(shù)據(jù)源地址,可判斷出數(shù)據(jù)源類(lèi)型,如果該數(shù)據(jù)源是結(jié)構(gòu)化數(shù)據(jù)源則轉(zhuǎn)到步驟403,否則轉(zhuǎn)到步驟407。
      [0056]步驟403:取得上一次數(shù)據(jù)抽取截止標(biāo)志。對(duì)于結(jié)構(gòu)化數(shù)據(jù)來(lái)說(shuō),數(shù)據(jù)抽取一般都采用增量抽取策略。增量抽取的關(guān)鍵內(nèi)容是確定發(fā)生變化的數(shù)據(jù),采用標(biāo)記上一次抽取截止位置的方法來(lái)確定發(fā)生變化的數(shù)據(jù),可標(biāo)記的內(nèi)容可以為時(shí)間戳或自增ID等。
      [0057]步驟404:判斷數(shù)據(jù)源是否發(fā)生變化。判斷方法是利用步驟403中的上一次數(shù)據(jù)抽取截止標(biāo)志。如果發(fā)生變化則跳到步驟405,如果沒(méi)有發(fā)生變化則表示沒(méi)有數(shù)據(jù)更新,則直接退出。
      [0058]步驟405:導(dǎo)出變化數(shù)據(jù)。通過(guò)截止標(biāo)志確定發(fā)生變化數(shù)據(jù)源,然后直接用數(shù)據(jù)庫(kù)相關(guān)工具,如mysql dump工具直接將變化數(shù)據(jù)批量導(dǎo)出。
      [0059]步驟406:得到本次數(shù)據(jù)抽取截止標(biāo)志。利用本次截止標(biāo)志去更新上一次截止標(biāo)志,進(jìn)入步驟408。
      [0060]步驟407:使用差異抽取策略對(duì)非結(jié)構(gòu)化數(shù)據(jù)源進(jìn)行抽取。對(duì)一個(gè)文件來(lái)說(shuō),該差異抽取策略可以只傳輸文件當(dāng)中發(fā)生變化的部分。
      [0061 ] 步驟408:將變化數(shù)據(jù)傳輸?shù)紿DFS所在從節(jié)點(diǎn)。
      [0062]圖5為本發(fā)明中將數(shù)據(jù)載入到分布式文件系統(tǒng)HDFS中的工作流程圖,如圖5所示,該流程的描述如下:
      [0063]步驟1、HDFS 客戶端調(diào)用 DistributedFileSystem.create ()方法創(chuàng)建文件。
      [0064]步驟2、創(chuàng)建DFSOutputStream,并通過(guò)遠(yuǎn)程過(guò)程調(diào)用,由名字節(jié)點(diǎn)執(zhí)行同名方法在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件。
      [0065]名字節(jié)點(diǎn)創(chuàng)建新文件時(shí)需要執(zhí)行各種檢查,如名字節(jié)點(diǎn)狀態(tài)、創(chuàng)建文件是否存在、客戶端權(quán)限等。檢查通過(guò)后,名字節(jié)點(diǎn)構(gòu)造新文件,并記錄創(chuàng)建操作到編輯日志中。
      [0066]步驟3、HDFS客戶端寫(xiě)入數(shù)據(jù)。
      [0067]步驟4、DFSOutputStream實(shí)例向名字節(jié)點(diǎn)申請(qǐng)數(shù)據(jù)塊,addBlockO成功執(zhí)行后,返回 LocatedBlock 對(duì)象。
      [0068]該對(duì)象主要包含Block_id、Version_id、LocatedBlock.1ocs等信息,通過(guò)上述信息,DFSOutputstream可以與數(shù)據(jù)節(jié)點(diǎn)聯(lián)系,建立數(shù)據(jù)流管道。
      [0069]步驟5、HDFS客戶端通過(guò)該管道向數(shù)據(jù)節(jié)點(diǎn)寫(xiě)數(shù)據(jù)。
      [0070]步驟6、數(shù)據(jù)寫(xiě)入數(shù)據(jù)節(jié)點(diǎn)后,數(shù)據(jù)節(jié)點(diǎn)發(fā)送確認(rèn)信息到FSDataOutputStream。
      [0071]步驟7、數(shù)據(jù)節(jié)點(diǎn)在數(shù)據(jù)塊寫(xiě)完后,通過(guò)blockReceivedO方法,向名字節(jié)點(diǎn)提交數(shù)據(jù)塊。如果數(shù)據(jù)隊(duì)列中還有等待輸出的數(shù)據(jù),DFSOutputStream對(duì)象會(huì)再次調(diào)用addBlockO方法,為文件添加新的Block。
      [0072]步驟8、HDFS客戶端完成所有數(shù)據(jù)寫(xiě)入后,調(diào)用close O函數(shù)關(guān)閉DataStream,
      [0073]步驟9、當(dāng)DFSOutputStream數(shù)據(jù)隊(duì)列中的文件包都收到應(yīng)答后,使用ClientProtocol.complete O方法通知名字節(jié)點(diǎn)關(guān)閉文件,從而完成一次正常的寫(xiě)文件流程。
      [0074]圖6為本發(fā)明中業(yè)務(wù)規(guī)則輸入器的工作流程圖,如圖6所示,該流程主要包括以下步驟:
      [0075]步驟601:接收用戶提交的作業(yè)。
      [0076]本發(fā)明需要用戶根據(jù)自己特定的業(yè)務(wù)需要,編寫(xiě)相應(yīng)的業(yè)務(wù)邏輯程序來(lái)處理數(shù)據(jù),然后提交程序。
      [0077]步驟602:判斷作業(yè)類(lèi)型。若該作業(yè)類(lèi)型為Hive作業(yè),則跳到步驟603,否則跳到步驟605。
      [0078]步驟603:啟動(dòng)Hive工具。由于用戶輸入的是Hive作業(yè),因此需要使用Hive來(lái)將作業(yè)翻譯成MapReduce程序,然后進(jìn)行處理。[0079]步驟604:運(yùn)行程序,執(zhí)行作業(yè)。跳到步驟607。
      [0080]步驟605:根據(jù)用戶輸入,獲取MapReduce作業(yè)的參數(shù)。
      [0081]由步驟602判斷出,該作業(yè)時(shí)一個(gè)MapRedcue作業(yè),執(zhí)行MapReduce作業(yè)時(shí)需要一些特定參數(shù),如作業(yè)名字、map任務(wù)和reduce任務(wù)的個(gè)數(shù)、輸入數(shù)據(jù)的位置、輸出數(shù)據(jù)的位
      晉_自禁
      -M.1 B 寸 ο
      [0082]步驟606:使用MapRedcue計(jì)算框架執(zhí)行作業(yè)。獲取到作業(yè)執(zhí)行的相關(guān)參數(shù)信息后,并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapReduce執(zhí)行具體的計(jì)算操作。跳到步驟7。
      [0083]步驟607:結(jié)束。
      [0084]下面對(duì)本發(fā)明中執(zhí)行子模塊的工作原理進(jìn)行介紹。
      [0085]作業(yè)被提交后,首先作業(yè)客戶端JobClient會(huì)將作業(yè)的相關(guān)信息,如job.jar (作業(yè)jar包)、job.xml (作業(yè)配置文件)以及Split的元信息(記錄了每個(gè)InputSplit的位置信息)等上傳到HDFS中。然后,JobClient啟動(dòng)遠(yuǎn)程過(guò)程調(diào)用(RPC)方法通知作業(yè)管理單元JobTracker。JobTracker接收到JobClient提交的作業(yè)請(qǐng)求后,調(diào)用任務(wù)調(diào)度單元TaskScheduler對(duì)所提交的作業(yè)進(jìn)行初始化,主要執(zhí)行以下操作:為每個(gè)作業(yè)創(chuàng)建作業(yè)進(jìn)程JobInProgress對(duì)象,用于跟蹤作業(yè)的實(shí)時(shí)運(yùn)行狀態(tài);JobInProgress為每個(gè)任務(wù)Task創(chuàng)建一個(gè)任務(wù)進(jìn)程TaskInProgress以跟蹤每個(gè)任務(wù)的實(shí)時(shí)運(yùn)行狀態(tài);每個(gè)TaskInProgress 一般需要管理多個(gè)任務(wù)執(zhí)行單元TaskAttempt。
      [0086]在整個(gè)系統(tǒng)中JobTracker負(fù)責(zé)系統(tǒng)的資源監(jiān)控和任務(wù)調(diào)度。其過(guò)程為:TaskTracker周期性地通過(guò)心跳機(jī)制(Heartbeat)向JobTracker報(bào)告所載節(jié)點(diǎn)的資源利用狀況,若有資源空閑,則JobTracker調(diào)用TaskScheduler按照既定的算法策略選擇合適的任務(wù)占有該空閑資源。TaskScheduler是一個(gè)獨(dú)立的、可插拔的功能模塊,具有雙層架構(gòu),即從隊(duì)列中選擇作業(yè)和從作業(yè)中選擇任務(wù),任務(wù)的選擇主要依據(jù)數(shù)據(jù)的本地行。此夕卜,JobTracker追蹤整個(gè)作業(yè)的運(yùn)行狀況,并為作業(yè)的成功運(yùn)行提過(guò)了強(qiáng)大的容錯(cuò)機(jī)制:TaskTracker或Task失敗時(shí),轉(zhuǎn)移計(jì)算任務(wù);當(dāng)某個(gè)任務(wù)的執(zhí)行進(jìn)度落后于所在作業(yè)的其他任務(wù)時(shí),啟動(dòng)TaskAttempt機(jī)制,最后選擇使用最先出現(xiàn)的結(jié)果,并殺掉沒(méi)有還未運(yùn)行完成的任務(wù)。
      [0087]TaskTracker通過(guò)進(jìn)行JVM啟動(dòng)和資源的隔離來(lái)準(zhǔn)備Task運(yùn)行環(huán)境。首先,為避免相互間的影響,TaskTracker會(huì)為每個(gè)任務(wù)啟動(dòng)一個(gè)獨(dú)立的Java虛擬機(jī);然后,為實(shí)現(xiàn)資源隔離,防止任務(wù)間資源的濫用,TaskTracker使用操作系統(tǒng)進(jìn)程是運(yùn)行Task,每個(gè)Task即是一個(gè)進(jìn)程。
      [0088]運(yùn)行環(huán)境準(zhǔn)備完畢后,TaskTracker開(kāi)始啟動(dòng)Task。每個(gè)Task在運(yùn)行的過(guò)程中會(huì)通過(guò)遠(yuǎn)程過(guò)程調(diào)用(RPC)方法將其最新的運(yùn)行狀態(tài)匯報(bào)給TaskTracker,后者通過(guò)心跳機(jī)制(hearbeat)匯報(bào)給 JobTracker。
      [0089]待所有任務(wù)執(zhí)行完成以后,整個(gè)作業(yè)即執(zhí)行成功。
      [0090]圖7為本發(fā)明中數(shù)據(jù)讀取的工作流程圖,如圖所示,該流程可以分為以下幾步:
      [0091]步驟1:HDFS客戶端調(diào)用FileSystem.0pen O方法來(lái)打開(kāi)需要讀取的文件。
      [0092]其實(shí)對(duì)于HDFS來(lái)說(shuō),該FileSystem對(duì)象就是HDFS文件系統(tǒng)的一個(gè)實(shí)例。如圖所不,DistributedFileSystem即為步驟I中FileSystem的一個(gè)具體實(shí)現(xiàn)。
      [0093]步驟2:DistributedFileSystem通過(guò)遠(yuǎn)程過(guò)程調(diào)用方法 getBlockLocations O 來(lái)調(diào)用名字節(jié)點(diǎn),從而得到希望讀取的文件的起始?jí)K位置。然后DistributedFileSystem類(lèi)返回一個(gè)FSDataInputStream對(duì)象給HDFS客戶端并讀取數(shù)據(jù)。
      [0094]FSDataInputStream類(lèi)中封裝了管理數(shù)據(jù)節(jié)點(diǎn)和名字節(jié)點(diǎn)I/O的DFSInputStream輸入流。
      [0095]步驟3:HDFS客戶端對(duì)步驟2中返回的輸入流FSDataInputStream調(diào)用read O方法。
      [0096]該方法主要功能是,調(diào)用DFSInputStream去連接距離最近的數(shù)據(jù)節(jié)點(diǎn),因?yàn)樵揇FSInputStream存儲(chǔ)著文件起始?jí)K的數(shù)據(jù)節(jié)點(diǎn)的地址。
      [0097]步驟4:為了將數(shù)據(jù)從數(shù)據(jù)節(jié)點(diǎn)傳輸?shù)紿DFS客戶端,需要反復(fù)不停地調(diào)用read()函數(shù)。當(dāng)read()函數(shù)讀取到數(shù)據(jù)塊的末端時(shí),DFSInputStream會(huì)關(guān)閉與該數(shù)據(jù)節(jié)點(diǎn)的連接。然后,再去尋找下一個(gè)數(shù)據(jù)塊所在的最近的數(shù)據(jù)節(jié)點(diǎn)。
      [0098]步驟5:當(dāng)HDFS客戶端完成讀取時(shí),對(duì)FSDataInputStream調(diào)用close O方法來(lái)關(guān)閉整個(gè)讀取流程。
      [0099]上述步驟為將結(jié)果從HDFS中導(dǎo)出的具體實(shí)現(xiàn)流程,最后還需要用戶編寫(xiě)程序,或利用Sqoop工具,將數(shù)據(jù)加載到關(guān)系型數(shù)據(jù)庫(kù)如MySql中。
      [0100]本發(fā)明將分布式在不同物理位置、不同格式的數(shù)據(jù),采用差異抽取傳輸策略,將其抽取到分布式文件系統(tǒng)HDFS中;使用處理大規(guī)模數(shù)據(jù)集的并行計(jì)算框架MapRedce,按照用戶自定義的業(yè)務(wù)規(guī)則,對(duì)分布式文件系統(tǒng)HDFS中的數(shù)據(jù),進(jìn)行清洗轉(zhuǎn)換,得到最終結(jié)果?’最后,將最終結(jié)果加載到關(guān)系型數(shù)據(jù)庫(kù)中,以便用戶訪問(wèn)使用。
      [0101]本發(fā)明所設(shè)計(jì)的分布式數(shù)據(jù)集成與分析方案,采用了開(kāi)源的分布式文件系統(tǒng)HDFS作為大數(shù)據(jù)的存儲(chǔ)系統(tǒng),并使用大數(shù)據(jù)并行處理框架MapReduce進(jìn)行數(shù)據(jù)轉(zhuǎn)換,能夠?qū)崿F(xiàn)對(duì)異構(gòu)大規(guī)模數(shù)據(jù)源的集成與分析,降低企業(yè)投入成本,提高數(shù)據(jù)處理效率。
      [0102]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
      [0103]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
      [0104]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
      [0105]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
      [0106]以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
      【權(quán)利要求】
      1.一種數(shù)據(jù)處理方法,其特征在于,所述方法包括: 抽取指定數(shù)據(jù)源中的數(shù)據(jù); 將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中; 根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果; 從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述抽取指定數(shù)據(jù)源中數(shù)據(jù)包括: 確定所述指定數(shù)據(jù)源是否發(fā)生變化; 當(dāng)所述指定數(shù)據(jù)源發(fā)生變化時(shí),抽取所述指定數(shù)據(jù)源中發(fā)生變化的數(shù)據(jù)。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述確定所述指定數(shù)據(jù)源是否發(fā)生變化為: 根據(jù)標(biāo)記的數(shù)據(jù)抽取截止標(biāo)志判斷所述指定數(shù)據(jù)源是否發(fā)生變化; 所述數(shù)據(jù)抽取截止標(biāo)志為每次數(shù)據(jù)抽取后標(biāo)記的。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理為: 使用并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapRedcue根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 確定收到的業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型; 當(dāng)所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型為Hive作業(yè)時(shí),將所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型轉(zhuǎn)換成MapReduce 作業(yè)。
      6.一種數(shù)據(jù)處理系統(tǒng),其特征在于,所述系統(tǒng)包括: 抽取模塊,用于抽取指定數(shù)據(jù)源中的數(shù)據(jù); 第一加載模塊,用于將抽取的數(shù)據(jù)加載到分布式文件系統(tǒng)HDFS中; 轉(zhuǎn)換模塊,用于根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理,得到處理結(jié)果; 第二加載模塊,用于從HDFS中導(dǎo)出所述處理結(jié)果并加載到關(guān)系型數(shù)據(jù)庫(kù)中。
      7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述抽取模塊,具體用于確定所述指定數(shù)據(jù)源是否發(fā)生變化; 當(dāng)所述指定數(shù)據(jù)源發(fā)生變化時(shí),抽取所述指定數(shù)據(jù)源中發(fā)生變化的數(shù)據(jù)。
      8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述抽取模塊,具體用于根據(jù)標(biāo)記的數(shù)據(jù)抽取截止標(biāo)志判斷所述指定數(shù)據(jù)源是否發(fā)生變化; 所述數(shù)據(jù)抽取截止標(biāo)志為每次數(shù)據(jù)抽取后標(biāo)記的。
      9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述轉(zhuǎn)換模塊,具體用于使用并行大規(guī)模數(shù)據(jù)集計(jì)算框架MapRedcue根據(jù)接收的業(yè)務(wù)規(guī)則對(duì)HDFS中的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。
      10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述轉(zhuǎn)換模塊,還用于確定收到的業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型; 當(dāng)所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型為Hive作業(yè)時(shí),將所述業(yè)務(wù)規(guī)則的作業(yè)類(lèi)型轉(zhuǎn)換成MapReduce 作業(yè)。
      【文檔編號(hào)】G06F17/30GK103810272SQ201410048039
      【公開(kāi)日】2014年5月21日 申請(qǐng)日期:2014年2月11日 優(yōu)先權(quán)日:2014年2月11日
      【發(fā)明者】程渤, 陳俊亮, 劉傳昌 申請(qǐng)人:北京郵電大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1