一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法
【專利摘要】本發(fā)明公開了一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其實(shí)現(xiàn)過(guò)程為,在關(guān)系型數(shù)據(jù)庫(kù)中抽取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;開始執(zhí)行數(shù)據(jù)遷移,該數(shù)據(jù)遷移過(guò)程采用MapReduce架構(gòu),具體遷移過(guò)程為:首先在數(shù)據(jù)源導(dǎo)入數(shù)據(jù),生成對(duì)應(yīng)的運(yùn)行類打包成jar包,傳遞給Hadoop平臺(tái)存儲(chǔ)和處理。該基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法與現(xiàn)有技術(shù)相比,解決了每個(gè)節(jié)點(diǎn)的任務(wù)處理能力、CPU運(yùn)算速度和map分配數(shù)量的假設(shè)問(wèn)題,通過(guò)任務(wù)的調(diào)度的優(yōu)化盡量避免出現(xiàn)部分節(jié)點(diǎn)負(fù)載過(guò)重或者過(guò)輕的現(xiàn)象,可以提高數(shù)據(jù)遷移效率,實(shí)用性強(qiáng)。
【專利說(shuō)明】
一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及數(shù)據(jù)迀移技術(shù)領(lǐng)域,具體地說(shuō)是一種實(shí)用性強(qiáng)的基于任務(wù)負(fù)載的數(shù)據(jù) 迀移方法。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的不斷的發(fā)展,人類社會(huì)每年所產(chǎn)生的數(shù)據(jù)量正在以驚人的速度飛 速增長(zhǎng),我們的社會(huì)已經(jīng)進(jìn)入到一個(gè)全新的信息化時(shí)代。但隨之而來(lái)的數(shù)據(jù)存儲(chǔ)的問(wèn)題,逐 漸成為一個(gè)熱點(diǎn)話題。近些年,隨著云計(jì)算與大數(shù)據(jù)及其相關(guān)技術(shù)的的不斷發(fā)展,信息化產(chǎn) 業(yè)的格局正在逐漸被改變。在企業(yè)的實(shí)際應(yīng)用中,數(shù)據(jù)的存儲(chǔ)必須要求全天候的高可用性 指標(biāo),但隨著網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的規(guī)模越來(lái)越大,系統(tǒng)的故障次數(shù)也急劇增加。另外,雖然存儲(chǔ) 系統(tǒng)的規(guī)模越來(lái)越大,存儲(chǔ)設(shè)備越來(lái)越多,但存儲(chǔ)系統(tǒng)中的資源利用率卻仍然保持在一個(gè) 很低的水平。另一方面,在數(shù)據(jù)存儲(chǔ)量增長(zhǎng)的情況下,系統(tǒng)需要滿足極高的可擴(kuò)展性;大規(guī) 模的存儲(chǔ)系統(tǒng)往往是由不同的廠商提供的不同類型的具有極高的異構(gòu)性的存儲(chǔ)設(shè)備組成 的,這樣就造成了管理存儲(chǔ)系統(tǒng)具有較高的復(fù)雜性,同時(shí)導(dǎo)致系統(tǒng)在未來(lái)使用中的擴(kuò)展將 成為一個(gè)很大的難題。在當(dāng)下技術(shù)條件下,選擇使用云存儲(chǔ)將能夠有效解決上述問(wèn)題。
[0003] 通常情況下,企業(yè)的信息數(shù)據(jù)系統(tǒng)會(huì)包含多個(gè)不同的業(yè)務(wù)系統(tǒng),而且不同的業(yè)務(wù) 系統(tǒng)都包含有各自的一套在線業(yè)務(wù)系統(tǒng)、歸檔系統(tǒng)和備份系統(tǒng)。企業(yè)出于對(duì)成本的考慮,存 儲(chǔ)系統(tǒng)會(huì)把在線業(yè)務(wù)平臺(tái)的數(shù)據(jù)迀移到后端的云存儲(chǔ)平臺(tái)。但是數(shù)據(jù)迀移的過(guò)程極為復(fù) 雜,需要解決的問(wèn)題眾多。在數(shù)據(jù)迀移的諸多問(wèn)題中,我們主要研究了其中一個(gè)問(wèn)題,即關(guān) 系型數(shù)據(jù)將數(shù)據(jù)迀移至大數(shù)據(jù)平臺(tái)過(guò)程中,數(shù)據(jù)的迀移效率有待提高。我們通過(guò)對(duì)任務(wù)調(diào) 度機(jī)制的優(yōu)化以達(dá)到提高數(shù)據(jù)迀移效率的目的。
[0004] 一般情況下,使用者若不對(duì)Hadoop進(jìn)行特殊設(shè)置,則在處理任務(wù)調(diào)度的過(guò)程中就 會(huì)采用FIFO調(diào)度,其運(yùn)行原理如圖1所示。Hadoop在利用FIFO調(diào)度器進(jìn)行作業(yè)是有如下假 設(shè):
[0005] 分布式集群中,各個(gè)節(jié)點(diǎn)進(jìn)行任務(wù)處理的能力是相同的。
[0006] 每個(gè)節(jié)點(diǎn)在對(duì)任務(wù)進(jìn)行處理的過(guò)程中、其計(jì)算速度和運(yùn)算能力保持不變,且不受 其他因素的影響。
[0007] 當(dāng)系統(tǒng)對(duì)相同的任務(wù)進(jìn)行處理時(shí),Map Reduce中的map和reduce所接受的任務(wù)分 配和任務(wù)計(jì)算的數(shù)量都是相等的。
[0008] 以上條件都會(huì)在理想條件下的假設(shè),在現(xiàn)實(shí)的操作使用過(guò)程中,基本上很難滿足 以上三條假設(shè)。首先,由于不同節(jié)點(diǎn)的服務(wù)器的異構(gòu)性,很難實(shí)現(xiàn)其處理任務(wù)的能力完全相 同,例如在處理計(jì)算密集型任務(wù)時(shí)時(shí),CPU的運(yùn)行會(huì)變慢,當(dāng)對(duì)數(shù)據(jù)密集型的任務(wù)進(jìn)行處理 時(shí),磁盤的運(yùn)轉(zhuǎn)速率也會(huì)下降。因此,在實(shí)際的使用中,各種因素的不穩(wěn)定性對(duì)整體數(shù)據(jù)迀 移的執(zhí)行過(guò)程,增加了諸多的不穩(wěn)定因素。
[0009] 基于此,現(xiàn)提供一種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法,是通過(guò)對(duì)任務(wù)調(diào)度機(jī)制進(jìn)行 優(yōu)化從而提高數(shù)據(jù)迀移效率的一種方法。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種實(shí)用性強(qiáng)、基于任務(wù)負(fù)載的數(shù) 據(jù)迀移方法。
[0011] -種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法,其實(shí)現(xiàn)過(guò)程為:
[0012] 在關(guān)系型數(shù)據(jù)庫(kù)中抽取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;開始執(zhí)行數(shù)據(jù)迀移,該數(shù)據(jù) 迀移過(guò)程采用MapReduce架構(gòu),具體迀移過(guò)程為:首先在數(shù)據(jù)源導(dǎo)入數(shù)據(jù),生成對(duì)應(yīng)的運(yùn)行 類打包成jar包,傳遞給Hadoop平臺(tái)存儲(chǔ)和處理。
[0013] 在執(zhí)行數(shù)據(jù)迀移操作前,首先要完成相關(guān)基本信息的配置,該相關(guān)基本信息包括, 數(shù)據(jù)迀出的位置信息、數(shù)據(jù)迀移目的地的地址信息、數(shù)據(jù)迀移過(guò)程中使用map的數(shù)量以及現(xiàn) 有分布式集群各個(gè)節(jié)點(diǎn)的服務(wù)器基本的配置情況,完成基本的配置后,開始執(zhí)行數(shù)據(jù)迀移 操作。
[0014] 所述數(shù)據(jù)迀移的具體過(guò)程為:
[0015] 步驟一、首先設(shè)置參數(shù),解析任務(wù)執(zhí)行的預(yù)設(shè)信息并設(shè)置數(shù)據(jù)源和數(shù)據(jù)輸出路徑;
[0016] 步驟二、在預(yù)設(shè)的數(shù)據(jù)源中獲取數(shù)據(jù);
[0017] 步驟三、轉(zhuǎn)換數(shù)據(jù)格式,即將數(shù)據(jù)由原來(lái)的格式轉(zhuǎn)換為大數(shù)據(jù)平臺(tái)可存儲(chǔ)的數(shù)據(jù) 格式;
[0018] 步驟四、對(duì)數(shù)據(jù)進(jìn)行劃分分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn);
[0019]步驟五、最后將數(shù)據(jù)寫入到對(duì)應(yīng)的輸出路徑中。
[0020]所述步驟一的具體實(shí)現(xiàn)過(guò)程為:
[0021 ]首先解析關(guān)于任務(wù)執(zhí)行的系統(tǒng)預(yù)設(shè)信息,即設(shè)置待迀移數(shù)據(jù)的基本信息以及數(shù)據(jù) 迀移中的數(shù)據(jù)信息,該系統(tǒng)預(yù)設(shè)信息包括數(shù)據(jù)是否備份、數(shù)據(jù)的獲取路徑、數(shù)據(jù)的輸出路 徑、數(shù)據(jù)的原始格式、數(shù)據(jù)的輸出格式、對(duì)數(shù)據(jù)進(jìn)行劃分和計(jì)算的Mapper類和Reducer類; [0022]然后設(shè)置數(shù)據(jù)源,即解析等待迀移的數(shù)據(jù)目前的存儲(chǔ)的置,為數(shù)據(jù)迀移操作做準(zhǔn) 備;
[0023]最后設(shè)置數(shù)據(jù)的輸出路徑,即將數(shù)據(jù)格式轉(zhuǎn)換后的輸出數(shù)據(jù)保存的位置。
[0024]數(shù)據(jù)的輸出路徑采用HBase表。
[0025]所述步驟二在預(yù)設(shè)的數(shù)據(jù)源中獲取數(shù)據(jù)的具體過(guò)程為:通過(guò)Java編程的方式,利 用JDBC獲取預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)源,獲取后輸出的結(jié)果集是名為ResultSet的 Java對(duì)象。
[0026]所述步驟三中的轉(zhuǎn)換數(shù)據(jù)格式是指將ResultSet對(duì)象經(jīng)數(shù)據(jù)格式轉(zhuǎn)換成為鍵值對(duì) Key/Value 的形式。
[0027] 所述步驟四數(shù)據(jù)劃分及下發(fā)相關(guān)數(shù)據(jù)的過(guò)程為:?jiǎn)?dòng)MapReduce,通過(guò)MapReduce 進(jìn)行數(shù)據(jù)的劃分和計(jì)算,然后通過(guò)Map對(duì)任務(wù)進(jìn)行分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn),最后通 過(guò)Reduce進(jìn)行計(jì)算,將最后的結(jié)果集寫入到目標(biāo)地址,當(dāng)所有數(shù)據(jù)完整的寫入到大數(shù)據(jù)平 臺(tái)后,實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)迀移至大數(shù)據(jù)平臺(tái)的目的。
[0028]所述步驟四的具體實(shí)現(xiàn)過(guò)程為:
[0029] 在數(shù)據(jù)劃分及下發(fā)相關(guān)數(shù)據(jù)的過(guò)程中,通過(guò)MapReduce的map將任務(wù)分配到各個(gè)節(jié) 點(diǎn)中進(jìn)行處理,即將數(shù)據(jù)劃分后分別分發(fā)至每個(gè)節(jié)點(diǎn)的TaskTracker中,然后把數(shù)據(jù)寫入到 用戶預(yù)設(shè)的HBase表中進(jìn)行存儲(chǔ)。
[0030] 通過(guò)Map對(duì)任務(wù)進(jìn)行分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn)的具體過(guò)程為:當(dāng)檢測(cè)到 TaskTracker有空閑的Slot時(shí),系統(tǒng)對(duì)其I/O資源占用情況進(jìn)行檢測(cè),若該節(jié)點(diǎn)的I/O資源占 用為所有節(jié)點(diǎn)中最少,且該節(jié)點(diǎn)任務(wù)負(fù)載熵值滿足預(yù)設(shè)的閾值時(shí),JobTracker將自動(dòng)將任 務(wù)分配給該TaskTracker;反之,若發(fā)現(xiàn)此時(shí)該節(jié)點(diǎn)的I/O資源被大量占用或者任務(wù)負(fù)載熵 值較大,等待處理的任務(wù)較多,則不將任務(wù)分配給該節(jié)點(diǎn)。
[0031] 上述任務(wù)分配通過(guò)任務(wù)調(diào)度器完成,該任務(wù)調(diào)度器的具體操作過(guò)程為:
[0032]首先將系統(tǒng)文件mapred-s it e. xml中的相應(yīng)字段設(shè)置為任務(wù)調(diào)度器類 org · apache · hadoop · mapred · TaskScheduler,使得其可在后面的任務(wù)調(diào)度中被使用;
[0033] 然后實(shí)現(xiàn)基于任務(wù)負(fù)載的任務(wù)調(diào)度器的過(guò)程,對(duì)JobTracker中的AssignTask方法 進(jìn)行設(shè)計(jì)編寫,這個(gè)方法的TaskTracker Status字段中包含有TaskTracker在心跳信息 Heartbeat中提交的相關(guān)信息,該相關(guān)信息包括MapSlot數(shù)量的最大值、ReduceSlot數(shù)量的 最大值、虛擬內(nèi)存最大值、物理內(nèi)存、剩余可用磁盤空間的大小、每個(gè)任務(wù)的執(zhí)行狀態(tài)、磁盤 存取狀態(tài)、剩余Slot數(shù)量、磁盤存取速率、CPU的實(shí)時(shí)狀態(tài);
[0034] 在對(duì)任務(wù)進(jìn)行分配過(guò)程中,JobTracker利用TaskTracker通過(guò)心跳信息Heartbeat 發(fā)送得到的信息來(lái)判斷將任務(wù)分配給哪些節(jié)點(diǎn),其中主要參數(shù)有Slot使用情況、磁盤存取 狀態(tài)、任務(wù)阻塞、等待狀態(tài)。
[0035] 基于上述任務(wù)調(diào)度器,具體的任務(wù)調(diào)度情況為:
[0036] 如果節(jié)點(diǎn)的TaskTracker中所有的slot都已經(jīng)被占用,則任務(wù)調(diào)度器則拒絕將新 的任務(wù)分配至該TaskTracker;
[0037]若TaskTracker上尚且存在空閑的Slot,貝lj需要對(duì)磁盤占用情況,任務(wù)等待情況等 進(jìn)行監(jiān)測(cè)判斷:
[0038] a).若當(dāng)前節(jié)點(diǎn)負(fù)載任務(wù)情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pl值高于 平均值則不將新任務(wù)分配給該節(jié)點(diǎn);
[0039] b). 1若當(dāng)前節(jié)點(diǎn)負(fù)載情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pl值低于平均 值《,則該節(jié)點(diǎn)可以接受新任務(wù)。
[0040] 所述步驟五即為將數(shù)據(jù)寫入HBase:每個(gè)節(jié)點(diǎn)的TaskTracker對(duì)任務(wù)進(jìn)行計(jì)算處理 輸出數(shù)據(jù),將讀取到的鍵值對(duì)數(shù)據(jù)寫入HBase表;數(shù)據(jù)迀移過(guò)程隨著系統(tǒng)中Map任務(wù)全部結(jié) 束而結(jié)束,反之,若數(shù)據(jù)迀移尚未結(jié)束,則TaskTracker將繼續(xù)將任務(wù)分配給每個(gè) TaskTracker進(jìn)行處理。
[0041] 本發(fā)明的一種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法,具有以下優(yōu)點(diǎn):
[0042] 本發(fā)明提出的一種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法,利用群智能算法中的人工蜂群 算法對(duì)任務(wù)調(diào)度機(jī)制進(jìn)行優(yōu)化,Hadoop默認(rèn)FIFO調(diào)度的一些假設(shè),都是在理想條件下提出 的,但是在現(xiàn)實(shí)的操作使用過(guò)程中,基本上很難滿足這些假設(shè)。因而在實(shí)際的使用中,各種 因素的不穩(wěn)定性對(duì)整體數(shù)據(jù)迀移的執(zhí)行過(guò)程,增加了諸多的不穩(wěn)定因素,我們利用優(yōu)化的 的任務(wù)調(diào)度機(jī)制一定程度上解決了其中每個(gè)節(jié)點(diǎn)的任務(wù)處理能力、CPU運(yùn)算速度和map分配 數(shù)量的假設(shè);利用任務(wù)調(diào)度機(jī)制的優(yōu)化來(lái)提高數(shù)據(jù)迀移的效率,由于原有的任務(wù)調(diào)度機(jī)制 可能導(dǎo)致分布式集群中部分節(jié)點(diǎn)任務(wù)負(fù)載較重或者較輕,這種情況的出現(xiàn)將會(huì)影響數(shù)據(jù)的 讀寫速率,從而一定程度上影響到了數(shù)據(jù)迀移的效率,我們通過(guò)任務(wù)的調(diào)度的優(yōu)化盡量避 免出現(xiàn)部分節(jié)點(diǎn)負(fù)載過(guò)重或者過(guò)輕的現(xiàn)象,可以提高數(shù)據(jù)迀移效率,實(shí)用性強(qiáng),易于推廣。
【附圖說(shuō)明】
[0043]附圖1為FIFO調(diào)度器原理示意圖。
[0044]附圖2為展示了基于ABC算法優(yōu)化的Hadoop任務(wù)調(diào)度過(guò)程。
[0045] 附圖3為數(shù)據(jù)迀移過(guò)程流程圖。
[0046] 附圖4為基于任務(wù)負(fù)載的數(shù)據(jù)迀移流程。
[0047] 附圖5為數(shù)據(jù)量與迀移時(shí)間示意圖。
[0048] 附圖6為對(duì)應(yīng)的map數(shù)量與效率。
【具體實(shí)施方式】
[0049]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0050] 傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)如oraclejysql在過(guò)去很長(zhǎng)一段時(shí)間內(nèi)占據(jù)了數(shù)據(jù)庫(kù)領(lǐng)域 的統(tǒng)治地位。但是對(duì)于關(guān)系型數(shù)據(jù)庫(kù)而言,當(dāng)存儲(chǔ)規(guī)模達(dá)到一定限度時(shí),系統(tǒng)非常容易出現(xiàn) 死鎖等并發(fā)問(wèn)題,從而導(dǎo)致數(shù)據(jù)在讀寫過(guò)程中性能嚴(yán)重下降,影響用戶對(duì)數(shù)據(jù)的查詢刪除 插入等操作。因此面對(duì)海量的數(shù)據(jù)的存儲(chǔ)和讀寫查詢工作,構(gòu)建一個(gè)可靠性高并且可擴(kuò)展 性好的大數(shù)據(jù)平臺(tái)對(duì)的工業(yè)企業(yè)而言是極其緊迫的。于是此時(shí)面臨許多問(wèn)題,關(guān)系型數(shù)據(jù) 庫(kù)數(shù)據(jù)如何迀移至大數(shù)據(jù)平臺(tái)使得效率更高,消耗資源更少;分布式存儲(chǔ)系統(tǒng)的數(shù)據(jù)如何 讓存儲(chǔ)才能使得數(shù)據(jù)讀取等更加迅速;哪些數(shù)據(jù)需要迀移至大數(shù)據(jù)平臺(tái);數(shù)據(jù)迀移至大數(shù) 據(jù)平臺(tái)后,數(shù)據(jù)查詢、數(shù)據(jù)挖掘等怎么樣才能方便快捷高效;對(duì)于使用較頻繁的數(shù)據(jù)如何讓 處理才能使得數(shù)據(jù)的讀取和使用效率更高。
[0051] 如附圖2-4所示,針對(duì)將在線數(shù)據(jù)數(shù)據(jù)迀移到大數(shù)據(jù)平臺(tái)的需求,我們提出一種基 于任務(wù)調(diào)度機(jī)制的數(shù)據(jù)迀移方法。為了對(duì)上述方法進(jìn)行實(shí)驗(yàn)分析,我們使用了 Hadoop架構(gòu) 進(jìn)行實(shí)現(xiàn),并通過(guò)與Hadoop默認(rèn)的FIFO任務(wù)調(diào)度機(jī)制進(jìn)行比較,驗(yàn)證方法的有效性。
[0052]本發(fā)明提供一種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法,本發(fā)明中數(shù)據(jù)的迀移過(guò)程采用了 MapReduce架構(gòu),首先在數(shù)據(jù)源導(dǎo)入數(shù)據(jù),生成對(duì)應(yīng)的運(yùn)行類打包成jar包,傳遞給Hadoop平 臺(tái)存儲(chǔ)和處理。在這個(gè)過(guò)程中可以有效利用MapReduce的并行機(jī)制,同時(shí)利用基于任務(wù)負(fù)載 值的任務(wù)調(diào)度策略對(duì)數(shù)據(jù)迀移過(guò)程進(jìn)行優(yōu)化,提高歉意效率。其中基于任務(wù)負(fù)載的任務(wù)調(diào) 度器運(yùn)行原理就是根據(jù)每個(gè)節(jié)點(diǎn)的任務(wù)負(fù)載值 Pl,對(duì)集群中的個(gè)任務(wù)進(jìn)行分配調(diào)度,這樣 可以有效減少任務(wù)等待時(shí)間,避免任務(wù)阻塞,從而提高任務(wù)處理效率,減少數(shù)據(jù)迀移的消耗 時(shí)長(zhǎng)。
[0053]文中我們利用Hadoop架構(gòu)中的MapReduce框架完成對(duì)任務(wù)的分配和計(jì)算工作。在 執(zhí)行數(shù)據(jù)迀移操作前,我們首先要完成相關(guān)基本信息的配置,主要包含有,數(shù)據(jù)迀出的位置 信息(聲明數(shù)據(jù)源)、數(shù)據(jù)迀移目的地的地址信息、數(shù)據(jù)迀移過(guò)程中使用map的數(shù)量以及現(xiàn)有 分布式集群各個(gè)節(jié)點(diǎn)的服務(wù)器基本的配置情況等。完成基本的配置后,開始執(zhí)行數(shù)據(jù)迀移 操作。根據(jù)圖4與圖6我們對(duì)數(shù)據(jù)迀移的過(guò)程進(jìn)行簡(jiǎn)單描述:
[0054] ⑴設(shè)置參數(shù)。
[0055] 在應(yīng)用中,我們首先要對(duì)系統(tǒng)參數(shù)進(jìn)行設(shè)置,主要包含以下信息:
[0056] ①解析關(guān)于任務(wù)執(zhí)行的系統(tǒng)預(yù)設(shè)信息:設(shè)置待迀移數(shù)據(jù)的基本信息以及數(shù)據(jù)迀移 中的數(shù)據(jù)信息,例如數(shù)據(jù)是否備份、數(shù)據(jù)的獲取路徑、數(shù)據(jù)的輸出路徑、數(shù)據(jù)的原始格式、數(shù) 據(jù)的輸出格式、對(duì)數(shù)據(jù)進(jìn)行劃分和計(jì)算的Mapper類和Reducer類等。
[0057] ②設(shè)置數(shù)據(jù)源:解析等待迀移的數(shù)據(jù)目前的存儲(chǔ)的置,為數(shù)據(jù)迀移操作做準(zhǔn)備。
[0058] ③設(shè)置數(shù)據(jù)的輸出路徑:就是將數(shù)據(jù)格式轉(zhuǎn)換后的輸出數(shù)據(jù)保存的位置,在大數(shù) 據(jù)平臺(tái)中可以是分布式文件系統(tǒng)或者是HBase、Hi Ve,在本文中我們?cè)O(shè)置的一個(gè)HBase表。 [0059]⑵在預(yù)設(shè)的數(shù)據(jù)源中獲取數(shù)據(jù)。
[0060]我們利用Java編程的方式,利用JDBC獲取預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)源,獲取 后輸出的結(jié)果集是名為ResultSet的Java對(duì)象。
[0061]⑶數(shù)據(jù)由原來(lái)的格式轉(zhuǎn)換為大數(shù)據(jù)平臺(tái)可存儲(chǔ)的數(shù)據(jù)格式。
[0062]將ResultSet對(duì)象經(jīng)數(shù)據(jù)格式轉(zhuǎn)換成為鍵值對(duì)(Key/Value)的形式。
[0063] ⑷啟動(dòng)MapReduce,利用MapReduce進(jìn)行數(shù)據(jù)的劃分和計(jì)算,利用Map對(duì)任務(wù)進(jìn)行分 配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn),利用Reduce進(jìn)行計(jì)算,將最后的結(jié)果集寫入到目標(biāo)地址,當(dāng) 所有數(shù)據(jù)完整的寫入到大數(shù)據(jù)平臺(tái)后,也就實(shí)現(xiàn)了關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)迀移至大數(shù)據(jù)平臺(tái)的 目的。具體過(guò)程如下:
[0064]執(zhí)行數(shù)據(jù)迀移操作后,首先利用MapReduce的map將數(shù)據(jù)劃分后分別分發(fā)至每個(gè)節(jié) 點(diǎn)的TaskTracker中,然后將數(shù)據(jù)寫入到用戶預(yù)設(shè)的HBase表中進(jìn)行存儲(chǔ)。在執(zhí)行操作前的 配置中,我們需要對(duì)Map的數(shù)量進(jìn)行設(shè)置,而在數(shù)據(jù)迀移前的數(shù)據(jù)分割會(huì)受到map數(shù)量的影 響,這也一定程度的對(duì)每個(gè)任務(wù)執(zhí)行的范圍產(chǎn)生了影響。當(dāng)檢測(cè)到TaskTracker有空閑的 Slot時(shí),系統(tǒng)對(duì)其I/O資源占用情況進(jìn)行檢測(cè),若其資源占用較少,且該節(jié)點(diǎn)任務(wù)負(fù)載熵值 滿足預(yù)設(shè)的閾值時(shí),JobTracker將自動(dòng)將任務(wù)分配給該TaskTracker。反之,若發(fā)現(xiàn)此時(shí)該 節(jié)點(diǎn)的I/O資源被大量占用或者任務(wù)負(fù)載熵值較大,等待處理的任務(wù)較多,即使該 TaskTracker有空閑的Slot,為避免出現(xiàn)阻塞,從而影響數(shù)據(jù)迀移的效率,任務(wù)調(diào)度器也將 避免將任務(wù)分配給該節(jié)點(diǎn)。因此,系統(tǒng)利用基于任務(wù)負(fù)載的調(diào)度器,可以有效監(jiān)測(cè)識(shí)別系統(tǒng) 中每個(gè)TaskTracker的I/O占用率、CPU利用率、任務(wù)等待/阻塞等,從而進(jìn)行優(yōu)化調(diào)度,提高 迀移系統(tǒng)的整體性能。
[0065] (5)數(shù)據(jù)寫入 HBase。
[0066]每個(gè)節(jié)點(diǎn)的TaskTracker對(duì)任務(wù)進(jìn)行計(jì)算處理輸出數(shù)據(jù),將讀取到的鍵值對(duì)數(shù)據(jù) 寫入HBase表。數(shù)據(jù)迀移過(guò)程的是隨著系統(tǒng)中Map任務(wù)全部結(jié)束而結(jié)束,反之,若數(shù)據(jù)迀移尚 未結(jié)束,則TaskTracker將繼續(xù)將任務(wù)分配給每個(gè)TaskTracker進(jìn)行處理。
[0067] 根據(jù)本文中設(shè)計(jì)的基于ABC算法的任務(wù)調(diào)度,編寫了基于任務(wù)調(diào)度情況的調(diào)度器。 將系統(tǒng)文件m a p r e d - s i t e · X m 1中的相應(yīng)字段設(shè)置為任務(wù)調(diào)度器類 org.apache ?1^(1〇(^.1]^口代(1.1381^(3116(111161',使得其可在后面的任務(wù)調(diào)度中被使用。實(shí)現(xiàn) 基于任務(wù)負(fù)載的任務(wù)調(diào)度器的過(guò)程,主要是對(duì)JobTracker中的AssignTask方法進(jìn)行設(shè)計(jì)編 寫,這個(gè)方法的TaskTracker Status字段中包含有TaskTracker在Heartbeat (心跳信息)中 提交的相關(guān)信息,其中有MapSlot數(shù)量的最大值、ReduceSlot數(shù)量的最大值、虛擬內(nèi)存最大 值、物理內(nèi)存、剩余可用磁盤空間的大小、每個(gè)任務(wù)的執(zhí)行狀態(tài)、磁盤存取狀態(tài)。在以上數(shù)據(jù) 中,對(duì)任務(wù)處理影響較大的因素主要是剩余Slot數(shù)量、磁盤存取速率還有CPU的實(shí)時(shí)狀態(tài)。
[0068] 在對(duì)任務(wù)進(jìn)行分配過(guò)程中,JobTracker利用TaskTracker通過(guò)Heartbeat (心跳信 息)發(fā)送得到的信息來(lái)判斷將任務(wù)分配給哪些節(jié)點(diǎn),其中主要參數(shù)有Slot使用情況、磁盤存 取狀態(tài)、任務(wù)阻塞、等待狀態(tài)等。在數(shù)據(jù)迀移過(guò)程中,關(guān)于任務(wù)的調(diào)度情況可分為以下幾種: [0069]①如果節(jié)點(diǎn)的TaskTracker中所有的slot都已經(jīng)被占用,則任務(wù)調(diào)度器盡量避免 將新的任務(wù)分配至該TaskTracker。
[0070]②若TaskTracker上尚且存在空閑的Slot,貝lj需要對(duì)磁盤占用情況,任務(wù)等待情況 等進(jìn)行監(jiān)測(cè)判斷:
[0071] a).若當(dāng)前節(jié)點(diǎn)負(fù)載任務(wù)情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pl值高于 平均值?,則不將新任務(wù)分配給該節(jié)點(diǎn)。
[0072] b). 1若當(dāng)前節(jié)點(diǎn)負(fù)載情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pl值低于平均 值《,則該節(jié)點(diǎn)可以接受新任務(wù)。
[0073] 具體實(shí)例如下所述的基于任務(wù)調(diào)度優(yōu)化的數(shù)據(jù)迀移方法數(shù)據(jù)測(cè)試與結(jié)果分析:
[0074] 根據(jù)預(yù)設(shè),我們對(duì)基于任務(wù)調(diào)度的數(shù)據(jù)迀移進(jìn)行數(shù)據(jù)測(cè)試,與此同時(shí),在同樣條件 下對(duì)Hadoop默認(rèn)FIFO調(diào)度器進(jìn)行相同數(shù)據(jù)量的測(cè)試。將兩者得到的最終結(jié)果進(jìn)行分析比 較。
[0075] 在實(shí)驗(yàn)過(guò)程中,我們分七種數(shù)據(jù)量進(jìn)行測(cè)試,每沒組數(shù)據(jù)進(jìn)行六次實(shí)驗(yàn),最后利用 六次實(shí)驗(yàn)中的平均值作為比較值,這樣是為了保證數(shù)據(jù)的準(zhǔn)確性。
[0076]基于系統(tǒng)默認(rèn)FIFO調(diào)度器的數(shù)據(jù)測(cè)試結(jié)果,如下表所示:
[0077] 表1 FIFO調(diào)度器
[0080]對(duì)基于ABC算法的Hadoop任務(wù)調(diào)度器的設(shè)計(jì)進(jìn)行數(shù)據(jù)迀移的性能測(cè)試,測(cè)試結(jié)果 如表2所示:
[0081 ] 表2基于ABC算法的Hadoop任務(wù)調(diào)度器
[0083] 對(duì)表1和表2實(shí)驗(yàn)中平均時(shí)間數(shù)據(jù)進(jìn)行對(duì)比,如圖5所示。
[0084] 根據(jù)表1和表2,我們首先對(duì)測(cè)試數(shù)據(jù)進(jìn)行簡(jiǎn)單分析,為了保證數(shù)據(jù)的可靠性和準(zhǔn) 確率我們只對(duì)測(cè)試數(shù)據(jù)的平均值進(jìn)行對(duì)比分析。當(dāng)數(shù)據(jù)量為31250時(shí),使用系統(tǒng)默認(rèn)調(diào)度器 進(jìn)行數(shù)據(jù)迀移消耗時(shí)長(zhǎng)比后者少;當(dāng)數(shù)據(jù)量為62500和125000時(shí),雖然六次測(cè)試中各不相 同,且個(gè)別情況下差距也比較大,但是取平均值后連著消耗時(shí)間相近;當(dāng)數(shù)據(jù)量達(dá)到25000、 500000直到2000000時(shí),基于ABC算法的任務(wù)調(diào)度器比FIFO調(diào)度器消耗時(shí)間更少,并且隨著 數(shù)據(jù)量的不斷增加,兩者消耗時(shí)間的差值依次是2,1,5,11。另外根據(jù)圖5,可以很明顯的看 出,在數(shù)據(jù)量高于1000000條時(shí),圖像中紅色線條明顯高于藍(lán)色線條。于是我們可以總結(jié)為, 當(dāng)數(shù)據(jù)量逐漸增加時(shí),在相等條件下,基于ABC算法的任務(wù)調(diào)度器效率越來(lái)越高,所消耗時(shí) 間越來(lái)越少,數(shù)據(jù)迀移效率越來(lái)越高。
[0085] 除了對(duì)不同數(shù)據(jù)量進(jìn)行數(shù)據(jù)迀移的差別之外,我們還對(duì)數(shù)據(jù)迀移過(guò)程中分配不同 的map數(shù)量進(jìn)行了測(cè)試。Hadooop提供一個(gè)參數(shù)mapred · map · tasks,該參數(shù)可用于設(shè)置map個(gè) 數(shù),因此我們可以通過(guò)這個(gè)參數(shù)來(lái)控制map的數(shù)量。不過(guò),通過(guò)這種方式設(shè)置map的個(gè)數(shù),并 不是每次都有效的。主要原因在于mapred · map · tasks只是一個(gè)hadoop中map個(gè)數(shù)的參考數(shù) 值,最終map的個(gè)數(shù),還取決于其他的因素。
[0086]假設(shè)Map啟用的數(shù)量為Μ(個(gè)),效率的度量數(shù)值為時(shí)間T(s),數(shù)據(jù)處理的效率為P (條/s)。為保證數(shù)據(jù)的可靠性和準(zhǔn)確率,我們使用同一個(gè)數(shù)據(jù)表進(jìn)行多次測(cè)試,每次測(cè)試設(shè) 置的map數(shù)量不同,已知數(shù)據(jù)表中的數(shù)據(jù)量是2000000條。
[0087]在進(jìn)行數(shù)據(jù)測(cè)試的過(guò)程中,我們分別啟動(dòng)1,2,4,6,8個(gè)map函數(shù),依據(jù)每種map數(shù) 量,將相同的數(shù)據(jù)表由MySQL數(shù)據(jù)庫(kù)迀移至HBase中。測(cè)試數(shù)據(jù)如下表3所示:
[0088] 表3不同map的數(shù)據(jù)迀移時(shí)間和效率
[0090]根據(jù)以上數(shù)據(jù)我們得到Map的數(shù)量與數(shù)據(jù)迀移效率的關(guān)系圖像,如圖6。
[0091]根據(jù)表3和圖6,我們首先對(duì)map數(shù)量測(cè)試所得到的數(shù)據(jù)進(jìn)行分析,當(dāng)map數(shù)量為1 時(shí),用時(shí)最長(zhǎng),這是由于map階段負(fù)責(zé)對(duì)輸入文件進(jìn)行切分處理,map數(shù)量太少,用時(shí)必定較 多;當(dāng)map怎的數(shù)量增加到2個(gè)到4個(gè)的過(guò)程中,效率逐漸得到有效提高,用時(shí)越來(lái)越短;當(dāng) map數(shù)量為6時(shí),雖然map數(shù)量增加了但是數(shù)據(jù)迀移的效率反而下降了,造成這種結(jié)果得主要 原因是當(dāng)調(diào)用map函數(shù)時(shí),由于每個(gè)節(jié)點(diǎn)的任務(wù)情況不同,且任務(wù)處理實(shí)時(shí)變化,map將會(huì)在 在各個(gè)節(jié)點(diǎn)之間進(jìn)項(xiàng)調(diào)度使用,這樣會(huì)增大系統(tǒng)資源的消耗,由于map函數(shù)的調(diào)用并占用一 部分系統(tǒng)資源,導(dǎo)致任務(wù)處理效率不增反減。
[0092]根據(jù)測(cè)試數(shù)據(jù)我們可以得出以下結(jié)論:
[0093]⑴數(shù)據(jù)量和數(shù)據(jù)迀移時(shí)間并不是線性關(guān)系,數(shù)據(jù)量成倍數(shù)增加時(shí)迀移的時(shí)間并不 是按照對(duì)應(yīng)的倍數(shù)增長(zhǎng),即數(shù)據(jù)迀移的時(shí)間和數(shù)據(jù)迀移的數(shù)據(jù)量不成正比。針對(duì)這種結(jié)果, 我們進(jìn)行如下分析,出現(xiàn)這種結(jié)果得主要原因在于在啟動(dòng)MapReduce過(guò)程中,同時(shí)啟動(dòng)的還 有Job,而Job準(zhǔn)備工作將會(huì)消耗一部分時(shí)間,占用一部分系統(tǒng)資源。因而,對(duì)于Hadoop默認(rèn) 調(diào)度器和文中基于ABC算法設(shè)計(jì)任務(wù)調(diào)度過(guò)程,其數(shù)據(jù)迀移消耗的時(shí)長(zhǎng)與迀移數(shù)據(jù)量之間 不會(huì)出現(xiàn)按照線性增長(zhǎng)的情況。
[0094] ⑵根據(jù)實(shí)驗(yàn)數(shù)據(jù)中我們可以看出,數(shù)據(jù)量相對(duì)較少時(shí),兩種調(diào)度器在處理相同任 務(wù)是所消耗的時(shí)間大致相同,但是在數(shù)據(jù)量不斷增長(zhǎng)的過(guò)程中,在不考慮其他因素的影響 情況下,基于任務(wù)調(diào)度的調(diào)度器的性能比FIFO調(diào)度器更好。與此同時(shí),也體現(xiàn)出了當(dāng)任務(wù)較 密集情況下,由于不同節(jié)點(diǎn)服務(wù)器處理任務(wù)的能力有差異,所以任務(wù)調(diào)度器將會(huì)優(yōu)先將任 務(wù)分派給任務(wù)負(fù)載值較低的節(jié)點(diǎn)進(jìn)行處理,減少任務(wù)等待時(shí)間,避免阻塞,從而使得數(shù)據(jù)迀 移效率得到提高。
[0095] ⑶在對(duì)任務(wù)進(jìn)行處理中,設(shè)置的map個(gè)數(shù)越接近節(jié)點(diǎn)數(shù)量,數(shù)據(jù)迀移的效率越高, 出現(xiàn)這種結(jié)果得原因在于數(shù)量合理的情況下,可以有效利用存儲(chǔ)系統(tǒng)存取速率和集群網(wǎng)絡(luò) 帶寬。
[0096]⑷在實(shí)際應(yīng)用中,并不是map使用數(shù)量越多越好,當(dāng)map數(shù)量過(guò)多時(shí),map在系統(tǒng)中 的調(diào)用也會(huì)占用系統(tǒng)資源和網(wǎng)絡(luò)資源,從而造成數(shù)據(jù)迀移所占資源減少,迀移效率降低。 [0097]有上述結(jié)論可知,當(dāng)集群對(duì)任務(wù)處理過(guò)程中,選擇對(duì)任務(wù)調(diào)度的優(yōu)化及系統(tǒng)參數(shù) 的正確配置都會(huì)對(duì)任務(wù)的執(zhí)行效率產(chǎn)生影響。
[0098]本發(fā)明基于MapReduce架構(gòu),對(duì)任務(wù)調(diào)度器進(jìn)行了優(yōu)化改進(jìn),只是將任務(wù)依據(jù)不同 節(jié)點(diǎn)任務(wù)的可負(fù)載量分配到實(shí)時(shí)任務(wù)負(fù)載較小的TaskTracker上執(zhí)行,對(duì)任務(wù)較密集的作 業(yè)性能提升較為明顯,但是對(duì)于任務(wù)密集較小的作業(yè),效果不明顯且會(huì)在使用過(guò)程中占用 一部分系統(tǒng)資源,影響系統(tǒng)性能,而在未來(lái)的研究中,可以根據(jù)各節(jié)點(diǎn)CPU利用率、數(shù)據(jù)吞吐 率、內(nèi)存異構(gòu)等因素,提高系統(tǒng)對(duì)于任務(wù)密集型、數(shù)據(jù)密集型的數(shù)據(jù)迀移作業(yè)的迀移效率。
[0099]上述【具體實(shí)施方式】?jī)H是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于 上述【具體實(shí)施方式】,任何符合本發(fā)明的一種基于任務(wù)負(fù)載的數(shù)據(jù)迀移方法的權(quán)利要求書的 且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利 保護(hù)范圍。
【主權(quán)項(xiàng)】
1. 一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,其實(shí)現(xiàn)過(guò)程為,在關(guān)系型數(shù)據(jù)庫(kù)中 抽取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;開始執(zhí)行數(shù)據(jù)遷移,該數(shù)據(jù)遷移過(guò)程采用MapReduce架 構(gòu),具體遷移過(guò)程為:首先在數(shù)據(jù)源導(dǎo)入數(shù)據(jù),生成對(duì)應(yīng)的運(yùn)行類打包成jar包,傳遞給 化doop平臺(tái)存儲(chǔ)和處理。2. 根據(jù)權(quán)利要求1所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,在執(zhí)行數(shù)據(jù) 遷移操作前,首先要完成相關(guān)基本信息的配置,該相關(guān)基本信息包括,數(shù)據(jù)遷出的位置信 息、數(shù)據(jù)遷移目的地的地址信息、數(shù)據(jù)遷移過(guò)程中使用map的數(shù)量W及現(xiàn)有分布式集群各個(gè) 節(jié)點(diǎn)的服務(wù)器基本的配置情況,完成基本的配置后,開始執(zhí)行數(shù)據(jù)遷移操作。3. 根據(jù)權(quán)利要求1所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述數(shù)據(jù)遷 移的具體過(guò)程為: 步驟一、首先設(shè)置參數(shù),解析任務(wù)執(zhí)行的預(yù)設(shè)信息并設(shè)置數(shù)據(jù)源和數(shù)據(jù)輸出路徑; 步驟二、在預(yù)設(shè)的數(shù)據(jù)源中獲取數(shù)據(jù); 步驟Ξ、轉(zhuǎn)換數(shù)據(jù)格式,即將數(shù)據(jù)由原來(lái)的格式轉(zhuǎn)換為大數(shù)據(jù)平臺(tái)可存儲(chǔ)的數(shù)據(jù)格式; 步驟四、對(duì)數(shù)據(jù)進(jìn)行劃分分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn); 步驟五、最后將數(shù)據(jù)寫入到對(duì)應(yīng)的輸出路徑中。4. 根據(jù)權(quán)利要求3所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述步驟一 的具體實(shí)現(xiàn)過(guò)程為: 首先解析關(guān)于任務(wù)執(zhí)行的系統(tǒng)預(yù)設(shè)信息,即設(shè)置待遷移數(shù)據(jù)的基本信息W及數(shù)據(jù)遷移 中的數(shù)據(jù)信息,該系統(tǒng)預(yù)設(shè)信息包括數(shù)據(jù)是否備份、數(shù)據(jù)的獲取路徑、數(shù)據(jù)的輸出路徑、數(shù) 據(jù)的原始格式、數(shù)據(jù)的輸出格式、對(duì)數(shù)據(jù)進(jìn)行劃分和計(jì)算的Mapper類和Reducer類; 然后設(shè)置數(shù)據(jù)源,即解析等待遷移的數(shù)據(jù)目前的存儲(chǔ)的置,為數(shù)據(jù)遷移操作做準(zhǔn)備; 最后設(shè)置數(shù)據(jù)的輸出路徑,即將數(shù)據(jù)格式轉(zhuǎn)換后的輸出數(shù)據(jù)保存的位置,該數(shù)據(jù)的輸 出路徑采用皿ase表。5. 根據(jù)權(quán)利要求3所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述步驟二 在預(yù)設(shè)的數(shù)據(jù)源中獲取數(shù)據(jù)的具體過(guò)程為:通過(guò)化va編程的方式,利用JDBC獲取預(yù)設(shè)的關(guān) 系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)源,獲取后輸出的結(jié)果集是名為ResultSet的化va對(duì)象,相對(duì)應(yīng)的,步 驟Ξ中的轉(zhuǎn)換數(shù)據(jù)格式是指將ResultSet對(duì)象經(jīng)數(shù)據(jù)格式轉(zhuǎn)換成為鍵值對(duì)Key/Value的形 式。6. 根據(jù)權(quán)利要求3所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述步驟四 數(shù)據(jù)劃分及下發(fā)相關(guān)數(shù)據(jù)的過(guò)程為:?jiǎn)?dòng)MapReduce,通過(guò)MapReduce進(jìn)行數(shù)據(jù)的劃分和計(jì) 算,然后通過(guò)Map對(duì)任務(wù)進(jìn)行分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn),最后通過(guò)Reduce進(jìn)行計(jì)算,將 最后的結(jié)果集寫入到目標(biāo)地址,當(dāng)所有數(shù)據(jù)完整的寫入到大數(shù)據(jù)平臺(tái)后,實(shí)現(xiàn)關(guān)系型數(shù)據(jù) 庫(kù)數(shù)據(jù)遷移至大數(shù)據(jù)平臺(tái)的目的。7. 根據(jù)權(quán)利要求6所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述步驟四 的具體實(shí)現(xiàn)過(guò)程為: 在數(shù)據(jù)劃分及下發(fā)相關(guān)數(shù)據(jù)的過(guò)程中,通過(guò)MapReduce的map將任務(wù)分配到各個(gè)節(jié)點(diǎn)中 進(jìn)行處理,即將數(shù)據(jù)劃分后分別分發(fā)至每個(gè)節(jié)點(diǎn)的化skTracker中,然后把數(shù)據(jù)寫入到用戶 預(yù)設(shè)的皿ase表中進(jìn)行存儲(chǔ); 其中通過(guò)Map對(duì)任務(wù)進(jìn)行分配,下發(fā)至集群中的每個(gè)節(jié)點(diǎn)的具體過(guò)程為:當(dāng)檢測(cè)到 TaskTracker有空閑的Slot時(shí),系統(tǒng)對(duì)其I/O資源占用情況進(jìn)行檢測(cè),若該節(jié)點(diǎn)的I/O資源占 用為所有節(jié)點(diǎn)中最少,且該節(jié)點(diǎn)任務(wù)負(fù)載賭值滿足預(yù)設(shè)的闊值時(shí),Jobhacker將自動(dòng)將任 務(wù)分配給該化sk化acker;反之,若發(fā)現(xiàn)此時(shí)該節(jié)點(diǎn)的I/O資源被大量占用或者任務(wù)負(fù)載賭 值較大,等待處理的任務(wù)較多,則不將任務(wù)分配給該節(jié)點(diǎn)。8. 根據(jù)權(quán)利要求7所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,上述任務(wù)分 配通過(guò)任務(wù)調(diào)度器完成,該任務(wù)調(diào)度器的具體操作過(guò)程為: 首先將系統(tǒng)文件mapred-site . xml中的相應(yīng)字段設(shè)置為任務(wù)調(diào)度器類 org. apache. hadoop. mapred. TaskScheduler,使得其可在后面的任務(wù)調(diào)度中被使用; 然后實(shí)現(xiàn)基于任務(wù)負(fù)載的任務(wù)調(diào)度器的過(guò)程,對(duì)化bTracker中的Assign化sk方法進(jìn)行 設(shè)計(jì)編寫,運(yùn)個(gè)方法的TaskTrackerStatus字段中包含有TaskTracker在屯、跳信息 Hea;rtbeat中提交的相關(guān)信息,該相關(guān)信息包括MapSlot數(shù)量的最大值、ReduceSlot數(shù)量的 最大值、虛擬內(nèi)存最大值、物理內(nèi)存、剩余可用磁盤空間的大小、每個(gè)任務(wù)的執(zhí)行狀態(tài)、磁盤 存取狀態(tài)、剩余Slot數(shù)量、磁盤存取速率、CPU的實(shí)時(shí)狀態(tài); 在對(duì)任務(wù)進(jìn)行分配過(guò)程中,JobTracker利用化skTracker通過(guò)屯、跳信息化artbeat發(fā)送 得到的信息來(lái)判斷將任務(wù)分配給哪些節(jié)點(diǎn),其中主要參數(shù)有Slot使用情況、磁盤存取狀態(tài)、 任務(wù)阻塞、等待狀態(tài)。9. 根據(jù)權(quán)利要求8所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,基于上述任 務(wù)調(diào)度器,具體的任務(wù)調(diào)度情況為: 如果節(jié)點(diǎn)的化sk化acker中所有的slot都已經(jīng)被占用,則任務(wù)調(diào)度器則拒絕將新的任 務(wù)分配至該TaskTracker; 若化sk化acker上尚且存在空閑的Slot,則需要對(duì)磁盤占用情況,任務(wù)等待情況等進(jìn)行 監(jiān)測(cè)判斷: a) .若當(dāng)前節(jié)點(diǎn)負(fù)載任務(wù)情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pi值高于平均值 ,則不將新任務(wù)分配給該節(jié)點(diǎn); b) . 1若當(dāng)前節(jié)點(diǎn)負(fù)載情況,依據(jù)任務(wù)負(fù)載均衡評(píng)測(cè)模型計(jì)算得到的Pi值低于平均值;, 則該節(jié)點(diǎn)可W接受新任務(wù)。10. 根據(jù)權(quán)利要求3所述的一種基于任務(wù)負(fù)載的數(shù)據(jù)遷移方法,其特征在于,所述步驟 五中將數(shù)據(jù)寫入皿ase的具體過(guò)程為:每個(gè)節(jié)點(diǎn)的化sMYacker對(duì)任務(wù)進(jìn)行計(jì)算處理輸出數(shù) 據(jù),將讀取到的鍵值對(duì)數(shù)據(jù)寫入皿ase表;數(shù)據(jù)遷移過(guò)程隨著系統(tǒng)中Map任務(wù)全部結(jié)束而結(jié) 束,反之,若數(shù)據(jù)遷移尚未結(jié)束,則TaskTracker將繼續(xù)將任務(wù)分配給每個(gè)化sk化acker進(jìn)行 處理。
【文檔編號(hào)】G06F17/30GK106095940SQ201610415905
【公開日】2016年11月9日
【申請(qǐng)日】2016年6月14日 公開號(hào)201610415905.4, CN 106095940 A, CN 106095940A, CN 201610415905, CN-A-106095940, CN106095940 A, CN106095940A, CN201610415905, CN201610415905.4
【發(fā)明人】耿玉水, 孫濤, 袁家恒, 姜雪松
【申請(qǐng)人】齊魯工業(yè)大學(xué)