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

一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法與流程

文檔序號:11917916閱讀:607來源:國知局
一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法與流程

本發(fā)明涉及在線集群調(diào)度技術(shù)領(lǐng)域,尤其涉及一種處理Hadoop集群任務(wù)數(shù)據(jù)傾斜的負載均衡方法和裝置。



背景技術(shù):

Hadoop是一個以可靠、高效、可伸縮的方式對大量數(shù)據(jù)進行分布式處理的軟件框架。Hadoop集群(cluster)主要的任務(wù)部署分為客戶端(Client)機器、主節(jié)點(Master nodes)和從節(jié)點(Slave nodes)3個部分,如圖1所示。數(shù)據(jù)存儲(Hadoop分布式文件系統(tǒng),Hadoop Distributed File System,HDFS)和對運行在這個數(shù)據(jù)之上的并行計算(MapReduce)的監(jiān)督是Hadoop的兩個關(guān)鍵功能模塊,這兩個關(guān)鍵功能模塊主要由主節(jié)點負責(zé)。HDFS采用主從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群是由一個名字節(jié)點(NameNode)和若干個數(shù)據(jù)節(jié)點(DataNode)組成的。MapReduce框架是由一個單獨運行在主節(jié)點上的作業(yè)追蹤器(JobTracker)和運行在每個集群從節(jié)點上的任務(wù)追蹤器(TaskTracker)共同組成。HDFS和MR共同組成Hadoop分布式系統(tǒng)體系結(jié)構(gòu)的核心。

Hadoop是一個實現(xiàn)了MapReduce模式的開源的分布式并行編程框架,它以其通用、方便實用等特征在云計算和大數(shù)據(jù)處理時代得到了廣泛應(yīng)用。MapReduce是一種用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算的編程模型。MapReduce工作過程包括兩個階段:Map階段和Reduce階段。Map階段包含多個Map任務(wù),Reduc階段包含多個Reduce任務(wù)。 在正式執(zhí)行Map函數(shù)前,需要對輸入數(shù)據(jù)進行分片,每個Map任務(wù)處理一個邏輯分片(split)。split包含了數(shù)據(jù)起始位置、數(shù)據(jù)長度、數(shù)據(jù)所在節(jié)點等元數(shù)據(jù)信息,其劃分方法通常由用戶自己決定。split的數(shù)量決定了Map任務(wù)的數(shù)量。

HDFS實現(xiàn)Hadoop體系結(jié)構(gòu)中對分布式存儲的底層支持存儲。

NameNode執(zhí)行文件系統(tǒng)的命名空間,如打開、關(guān)閉、重命名文件或目錄等,也負責(zé)數(shù)據(jù)塊到具體DataNode的映射。DataNode既是數(shù)據(jù)存儲節(jié)點,也是計算節(jié)點,它負責(zé)處理文件系統(tǒng)客戶端的文件讀寫,并在NameNode的統(tǒng)一調(diào)度下進行數(shù)據(jù)庫的創(chuàng)建、刪除和復(fù)制工作。

Job Tracker主要負責(zé)調(diào)度Job的每一個子任務(wù)task運行于Task Tracker上,并監(jiān)控它們,如果發(fā)現(xiàn)有失敗的task就重新運行它。Job Tracker還負責(zé)跟蹤任務(wù)的執(zhí)行進度、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度器(Task Scheduler),以便于調(diào)度器在資源出現(xiàn)空閑時將這些資源分配給合適的任務(wù)。Task Tracker主動周期性地調(diào)用心跳RPC函數(shù),向Job Tracker匯報節(jié)點和任務(wù)運行狀態(tài)信息,同時領(lǐng)取Job Tracker返回心跳包的各種命令并執(zhí)行相應(yīng)的操作。Task Tracker使用“slot”等量劃分本節(jié)點上的資源量。slot是一個邏輯概念,是Hadoop的資源單位,一個節(jié)點的slot的數(shù)量用來表示某個節(jié)點的資源的容量或者說是能力的大小。slot分為Map slot和Reduce slot兩種,分別供Map Task和Reduce Task使用。每個作業(yè)申請資源以slot為單位,每個節(jié)點會確定自己的計算能力以及存儲器,確定自己包含的slot總量。當(dāng)某個作業(yè)要開始執(zhí)行時,先向Job Tracker申 請slot,一個任務(wù)獲取到一個slot后才有機會運行,而Hadoop調(diào)度器的作用就是將各個Task Tracker上的空閑slot分配給任務(wù)使用。

Hadoop集群系統(tǒng)中的核心技術(shù)是任務(wù)調(diào)度,在云計算研究中,MapReduce環(huán)境的在線作業(yè)調(diào)度帶來了新的課題和挑戰(zhàn),引起了越來越多的重視。最初,Hadoop默認的FIFO(先入先出)調(diào)度器專為周期性執(zhí)行大規(guī)模批量作業(yè)而設(shè)計。隨著MapReduce集群系統(tǒng)的用戶數(shù)量的增加,計算能力調(diào)度器和Hadoop公平調(diào)度器(HFS:Hadoop Fair Scheduling)的出現(xiàn),提供了更高效的集群共享方式,但是,現(xiàn)有的調(diào)度器還不能提供對最小化在線作業(yè)集完工時間的支持,當(dāng)提交在線作業(yè)為一個作業(yè)集時,完工時間可能較長因而導(dǎo)致總能耗較高。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題是:提供一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法和裝置,能夠減輕數(shù)據(jù)傾斜程度,加快任務(wù)處理速度。

為解決上述技術(shù)問題,第一方面,本發(fā)明實施例提供了一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法,所述方法包括以下四大步驟:

對輸入數(shù)據(jù)進行抽樣分析,確定平均每個Reduce節(jié)點上任務(wù)數(shù)量;

根據(jù)任務(wù)的個數(shù)和時間系數(shù),按照基于時間系數(shù)的任務(wù)數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序;

按照資源剩余容量最大的原則以及所排任務(wù)順序依次分配任務(wù),直到所有任務(wù)分配完畢;

將分配方式提交給自定義的Partition函數(shù),執(zhí)行任務(wù)處理過程;

根據(jù)第一方面,在第一種可能的實現(xiàn)方式中,所述對輸入數(shù)據(jù)進行抽樣分析,確定平均每個Reduce節(jié)點上任務(wù)數(shù)量;

對輸入的文件,各個節(jié)點根據(jù)自己擁有的文件塊進行計算,使用API計算文件的行數(shù);

運行Map程序統(tǒng)計各個節(jié)點上樣本key值的頻率,并記錄該節(jié)點key的總個數(shù),總個數(shù)可以通過獲得文件行數(shù)乘以每行key值獲?。?/p>

運行Reduce程序匯總所有key的頻率,并統(tǒng)計出各個key最終頻率,同時匯總所有key的總個數(shù),根據(jù)抽樣頻率和總個數(shù),估算出每個key的具體數(shù)量。

根據(jù)第一方面,在第二種可能的實現(xiàn)方式中,所述為所述各個key處理的時間有顯著不同時,每個不同key,設(shè)定一個時間系數(shù)t,對任意一個key ki,ti的大小定義為該key執(zhí)行時間和執(zhí)行最慢的key的執(zhí)行時間的比值;對每個不同key進行一次執(zhí)行,將該key的執(zhí)行時間進行記錄,增加時間系數(shù)后,可以通過在分配時候把時間系數(shù)考慮進去,解決key值處理時間不同的情形。

根據(jù)第一方面,在第三種可能的實現(xiàn)方式中,所述根據(jù)key的個數(shù)和時間系數(shù),按照基于時間系數(shù)的key數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序。

根據(jù)第一方面的第四種可能的實現(xiàn)方式,取出key選擇Reduce剩余數(shù)量最大的分配;若該Reduce剩余容量足夠分配,則直接分配給 Reduce,分配后修改Reduce剩余容量數(shù)目;若該Reduce剩余容量不夠,則分配Reduce剩余容量大小并將已經(jīng)分配的ki標(biāo)記為ki_1,取出Reduce剩余數(shù)量最大的分配,直到該key分配完畢。

根據(jù)第一方面,在第五種可能的實現(xiàn)方式中,所有調(diào)整執(zhí)行完成后,按照調(diào)整的結(jié)果對輸入文件進行key替換,并將分配方式提交給自定義的Partition函數(shù)。

第二方面,本發(fā)明實施例提供了一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法裝置,所述裝置四大模塊包括:

抽樣模塊,用于對輸入數(shù)據(jù)進行抽樣分析,確定平均每個Reduce節(jié)點上任務(wù)數(shù)量;

排序模塊,根據(jù)任務(wù)的個數(shù)和時間系數(shù),基于時間系數(shù)的任務(wù)數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序;

分配模塊,按照資源剩余容量最大的原則以及所排任務(wù)順序依次分配任務(wù),直到所有任務(wù)分配完畢;

執(zhí)行模塊,用于按照所述順序執(zhí)行任務(wù)。

根據(jù)第二方面,在第一種可能的實現(xiàn)方式中,所述抽樣模塊:

對輸入的文件,各個節(jié)點根據(jù)自己擁有的文件塊進行計算,使用API計算文件的行數(shù);

運行Map程序統(tǒng)計各個節(jié)點上樣本key值的頻率,并記錄該節(jié)點key的總個數(shù),總個數(shù)可以通過獲得文件行數(shù)乘以每行key值獲??;

運行Reduce程序匯總所有key的頻率,并統(tǒng)計出各個key最終頻率,同時匯總所有key的總個數(shù),根據(jù)抽樣頻率和總個數(shù),估算出每個key 的具體數(shù)量。

并且獲取不同key的時間系數(shù),通過在分配時候把時間系數(shù)考慮進去,解決key值處理時間不同的情形。

根據(jù)第二方面,在第二種可能的實現(xiàn)方式中,所述排序模塊:

根據(jù)key的個數(shù)和時間系數(shù),按照基于時間系數(shù)的key數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序。

根據(jù)第二方面,在第三種可能的實現(xiàn)方式中,所述分配模塊:

取出key選擇Reduce剩余數(shù)量最大的分配;若該Reduce剩余容量足夠分配,則直接分配給Reduce,分配后修改Reduce剩余容量數(shù)目;若該Reduce剩余容量不夠,則分配Reduce剩余容量大小并將已經(jīng)分配的ki標(biāo)記為ki_1,取出Reduce剩余數(shù)量最大的分配,直到該key分配完畢。

根據(jù)第二方面,在第四種可能的實現(xiàn)方式中,所述執(zhí)行模塊:

在所述根據(jù)任務(wù)執(zhí)行順序,依次執(zhí)行任務(wù),直到任務(wù)全部完成。

第三方面,本發(fā)明實施例提供了一種處理Hadoop集群任務(wù)數(shù)據(jù)傾斜的負載均衡裝置,包括第二方面或第二方面任一種可能的實現(xiàn)方式所述的調(diào)度裝置。

第四方面,本發(fā)明實施例提供了一種處理Hadoop集群任務(wù)數(shù)據(jù)傾斜的負載均衡的功耗降低方法,其特征在于,所述Hadoop集群系統(tǒng)使用第一方面或第一方面任一種可能的實現(xiàn)方式所述的方法進行調(diào)度。

附圖說明

圖1是本發(fā)明一種實施例的Hadoop集群系統(tǒng)部署示意圖;

圖2是本發(fā)明一種實施例的處理MapReduce數(shù)據(jù)傾斜的負載均衡方法流程圖;

圖3是本發(fā)明一種實施例的處理MapReduce數(shù)據(jù)傾斜的負載均衡裝置示意圖;

具體實施方式

下面根據(jù)附圖和實施例,對本發(fā)明的具體實施方式作進一步詳細說明。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。

如圖2所示,本發(fā)明實施例提供了一種處理MapReduce數(shù)據(jù)傾斜的負載均衡方法,該方法包括步驟:

S101.對輸入數(shù)據(jù)進行抽樣分析,確定平均每個Reduce節(jié)點上任務(wù)數(shù)量。

S102.根據(jù)任務(wù)的個數(shù)和時間系數(shù),按照基于時間系數(shù)的任務(wù)數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序。

S103.按照資源剩余容量最大的原則以及所排任務(wù)順序依次分配任務(wù),直到所有任務(wù)分配完畢。

S104.將分配方式提交給自定義的Partition函數(shù),執(zhí)行任務(wù)處理過程。

本領(lǐng)域技術(shù)人員可以理解,在本發(fā)明各實施例的方法中,各步驟的序號大小并不意味著執(zhí)行順序的先后,各步驟的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明具體實施例的實施過程構(gòu)成任何限定。

如圖3所示,本發(fā)明實施例還提供了一種實施例的Hadoop集群任務(wù)數(shù)據(jù)傾斜的負載均衡裝置的調(diào)度裝置300,該裝置300包括:

抽樣模塊310,用于對輸入數(shù)據(jù)進行抽樣分析,確定平均每個Reduce節(jié)點上任務(wù)數(shù)量;

對輸入的文件,各個節(jié)點根據(jù)自己擁有的文件塊進行計算,使用API計算文件的行數(shù);

運行Map程序統(tǒng)計各個節(jié)點上樣本key值的頻率,并記錄該節(jié)點key的總個數(shù),總個數(shù)可以通過獲得文件行數(shù)乘以每行key值獲取;

運行Reduce程序匯總所有key的頻率,并統(tǒng)計出各個key最終頻率,同時匯總所有key的總個數(shù),根據(jù)抽樣頻率和總個數(shù),估算出每個key的具體數(shù)量。

并且獲取不同key的時間系數(shù),通過在分配時候把時間系數(shù)考慮進去,解決key值處理時間不同的情形。

排序模塊320,用于根據(jù)任務(wù)的個數(shù)和時間系數(shù),按照基于時間系數(shù)的任務(wù)數(shù)量從大到小降序排序,數(shù)量相同則按照序號排序;

分配模塊330,用于按照資源剩余容量最大的原則以及所排任務(wù)順序依次分配任務(wù),直到所有任務(wù)分配完畢。

執(zhí)行模塊340,用于將分配方式提交給自定義的Partition函數(shù),執(zhí)行任務(wù)處理過程。

本發(fā)明實施例還提供了一種包括本發(fā)明實施例的圖3所示的調(diào)度裝置的Hadoop集群系統(tǒng),該集群系統(tǒng)可按照圖1所示的架構(gòu)部署,該調(diào)度裝置可為圖1中所示的任務(wù)調(diào)度器。

以下通過具體實例來進一步說明本發(fā)明各實施例:

假設(shè)一個MapReduce任務(wù),有4種keys(k1,k2,k3,k4),運行在4個Reducers(R1,R2,R3,R4)上,根據(jù)抽樣分析后,得到k1,k2,k3,k4的數(shù)量分別是1000,100,50,20。則在默認情況下R1,R2,R3,R4分別分配到的key數(shù)量分別為1000,100,50,20,可以看出R1分配到的key的數(shù)值明顯大于其他幾個,產(chǎn)生數(shù)據(jù)傾斜,最后導(dǎo)致R2,R3,R4都在等待R1執(zhí)行完成,總完工時間較長,產(chǎn)生大量能耗。

按照本發(fā)明實施例的方法,對該作業(yè)集進行處理的過程如下:

S510.計算出key的均值kavg為292,將R1,R2,R3,R4剩余值設(shè)置為292;

S520.取出k1進行分配,選擇R1進行分配,由于k1數(shù)量大于R1剩余數(shù)量,所以將k1分配292個key到R1,并標(biāo)記為k1_2;

S530.繼續(xù)執(zhí)行,由于k1剩余數(shù)量大于R2剩余數(shù)量,因此將k1剩下部分標(biāo)記為k1_2分配到R2,分配key數(shù)量為292,同理將k1_3分配到R3,分配key數(shù)量為292,分配后k1剩余數(shù)量為124,小于R4剩余數(shù)量,故將剩余的124個key全部分配到R4,標(biāo)記為k1_4;

同理,取出k2,k3,k4分配到R4上;

此時R1,R2,R3,R4分配到的key的數(shù)量分別為292,292,292,294,實現(xiàn)了key值的理想負載均衡。

另一具體實例進一步說明本發(fā)明各實施例:

計算key數(shù)量時候,增加時間系數(shù),即基于時間系數(shù)的key數(shù)量kti=ki×ti,平均key值則變成了

具體分配時,分配到reduce上數(shù)量為Rt=R/t。

增加時間系數(shù)后,上述例子中,kt1=500,則按照key均衡調(diào)整,k1分配到R1上,標(biāo)記為k1_1,數(shù)量為60,k1_2分配到R2上,數(shù)量為40,k2分配到R2上,數(shù)量100,則兩個ReduceR1,R2執(zhí)行時間相同,均為300個單位時間,達到了負載均衡的目的。

本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一臺計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1