專利名稱:一種MapReduce系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種MapReduce系統(tǒng)。
背景技術(shù):
谷歌(Google)公司于2004年發(fā)表了基于映射化簡(jiǎn)的編程模型的論文,論文名稱為〈〈MapReduce: simplified data processing on large clusters〉〉,此后,以分布式系統(tǒng)基礎(chǔ)架構(gòu)(Hadoop)為代表的分布式并行海量數(shù)據(jù)處理工具,成為企業(yè)的首選及學(xué)術(shù)研究的熱點(diǎn)。與關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),例如Oracle等關(guān)系型商業(yè)數(shù)據(jù)庫(kù)相比,Hadoop的線性擴(kuò)展及所使用的MapReduce模型的并行計(jì)算能力,在大數(shù)據(jù)處理場(chǎng)景中表現(xiàn)優(yōu)異。雅虎(Yahoo)公司的互聯(lián)網(wǎng)(Internet)搜索服務(wù)、社交網(wǎng)絡(luò)服務(wù)網(wǎng)站臉譜(Facebook)的社會(huì)性網(wǎng)絡(luò)服務(wù)(Social Networking Services, SNS)數(shù)據(jù)分析、國(guó)內(nèi)百度搜索引擎的日志分析、淘寶的數(shù) 據(jù)魔方服務(wù)以及中國(guó)移動(dòng)“大云”(Big Cloud)系統(tǒng)中,都使用了 Hadoop作為核心數(shù)據(jù)處理工具。Hadoop成為當(dāng)前大中型企業(yè)處理拍字節(jié)(PB)級(jí)數(shù)據(jù)的事實(shí)上的標(biāo)準(zhǔn)工具。在Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)之上,進(jìn)一步地實(shí)現(xiàn)了 MapReduce框架。目前Hadoop平臺(tái)的MapReduce系統(tǒng),對(duì)作業(yè)的執(zhí)行一般包括執(zhí)行映射任務(wù)(Map Task)和化簡(jiǎn)任務(wù)(Reduce Task)兩個(gè)階段,其中,在執(zhí)行Reduce Task時(shí)還包括混洗(Shuffle)的過(guò)程。在執(zhí)行Reduce Task時(shí),主要消耗中央處理器(CentralProcessing Unit, CPU)資源和內(nèi)存資源;由于Hadoop平臺(tái)一般由集群計(jì)算機(jī)構(gòu)建,執(zhí)行Reduce Task的計(jì)算機(jī)在執(zhí)行Shuffle過(guò)程時(shí),還需要通過(guò)網(wǎng)絡(luò)訪問(wèn)Map Task所在的計(jì)算機(jī),因此執(zhí)行Shuffle過(guò)程時(shí),需要消耗網(wǎng)絡(luò)帶寬資源和內(nèi)存資源。但是,由于Shuffle過(guò)程是Reduce Task中的一部分,Hadoop平臺(tái)為Reduce Task分配資源時(shí),將同時(shí)分配CPU資源、網(wǎng)絡(luò)帶寬資源和內(nèi)存資源。當(dāng)MapReduce系統(tǒng)執(zhí)行Reduce Task中的Shuff Ie過(guò)程時(shí),為ReduceTask分配的CPU資源將處于空閑狀態(tài);當(dāng)執(zhí)行Reduce Task中的其他部分時(shí),為Shuffle過(guò)程分配的網(wǎng)絡(luò)帶寬資源將處于空閑狀態(tài)。因此,現(xiàn)有技術(shù)中的MapReduce系統(tǒng)在資源利用率方面存在不足。
發(fā)明內(nèi)容
本發(fā)明提供一種MapReduce系統(tǒng),用于解決MapReduce系統(tǒng)在資源利用率方面存在不足。本發(fā)明提供的MapReduce系統(tǒng),包括Map節(jié)點(diǎn)、Shuffle節(jié)點(diǎn)和Reduce節(jié)點(diǎn);所述Reduce節(jié)點(diǎn),用于向所述Shuffle節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,所述讀寫請(qǐng)求中攜帶有Map節(jié)點(diǎn)標(biāo)識(shí)信息以及Reduce節(jié)點(diǎn)標(biāo)識(shí)信息;所述Shuffle節(jié)點(diǎn),用于根據(jù)從所述Reduce節(jié)點(diǎn)接收到的所述讀寫請(qǐng)求中的所述Map節(jié)點(diǎn)標(biāo)識(shí)信息,將所述讀寫請(qǐng)求發(fā)送給所述Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn);所述Map節(jié)點(diǎn),用于根據(jù)從所述Shuffle節(jié)點(diǎn)接收到的所述讀寫請(qǐng)求中的所述Reduce節(jié)點(diǎn)標(biāo)識(shí)信息和預(yù)設(shè)的Reduce節(jié)點(diǎn)與目標(biāo)數(shù)據(jù)的對(duì)應(yīng)關(guān)系,獲得所述讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并將所述目標(biāo)數(shù)據(jù)返回給所述Shuffle節(jié)點(diǎn),以供所述Shuffle節(jié)點(diǎn)將所述目標(biāo)數(shù)據(jù)返回給發(fā)送所述讀寫請(qǐng)求的Reduce節(jié)點(diǎn)。本發(fā)明實(shí)施例提供的MapReduce系統(tǒng),將Shuffle從Reduce Task中分離出來(lái),將Shuffle Task作為獨(dú)立的節(jié)點(diǎn),當(dāng)Reduce節(jié)點(diǎn)需要從Map節(jié)點(diǎn)讀取數(shù)據(jù)時(shí),可以通過(guò)向Shuffle節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,通過(guò)Shuffle節(jié)點(diǎn)從Map節(jié)點(diǎn)讀取相應(yīng)的數(shù)據(jù),由于新創(chuàng)建的Shuffle節(jié)點(diǎn)保持了與原Reduce節(jié)點(diǎn)中的Shuffle過(guò)程相同的功能,使得MapReduce系統(tǒng)的功能沒(méi)有缺失;在將Shuffle節(jié)點(diǎn)作為獨(dú)立的節(jié)點(diǎn)從Reduce節(jié)點(diǎn)中分離出來(lái)之后,在對(duì)各節(jié)點(diǎn)進(jìn)行資源分配時(shí),可以針對(duì)Shuffle節(jié)點(diǎn)和Reduce節(jié)點(diǎn)各自的資源需求進(jìn)行分配,與為原有的包括Shuffle過(guò)程的Reduce節(jié)點(diǎn)分配 資源的方式相比,有效地提高了MapReduce系統(tǒng)中CPU資源和網(wǎng)絡(luò)帶寬資源等資源的利用率,并且提高了系統(tǒng)的性能。
圖1為本發(fā)明提供的MapReduce系統(tǒng)一實(shí)施例的結(jié)構(gòu)示意圖;圖2為本發(fā)明提供的MapReduce系統(tǒng)另一實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式MapReduce框架定義了供上層用戶及客戶端使用的接口,框架本身解決了數(shù)據(jù)流控制、分布式環(huán)境下系統(tǒng)部分失效問(wèn)題;通過(guò)備份任務(wù)(backup-task)及重復(fù)執(zhí)行的方式,實(shí)現(xiàn)分布式系統(tǒng)中的容錯(cuò),并保證系統(tǒng)整體的性能。通過(guò)對(duì)MapReduce中Map和Reduce的數(shù)據(jù)進(jìn)行排序、合并和劃分等過(guò)程進(jìn)行改進(jìn)及數(shù)據(jù)流的優(yōu)化,可以在一定程度上提高Hadoop平臺(tái)計(jì)算機(jī)集群的CPU、內(nèi)存及網(wǎng)絡(luò)帶寬利用率,從而在一定程度上提高Hadoop集群的整體性能。在目前Hadoop平臺(tái)的MapReduce系統(tǒng)中,Shuffle作為Reduce Task中的一部分存在的。執(zhí)行Reduce Task過(guò)程分為執(zhí)行Shuffle過(guò)程和執(zhí)行Reduce過(guò)程,其中,執(zhí)行Shuffle過(guò)程會(huì)大量使用網(wǎng)絡(luò)帶寬資源,執(zhí)行Reduce過(guò)程會(huì)大量使用CPU資源及內(nèi)存資源。由于這兩個(gè)過(guò)程對(duì)物理資源的使用情況是完全不同的,并且兩個(gè)過(guò)程還需要在ReduceTask中順序執(zhí)行,因此將導(dǎo)致對(duì)計(jì)算機(jī)集群的CPU資源、網(wǎng)絡(luò)帶寬資源和內(nèi)存資源等系統(tǒng)資源的浪費(fèi)。而本發(fā)明各實(shí)施例中的MapReduce系統(tǒng),將Shuffle過(guò)程從Reduce Task中分離出來(lái),作為MapReduce系統(tǒng)中的獨(dú)立的服務(wù)而存在,能夠有效地提高CPU資源或者網(wǎng)絡(luò)帶寬資源的利用率。圖1為本發(fā)明提供的MapReduce系統(tǒng)一實(shí)施例的結(jié)構(gòu)示意圖,如圖1所示,該系統(tǒng)包括Map節(jié)點(diǎn)11、Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13。所述Reduce節(jié)點(diǎn)13,用于向所述Shuffle節(jié)點(diǎn)12發(fā)送讀寫請(qǐng)求,所述讀寫請(qǐng)求中攜帶有Map節(jié)點(diǎn)標(biāo)識(shí)信息以及Reduce節(jié)點(diǎn)標(biāo)識(shí)信息;所述Shuffle節(jié)點(diǎn)12,用于根據(jù)從所述Reduce節(jié)點(diǎn)13接收到的所述讀寫請(qǐng)求中的所述Map節(jié)點(diǎn)標(biāo)識(shí)信息,將所述讀寫請(qǐng)求發(fā)送給所述Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn)11 ;所述Map節(jié)點(diǎn)11用于根據(jù)從所述Shuffle節(jié)點(diǎn)接收到的所述讀寫請(qǐng)求中的所述Reduce節(jié)點(diǎn)標(biāo)識(shí)信息和預(yù)設(shè)的Reduce節(jié)點(diǎn)與目標(biāo)數(shù)據(jù)的對(duì)應(yīng)關(guān)系,獲得所述讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并將所述目標(biāo)數(shù)據(jù)返回給所述Shuffle節(jié)點(diǎn),以供所述Shuffle節(jié)點(diǎn)將所述目標(biāo)數(shù)據(jù)返回給發(fā)送所述讀寫請(qǐng)求的Reduce節(jié)點(diǎn)。區(qū)別于現(xiàn)有技術(shù)中的MapReduce系統(tǒng),本發(fā)明實(shí)施例中的MapReduce系統(tǒng)不僅包括Map節(jié)點(diǎn)11和Reduce節(jié)點(diǎn)13,還包括Shuffle節(jié)點(diǎn)12。將Shuffle從Reduce中分離出來(lái)的具體方法如下。創(chuàng)建Shuffle相關(guān)的類,形成與Map和Reduce同一級(jí)別的單獨(dú)的Shuffle類,也可以稱為Shuffle Task。Shuffle Task與Map Task和Reduce Task的相同之處為,均繼承自Task,也就是說(shuō),Shuffle Task、Map Task和Reduce Task是由相同的任務(wù)模塊生成的;并且,Map Task和Reduce Task在現(xiàn)有技術(shù)中是可以被Master節(jié)點(diǎn)調(diào)度的,在本發(fā)明各實(shí)施例中Shuffle Task同樣是可以被Master節(jié)點(diǎn)調(diào)度的。
將原本屬于Reduce Task的數(shù)據(jù)拉取(fetch)、拷貝(copy)、合并(merge)等功能子類,提取到新創(chuàng)建的Shuffle Task中,將Shuffle Task重構(gòu)為公共服務(wù)(commonservice)。新創(chuàng)建的Shuffle Task可以與一個(gè)或多個(gè)Reduce Task連接,實(shí)現(xiàn)ShuffleTask與Reduce Task之間的數(shù)據(jù)傳輸。其中,merge包括磁盤merge和內(nèi)存merge等方式。在MapReduce 系統(tǒng)中,Map Task 由 MapTask. java 實(shí)現(xiàn),Reduce Task 由 ReduceTask. java 實(shí)現(xiàn),Map Task和 Reduce Task均運(yùn)行在 Task Tracker 之上,Task Tracker 由 TaskTracker.java實(shí)現(xiàn)。新創(chuàng)建的Shuffle Task的功能與原Reduce Task中Shuffle過(guò)程的功能相同。Shuffle Task的初始化和容錯(cuò)等功能的實(shí)現(xiàn)方式,可以與原Reduce Task中Shuffle過(guò)程實(shí)現(xiàn)初始化和容錯(cuò)等功能的方式相同。在創(chuàng)建完成Shuffle Task之后,Reduce節(jié)點(diǎn)13、Shuffle節(jié)點(diǎn)12和Map節(jié)點(diǎn)11之間的數(shù)據(jù)傳輸過(guò)程如下。其中,在本發(fā)明各實(shí)施例中將執(zhí)行Reduce Task的節(jié)點(diǎn)稱為Reduce節(jié)點(diǎn)13,將執(zhí)行Shuffle Task的節(jié)點(diǎn)稱為Shuffle節(jié)點(diǎn)12,將執(zhí)行Map Task的節(jié)點(diǎn)稱為Map節(jié)點(diǎn)11。將Shuffle Task從Reduce Task中分離出來(lái)之后,MapReduce系統(tǒng)在分配資源時(shí),即可分別為Map節(jié)點(diǎn)11、Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13分配相應(yīng)的資源。其中,由于資源的分配是針對(duì)各節(jié)點(diǎn)進(jìn)行的,Shuffle節(jié)點(diǎn)12主要占用網(wǎng)絡(luò)帶寬資源,Reduce節(jié)點(diǎn)13主要占用CPU資源,在計(jì)算機(jī)集群中各計(jì)算機(jī)節(jié)點(diǎn)的配置不變的情況下,將Shuff Ie過(guò)程從Reduce Task中分離出來(lái)之后,不同Reduce Task所對(duì)應(yīng)的ShuffIe過(guò)程和Reduce過(guò)程可以并行執(zhí)行。由于不再需要在等待各Shuffle過(guò)程均結(jié)束之后,才能夠執(zhí)行Reduce過(guò)程,使得執(zhí)行不同Reduce Task的Shuffle節(jié)點(diǎn)與Reduce節(jié)點(diǎn)可以同時(shí)利用計(jì)算機(jī)集群的網(wǎng)絡(luò)資源、CPU資源和內(nèi)存資源。因此,對(duì)于各節(jié)點(diǎn)以及MapReduce系統(tǒng)整體而言,均有利于提高資源的利用率,有利于減少CPU資源和網(wǎng)絡(luò)帶寬資源等資源的浪費(fèi)。并且,Shuffle節(jié)點(diǎn)12還具有占用資源少開(kāi)銷小的優(yōu)點(diǎn)。Shuffle節(jié)點(diǎn)12的主要功能為根據(jù)Reduce節(jié)點(diǎn)13對(duì)讀取數(shù)據(jù)的需求,從Map節(jié)點(diǎn)11將相應(yīng)的數(shù)據(jù)傳輸給Reduce節(jié)點(diǎn)13。Reduce節(jié)點(diǎn)13需要讀取數(shù)據(jù)時(shí),向Shuffle節(jié)點(diǎn)12發(fā)送讀寫請(qǐng)求。由于Reduce節(jié)點(diǎn)13需要讀取的數(shù)據(jù)存儲(chǔ)在Map節(jié)點(diǎn)11上,因此Reduce節(jié)點(diǎn)13發(fā)送的讀寫請(qǐng)求中攜帶有Map節(jié)點(diǎn)11的標(biāo)識(shí)信息。若Shuffle節(jié)點(diǎn)12與多個(gè)Map節(jié)點(diǎn)11連接時(shí),該讀寫請(qǐng)求中攜帶的Map節(jié)點(diǎn)11的標(biāo)識(shí)信息是作為目標(biāo)Map節(jié)點(diǎn)的標(biāo)識(shí)信息,即需要讀取的數(shù)據(jù)所在的Map節(jié)點(diǎn)11的標(biāo)識(shí)信息。此外,Reduce節(jié)點(diǎn)13發(fā)送的讀寫請(qǐng)求中還攜帶有該Reduce節(jié)點(diǎn)13的Reduce節(jié)點(diǎn)標(biāo)識(shí)信息。Reduce節(jié)點(diǎn)標(biāo)識(shí)信息的作用是供Map節(jié)點(diǎn)11查找對(duì)應(yīng)的目標(biāo)數(shù)據(jù)。Shuffle節(jié)點(diǎn)12在從Reduce節(jié)點(diǎn)13接收到該讀寫請(qǐng)求之后,根據(jù)該讀寫請(qǐng)求中的Map節(jié)點(diǎn)11的標(biāo)識(shí)信息,可以確定出需要將該讀寫請(qǐng)求發(fā)送給哪個(gè)Map節(jié)點(diǎn)11,即確定出目標(biāo)Map節(jié)點(diǎn)。進(jìn)而,將該讀寫請(qǐng)求發(fā)送給標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn)11。Map節(jié)點(diǎn)11中預(yù)先存儲(chǔ)有一個(gè)或多個(gè)Reduce節(jié)點(diǎn)13與目標(biāo)數(shù)據(jù)的對(duì)應(yīng)關(guān)系,從而Map節(jié)點(diǎn)11在從Shuffle節(jié)點(diǎn)12接收到該讀寫請(qǐng)求之后,根據(jù)接收到的讀寫請(qǐng)求中攜帶的Reduce節(jié)點(diǎn)標(biāo)識(shí)信息,即可查找到該Reduce節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Reduce節(jié)點(diǎn)13需要讀取的目標(biāo)數(shù)據(jù)。Map節(jié)點(diǎn)11在其所存儲(chǔ)的數(shù)據(jù)中讀取該目標(biāo)數(shù)據(jù),并將讀取到的目標(biāo) 數(shù)據(jù)返回給Shuffle節(jié)點(diǎn)12,以供Shuffle節(jié)點(diǎn)12將該目標(biāo)數(shù)據(jù)返回給Reduce節(jié)點(diǎn)13。具體的,Map節(jié)點(diǎn)11根據(jù)接收到的讀寫請(qǐng)求中的Reduce節(jié)點(diǎn)標(biāo)識(shí)信息,查詢存儲(chǔ)數(shù)據(jù)的分區(qū)信息,解析出該Reduce節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的目標(biāo)數(shù)據(jù)在Map節(jié)點(diǎn)11中存儲(chǔ)的起始位置和偏移量。通過(guò)起始位置和偏移量能夠在一個(gè)Map節(jié)點(diǎn)上定位出相應(yīng)的數(shù)據(jù)。經(jīng)過(guò)上述流程之后,Reduce節(jié)點(diǎn)13能夠從Map節(jié)點(diǎn)11讀取到相應(yīng)的數(shù)據(jù)。Shuffle節(jié)點(diǎn)12在將讀寫請(qǐng)求發(fā)送給Map節(jié)點(diǎn)11之后,若等待一個(gè)預(yù)設(shè)的時(shí)間閾值之后,仍未接收到Shuffle節(jié)點(diǎn)12返回的目標(biāo)數(shù)據(jù),則Shuffle節(jié)點(diǎn)12判斷出該讀寫請(qǐng)求沒(méi)有發(fā)送成功。相應(yīng)地,Shuffle節(jié)點(diǎn)12可以繼續(xù)執(zhí)行其他操作,繼續(xù)將接收到的其他的讀寫請(qǐng)求發(fā)送給相應(yīng)的Map節(jié)點(diǎn)11,并等待一個(gè)預(yù)設(shè)的時(shí)間長(zhǎng)度結(jié)束之后,再次將該未發(fā)送成功的讀寫請(qǐng)求發(fā)送給對(duì)應(yīng)的Map節(jié)點(diǎn)11。本發(fā)明實(shí)施例提供的MapReduce系統(tǒng),將Shuffle從Reduce Task中分離出來(lái),將Shuffle Task作為獨(dú)立的節(jié)點(diǎn),當(dāng)Reduce節(jié)點(diǎn)需要從Map節(jié)點(diǎn)讀取數(shù)據(jù)時(shí),可以通過(guò)向Shuffle節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,通過(guò)Shuffle節(jié)點(diǎn)從Map節(jié)點(diǎn)讀取相應(yīng)的數(shù)據(jù),由于新創(chuàng)建的Shuffle節(jié)點(diǎn)保持了與原Reduce節(jié)點(diǎn)中的Shuffle過(guò)程相同的功能,使得MapReduce系統(tǒng)的功能沒(méi)有缺失;在將Shuffle節(jié)點(diǎn)作為獨(dú)立的節(jié)點(diǎn)從Reduce節(jié)點(diǎn)中分離出來(lái)之后,在對(duì)各節(jié)點(diǎn)進(jìn)行資源分配時(shí),可以針對(duì)Shuffle節(jié)點(diǎn)和Reduce節(jié)點(diǎn)各自的資源需求進(jìn)行分配,與為原有的包括Shuffle過(guò)程的Reduce節(jié)點(diǎn)分配資源的方式相比,有效地提高了MapReduce系統(tǒng)中CPU資源和網(wǎng)絡(luò)帶寬資源等資源的利用率,并且提高了系統(tǒng)的性能。進(jìn)一步地,在上述實(shí)施例的基礎(chǔ)上,所述Map節(jié)點(diǎn)11還可以用于將從一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)12分別接收到的讀寫請(qǐng)求,放入緩存隊(duì)列中;根據(jù)各讀寫請(qǐng)求中對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,對(duì)所述緩存隊(duì)列中的各讀寫請(qǐng)求進(jìn)行排序,獲得讀取次序;根據(jù)所述讀取次序,將各目標(biāo)數(shù)據(jù)分別通過(guò)發(fā)送對(duì)應(yīng)讀寫請(qǐng)求對(duì)應(yīng)的Shuffle節(jié)點(diǎn)12返回給相應(yīng)的Reduce 節(jié)點(diǎn) 13。在本發(fā)明各實(shí)施例中的MapReduce系統(tǒng)中可以包括一個(gè)或多個(gè)Map節(jié)點(diǎn)11、一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)12以及一個(gè)或多個(gè)Reduce節(jié)點(diǎn)13。一個(gè)Shuffle節(jié)點(diǎn)12在面向Reduce節(jié)點(diǎn)13側(cè),可以與一個(gè)或多個(gè)Reduce節(jié)點(diǎn)13連接,在面向Map節(jié)點(diǎn)11側(cè),可以與一個(gè)或多個(gè)Map節(jié)點(diǎn)11連接;一個(gè)Map節(jié)點(diǎn)11可以與一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)12連接。通過(guò)上述實(shí)施例可知,一個(gè)Shuffle節(jié)點(diǎn)12與多個(gè)Map節(jié)點(diǎn)11連接時(shí),根據(jù)讀寫請(qǐng)求中所攜帶的Map節(jié)點(diǎn)11的標(biāo)識(shí)信息,確定將該讀寫請(qǐng)求發(fā)送給哪個(gè)Map節(jié)點(diǎn)11。相應(yīng)地,Map節(jié)點(diǎn)11將相應(yīng)的數(shù)據(jù)返回給該Shuffle節(jié)點(diǎn)12。—個(gè)Map節(jié)點(diǎn)11與一個(gè)Shuffle節(jié)點(diǎn)12連接時(shí),根據(jù)Shuffle節(jié)點(diǎn)12發(fā)送的讀寫請(qǐng)求中攜帶的數(shù)據(jù)信息,讀取相應(yīng)的數(shù)據(jù),并返回給Shuffle節(jié)點(diǎn)12。一個(gè)Map節(jié)點(diǎn)11與多個(gè)Shuffle節(jié)點(diǎn)12連接時(shí),該Map節(jié)點(diǎn)11可能接收到來(lái)自多個(gè)Shuffle節(jié)點(diǎn)12的讀寫請(qǐng)求。目前的MapReduce系統(tǒng)中,Reduce Task啟動(dòng)后會(huì)執(zhí)行Shuffle過(guò)程,向所有的Map節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,以讀取Reduce Task所需要的數(shù)據(jù)。因?yàn)椴煌腞educe Task啟動(dòng)后,分別發(fā)送讀寫請(qǐng)求是相互獨(dú)立的過(guò)程,對(duì)同一個(gè)Map節(jié)點(diǎn)而言,接收到來(lái)自于不同ReduceTask的讀寫請(qǐng)求是近乎隨機(jī)的過(guò)程。Map節(jié)點(diǎn)會(huì)按照接收到的讀寫請(qǐng)求的順序?yàn)镽educeTask讀取數(shù)據(jù)并發(fā)送到Reduce節(jié)點(diǎn)。由于Map節(jié)點(diǎn)從Reduce Task的讀寫請(qǐng)求中解析出來(lái)的數(shù)據(jù)的分區(qū)的起始位置和偏移量是各不相同的,因此Map節(jié)點(diǎn)從磁盤讀寫數(shù)據(jù)時(shí)是近乎隨機(jī)的過(guò)程,導(dǎo)致大量的磁盤尋道尋址,在讀取數(shù)據(jù)效率方面存在不足。而本發(fā)明實(shí)施例中的Map節(jié)點(diǎn)11從多個(gè)Shuffle節(jié)點(diǎn)12接收到讀寫請(qǐng)求后,并不立即將讀寫請(qǐng)求中所請(qǐng)求讀寫的數(shù)據(jù)返回給相應(yīng)的Shuffle節(jié)點(diǎn)12,而是將接收到的讀寫請(qǐng)求,放入緩存隊(duì)列中。其中,可以預(yù)先設(shè)定將預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)接收到的讀寫請(qǐng)求放入緩存隊(duì)列中,并在該時(shí)間長(zhǎng)度結(jié)束之后,將該時(shí)間長(zhǎng)度內(nèi)的各讀寫請(qǐng)求所請(qǐng)求讀取的數(shù)據(jù)返回給相應(yīng)的Shuffle節(jié)點(diǎn)12 ;或者,還可以采用其他策略控制存入緩存隊(duì)列中的讀寫請(qǐng)求的數(shù)量。若根據(jù)預(yù)設(shè)的策略,緩存隊(duì)列中僅有一個(gè)讀寫請(qǐng)求,則不需要進(jìn)行排序,按照該策略進(jìn)行后續(xù)操作即可。若緩存隊(duì)列中的讀寫請(qǐng)求為多個(gè),則需要對(duì)緩存隊(duì)列中的讀寫請(qǐng)求進(jìn)行排序。具體的,由于一個(gè)Map節(jié)點(diǎn)11接收到的多個(gè)讀寫請(qǐng)求中分別攜帶有Reduce節(jié)點(diǎn)標(biāo)識(shí)信息,因此根據(jù)各Reduce節(jié)點(diǎn)標(biāo)識(shí)信息可以查詢到對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,即各目標(biāo)數(shù)據(jù)在Map節(jié)點(diǎn)11中存儲(chǔ)的起始位置和偏移量。根據(jù)各目標(biāo)數(shù)據(jù)的存儲(chǔ)位置的先后順序,對(duì)各讀寫請(qǐng)求進(jìn)行排序,也就是說(shuō),將各讀寫請(qǐng)求重新按照需要讀取的目標(biāo)數(shù)據(jù)的存儲(chǔ)位置進(jìn)行排序,獲得讀取次序。從而,Map節(jié)點(diǎn)11根據(jù)該讀取次序讀取數(shù)據(jù)時(shí),相當(dāng)于依據(jù)目標(biāo)數(shù)據(jù)在Map節(jié)點(diǎn)11上存儲(chǔ)的先后順序讀取的。由于現(xiàn)有技術(shù)中的MapReduce系統(tǒng),Map節(jié)點(diǎn)11按照從Reduce節(jié)點(diǎn)13接收讀寫請(qǐng)求的先后順序,從磁盤中讀取目標(biāo)數(shù)據(jù),由于目標(biāo)數(shù)據(jù)的位置可能是隨機(jī)的,即目標(biāo)數(shù)據(jù)的先后順序可能并非按照數(shù)據(jù)的原始存儲(chǔ)順序,會(huì)導(dǎo)致隨機(jī)讀寫次數(shù)較多,磁盤尋道、尋址時(shí)間增長(zhǎng),磁盤的讀寫性能下降,使得讀寫效率和數(shù)據(jù)傳輸?shù)臅r(shí)間被延長(zhǎng),Reduce Task和MapReduce Job的整體執(zhí)行時(shí)間被延長(zhǎng),其中,MapReduce Job是指MapReduce系統(tǒng)中被執(zhí)行的一個(gè)整體的作業(yè)。而本發(fā)明各實(shí)施例中的讀取方式,減少了由于隨機(jī)式讀取而導(dǎo)致對(duì)磁頭位置的切換過(guò)于頻繁的情況發(fā)生,提高了讀寫效率。Map節(jié)點(diǎn)11按照獲得的讀取次序讀取各目標(biāo)數(shù)據(jù)之后,根據(jù)該讀取次序,依次將讀取到的各讀寫請(qǐng)求中數(shù)據(jù)信息對(duì)應(yīng)的目標(biāo)數(shù)據(jù),發(fā)送給各讀寫請(qǐng)求所對(duì)應(yīng)的Shuffle節(jié)點(diǎn)12。Map節(jié)點(diǎn)11將目標(biāo)數(shù)據(jù)發(fā)送給Shuffle節(jié)點(diǎn)12時(shí),可以采用讀取到即發(fā)送出去的 方式。Shuffle節(jié)點(diǎn)12在從Map節(jié)點(diǎn)11接收到目標(biāo)數(shù)據(jù)之后,將各目標(biāo)數(shù)據(jù)分別發(fā)送給相應(yīng)的Reduce節(jié)點(diǎn)13。本發(fā)明實(shí)施例提供的MapReduce系統(tǒng)中,Map節(jié)點(diǎn)在從一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)接收到讀寫請(qǐng)求之后,根據(jù)各讀寫請(qǐng)求中的Reduce節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,獲得讀取次序,進(jìn)而根據(jù)該讀取次序,讀取各目標(biāo)數(shù)據(jù),并將讀取到的目標(biāo)數(shù)據(jù)依次通過(guò)讀寫請(qǐng)求所對(duì)應(yīng)的Shuffle節(jié)點(diǎn)發(fā)送給相應(yīng)的Reduce節(jié)點(diǎn),有效地減少了從磁盤中讀取目標(biāo)數(shù)據(jù)時(shí)切換磁頭的次數(shù),提高了整個(gè)系統(tǒng)的讀寫性能和效率。在上述各實(shí)施例的基礎(chǔ)上,一種可選的實(shí)施方式為,所述Map節(jié)點(diǎn)根據(jù)所述讀取次序,將等待時(shí)間小于或等于時(shí)間閾值的讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),分別通過(guò)發(fā)送對(duì)應(yīng)的讀寫請(qǐng)求的Shuffle節(jié)點(diǎn)返回給相應(yīng)的Reduce節(jié)點(diǎn)。具體的,所述Map節(jié)點(diǎn)11在從一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)12分別接收到的讀寫請(qǐng) 求之后,將各讀寫請(qǐng)求放入所述緩存隊(duì)列中。Map節(jié)點(diǎn)11在對(duì)各讀寫請(qǐng)求進(jìn)行排序之后,根據(jù)所獲得的讀取次序,將目標(biāo)數(shù)據(jù)分別發(fā)送給相應(yīng)的Shuffle節(jié)點(diǎn)12。在對(duì)每個(gè)目標(biāo)數(shù)據(jù)進(jìn)行發(fā)送之前,還需要判斷該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的讀寫請(qǐng)求是否超時(shí),即判斷當(dāng)前時(shí)間點(diǎn)與接收到該讀寫請(qǐng)求的時(shí)間點(diǎn)之間的等待時(shí)間,是否小于或等于預(yù)設(shè)的時(shí)間閾值。若讀寫請(qǐng)求的等待時(shí)間大于該時(shí)間閾值,則判斷該讀寫請(qǐng)求已超時(shí);若讀寫請(qǐng)求的等待時(shí)間小于或等于該時(shí)間閾值,則判斷該讀寫請(qǐng)求未超時(shí)。在對(duì)目標(biāo)數(shù)據(jù)進(jìn)行發(fā)送時(shí),若判斷出目標(biāo)數(shù)據(jù)對(duì)應(yīng)的讀寫請(qǐng)求已超時(shí),則不對(duì)該目標(biāo)數(shù)據(jù)進(jìn)行發(fā)送;若判斷出目標(biāo)數(shù)據(jù)對(duì)應(yīng)的讀寫請(qǐng)求未超時(shí),則將該目標(biāo)數(shù)據(jù)發(fā)送給相應(yīng)的Shuffle節(jié)點(diǎn)12。其中,對(duì)于已超時(shí)的讀寫請(qǐng)求,可以采用與現(xiàn)有技術(shù)中類似的實(shí)現(xiàn)方式,例如,通過(guò)返回通知消息的方式,告知相應(yīng)的Shuffle節(jié)點(diǎn)12和/或Reduce節(jié)點(diǎn)13,以使Shuffle節(jié)點(diǎn)12和/或Reduce節(jié)點(diǎn)13重新發(fā)送讀寫請(qǐng)求等。本發(fā)明實(shí)施例提供的MapReduce系統(tǒng),將接收到的讀寫請(qǐng)求中未超時(shí)的讀寫請(qǐng)求加入緩存隊(duì)列中,以使得緩存隊(duì)列中的讀寫請(qǐng)求均為未超時(shí)的,能夠保證讀寫請(qǐng)求的有效性和正確性,提供整個(gè)系統(tǒng)的讀寫性能和效率。圖2為本發(fā)明提供的MapReduce系統(tǒng)另一實(shí)施例的結(jié)構(gòu)示意圖,如圖2所示,在上述各實(shí)施例的基礎(chǔ)上,該系統(tǒng)還可以包括Master節(jié)點(diǎn)14。Master節(jié)點(diǎn)14,用于對(duì)所述Map節(jié)點(diǎn)11、所述Shuffle節(jié)點(diǎn)12和所述Reduce進(jìn)行控制。Shuffle節(jié)點(diǎn)12是從現(xiàn)有技術(shù)中所采用的Reduce節(jié)點(diǎn)13中分離出來(lái)的,相應(yīng)地,本發(fā)明各實(shí)施例中的Master節(jié)點(diǎn)14不僅能夠?qū)ap節(jié)點(diǎn)11和Reduce節(jié)點(diǎn)13進(jìn)行控制,還能夠?qū)huffle節(jié)點(diǎn)12進(jìn)行控制。其中,本發(fā)明各實(shí)施例中的Reduce節(jié)點(diǎn)13是去掉了 Shuffle功能后的Reduce節(jié)點(diǎn)13。其中,Master節(jié)點(diǎn)14在MapReduce系統(tǒng)中由JobTracker. java 實(shí)現(xiàn)。由于MapReduce系統(tǒng)可以構(gòu)建的計(jì)算機(jī)集群上,因此,各節(jié)點(diǎn)在計(jì)算機(jī)集群中可以有多種存在方式。一種可選的實(shí)施方式為,Master節(jié)點(diǎn)14可以位于一臺(tái)獨(dú)立的計(jì)算機(jī)上;一個(gè)或多個(gè)Map節(jié)點(diǎn)11可以位于一臺(tái)或多臺(tái)計(jì)算機(jī)上,也就是說(shuō),一臺(tái)計(jì)算機(jī)上可以有一個(gè)或多個(gè)Map節(jié)點(diǎn)11 ;Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13可以位于同一臺(tái)計(jì)算機(jī)上,其中,一臺(tái)計(jì)算機(jī)上可以有一個(gè)Shuffle節(jié)點(diǎn)12以及與該Shuffle節(jié)點(diǎn)12連接的一個(gè)或多個(gè)Reduce節(jié)點(diǎn)13,在包括一個(gè)或多個(gè)Reduce節(jié)點(diǎn)13的計(jì)算機(jī)上,需要相應(yīng)地包括一個(gè)Shuffle 節(jié)點(diǎn) 12。。一種可選的實(shí)施方式為,所述Shuffle節(jié)點(diǎn)12還用于,在所述MapReduce系統(tǒng)接收到待執(zhí)行的MapReduce作業(yè)之后,啟動(dòng)進(jìn)入工作狀態(tài),直至該MapReduce作業(yè)執(zhí)行完畢之后,Shuffle節(jié)點(diǎn)12結(jié)束工作。在目前的MapReduce系統(tǒng)中,由于Shuffle過(guò)程為Reduce Task中的一部分功能,因此,一般在Reduce Task啟動(dòng)后,啟動(dòng)Shuff Ie功能,在該ReduceTask完成操作后,相應(yīng)的Shuffle功能即被關(guān)閉,待Reduce Task再次啟動(dòng)時(shí),再次啟動(dòng)Shuffle功能。而本發(fā)明各實(shí)施例中的Shuffle節(jié)點(diǎn)12是作為獨(dú)立的節(jié)點(diǎn)存在的,因此,在MapReduce系統(tǒng)的計(jì)算機(jī)集群?jiǎn)?dòng)并接收到MapReduce作業(yè)后,Shuffle節(jié)點(diǎn)12即進(jìn)入啟動(dòng)狀態(tài),并保持運(yùn)行的工作狀態(tài)。也就是說(shuō),Shuffle節(jié)點(diǎn)12作為提供數(shù)據(jù)傳輸功能的公共服務(wù),類似后臺(tái)進(jìn)程而存在,即與程序在后臺(tái)運(yùn)行時(shí)類似的工作狀態(tài)。對(duì)于多個(gè)Reduce節(jié)點(diǎn)13對(duì)應(yīng)同一個(gè)Shuff Ie節(jié)點(diǎn)12的情況,將Shuffle節(jié)點(diǎn)12設(shè)置為后臺(tái)進(jìn)程的工作狀態(tài),使得Shuffle節(jié)點(diǎn)12不 會(huì)因?yàn)槠渲幸粋€(gè)Reduce節(jié)點(diǎn)13執(zhí)行完畢而隨之關(guān)閉,保證了 Shuffle節(jié)點(diǎn)12具有較少的被啟動(dòng)和被關(guān)閉的次數(shù)。對(duì)Shuffle節(jié)點(diǎn)12的關(guān)閉的方法,可以為由Master節(jié)點(diǎn)14對(duì)其進(jìn)行關(guān)閉,一般在MapReduce作業(yè)執(zhí)行結(jié)束后,關(guān)閉該Shuffle節(jié)點(diǎn)。將Shuffle節(jié)點(diǎn)12設(shè)置為在啟動(dòng)后即進(jìn)入工作狀態(tài)的方式,可以減少頻繁關(guān)閉及啟動(dòng)該節(jié)點(diǎn)的操作,有利于提高系統(tǒng)的性能和讀取效率?!N可選的實(shí)施方式為,所述Shuffle節(jié)點(diǎn)12可以與多個(gè)Reduce節(jié)點(diǎn)13連接。相應(yīng)地,在ShuffIe節(jié)點(diǎn)12中增加用于管理與多個(gè)Reduce節(jié)點(diǎn)13通信的功能模塊(ReduceManager),以對(duì)該Shuffle節(jié)點(diǎn)12與各Reduce節(jié)點(diǎn)13之間的數(shù)據(jù)傳輸及網(wǎng)絡(luò)連接進(jìn)行管理。進(jìn)一步地,在上述實(shí)施例的基礎(chǔ)上,所述Shuffle節(jié)點(diǎn)12還可以用于,周期性地將從各Reduce節(jié)點(diǎn)13接收到的讀寫請(qǐng)求中攜帶有相同的Map節(jié)點(diǎn)標(biāo)識(shí)信息的多個(gè)讀寫請(qǐng)求,封裝為一條讀寫請(qǐng)求,并將封裝后的讀寫請(qǐng)求發(fā)送給所述相同的Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn)11。在Shuffle節(jié)點(diǎn)12與多個(gè)Reduce節(jié)點(diǎn)13連接的情況下,若多個(gè)Reduce節(jié)點(diǎn)13發(fā)送的讀寫請(qǐng)求中所攜帶的Map節(jié)點(diǎn)11的標(biāo)識(shí)信息相同,貝U表示該多個(gè)Reduce節(jié)點(diǎn)13需要從同一個(gè)Map節(jié)點(diǎn)11讀取數(shù)據(jù),因此,Shuffle節(jié)點(diǎn)12可以分別將該多個(gè)Reduce節(jié)點(diǎn)13的讀寫請(qǐng)求發(fā)送給該Map節(jié)點(diǎn)11,也可以將該多個(gè)Reduce節(jié)點(diǎn)13的讀寫請(qǐng)求封裝在一條讀寫請(qǐng)求中,發(fā)送給該Map節(jié)點(diǎn)11。為了避免Shuffle節(jié)點(diǎn)12消耗較長(zhǎng)時(shí)間,以等待接收多個(gè)Reduce節(jié)點(diǎn)13發(fā)送的讀寫請(qǐng)求,在Shuffle節(jié)點(diǎn)12中可以周期性地將當(dāng)前周期內(nèi)發(fā)往同一 Map節(jié)點(diǎn)11的讀寫請(qǐng)求,封裝成一條讀寫請(qǐng)求。進(jìn)一步地,一種可選的實(shí)施方式為,所述Master節(jié)點(diǎn)14還可以用于在所述Reduce節(jié)點(diǎn)13所屬計(jì)算機(jī)的系統(tǒng)資源占用率大于或等于預(yù)設(shè)占用率閾值時(shí),控制所述Reduce節(jié)點(diǎn)13進(jìn)入等待工作狀態(tài),直至所述系統(tǒng)資源占用率小于所述占用率閾值或者預(yù)設(shè)等待的時(shí)間長(zhǎng)度結(jié)束時(shí),恢復(fù)所述Reduce節(jié)點(diǎn)為工作狀態(tài)。其中,系統(tǒng)資源占用率可以為CPU資源占用率或者內(nèi)存資源占用率,相應(yīng)地占用率閾值可以為CPU資源占用率閾值或者內(nèi)存資源占用率閾值。由于每個(gè)Reduce節(jié)點(diǎn)13都是通過(guò)Shuffle節(jié)點(diǎn)12連接到Map節(jié)點(diǎn)11的,當(dāng)Map節(jié)點(diǎn)11向Reduce節(jié)點(diǎn)13返回?cái)?shù)據(jù)時(shí),需要先經(jīng)過(guò)Shuffle節(jié)點(diǎn)12,由于Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13都在Master節(jié)點(diǎn)14的控制下工作,因此,Master節(jié)點(diǎn)14可以控制Reduce節(jié)點(diǎn)13在接收到Shuffle節(jié)點(diǎn)12的數(shù)據(jù)之后立即進(jìn)行處理,或者等待一段時(shí)間之后再進(jìn)行處理。Shuffle節(jié)點(diǎn)12主要占用網(wǎng)絡(luò)帶寬資源,Reduce節(jié)點(diǎn)13主要占用CPU資源。Master節(jié)點(diǎn)14會(huì)對(duì)各Reduce節(jié)點(diǎn)13所屬的計(jì)算機(jī)的系統(tǒng)資源占用率 的大小進(jìn)行判斷。若判斷出Reduce節(jié)點(diǎn)13所屬的計(jì)算機(jī)的系統(tǒng)資源占用率大于或等于預(yù)設(shè)的占用率閾值,則判定該Reduce節(jié)點(diǎn)13的系統(tǒng)資源不足。在這樣的情況下,Master節(jié)點(diǎn)14可以控制該Reduce節(jié)點(diǎn)13進(jìn)入等待工作狀態(tài),即對(duì)于從Shuffle節(jié)點(diǎn)12接收到的數(shù)據(jù)暫時(shí)不進(jìn)行處理。Master節(jié)點(diǎn)14在等待一預(yù)設(shè)的時(shí)間長(zhǎng)度結(jié)束之后,再將該Reduce節(jié)點(diǎn)13恢復(fù)為正常的工作狀態(tài),對(duì)從Shuffle節(jié)點(diǎn)12接收到的數(shù)據(jù)進(jìn)行相應(yīng)的處理?;蛘撸琈aster節(jié)點(diǎn)14在檢測(cè)到該Reduce節(jié)點(diǎn)13所屬的計(jì)算機(jī)的系統(tǒng)資源的占用率小于該占用率閾值之后,再將該Reduce節(jié)點(diǎn)13恢復(fù)為正常的工作狀態(tài),對(duì)從Shuffle節(jié)點(diǎn)12接收到的數(shù)據(jù)進(jìn)行相應(yīng)的處理。若判斷出Reduce節(jié)點(diǎn)13所屬的計(jì)算機(jī)的系統(tǒng)資源的占用率小于該占用率閾值,則判定該Reduce節(jié)點(diǎn)13的系統(tǒng)資源尚足。在這樣的情況下,無(wú)需將Reduce節(jié)點(diǎn)13設(shè)置為等待工作狀態(tài),可以控制該Reduce節(jié)點(diǎn)13對(duì)從Shuffle節(jié)點(diǎn)12接收到的數(shù)據(jù)進(jìn)行相應(yīng)的處理。目前的MapReduce系統(tǒng)中,Shuffle的功能是在Reduce節(jié)點(diǎn)13中實(shí)現(xiàn)的,Master節(jié)點(diǎn)14會(huì)控制各Reduce節(jié)點(diǎn)13中的Shuffle過(guò)程完成之后,再執(zhí)行Reduce節(jié)點(diǎn)13中的其他操作。也就是說(shuō),在這樣的情況下,Shuffle過(guò)程和Reduce過(guò)程是作為一個(gè)整體被Master節(jié)點(diǎn)14調(diào)度的,執(zhí)行Reduce過(guò)程之前需要先執(zhí)行Shuffle過(guò)程,并沒(méi)有將Shuffle過(guò)程、Reduce過(guò)程對(duì)計(jì)算機(jī)集群資源的需求情況的不同納入調(diào)度策略,也沒(méi)有根據(jù)當(dāng)前計(jì)算機(jī)集群的資源占用情況控制Shuffle過(guò)程及Reduce過(guò)程的執(zhí)行時(shí)間間隔。。而本發(fā)明各實(shí)施例中的MapReduce系統(tǒng)中,由于Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13是相互獨(dú)立的,Master節(jié)點(diǎn)14可以根據(jù)計(jì)算機(jī)集群資源占用情況單獨(dú)對(duì)Shuffle節(jié)點(diǎn)12或Reduce節(jié)點(diǎn)13進(jìn)行控制。例如,若當(dāng)前計(jì)算機(jī)集群的網(wǎng)絡(luò)帶寬空閑而CPU資源的占用率較高,可以調(diào)度Shuffle節(jié)點(diǎn)12執(zhí)行數(shù)據(jù)拷貝操作并且推遲Reduce節(jié)點(diǎn)13的執(zhí)行。另一方面,在計(jì)算機(jī)集群中存在多個(gè)MapReduce作業(yè)時(shí),也可能出現(xiàn)某個(gè)作業(yè)在Shuffle節(jié)點(diǎn)12中進(jìn)行處理時(shí),其他作業(yè)當(dāng)前在Reduce節(jié)點(diǎn)13中進(jìn)行處理的情況,從而實(shí)現(xiàn)了對(duì)于不同作業(yè)Shuffle節(jié)點(diǎn)12和Reduce節(jié)點(diǎn)13可以并行執(zhí)行。本發(fā)明實(shí)施例提供的MapReduce系統(tǒng),ShuffIe節(jié)點(diǎn)和Reduce節(jié)點(diǎn)可以由Master節(jié)點(diǎn)進(jìn)行控制,并且可以控制Reduce節(jié)點(diǎn)進(jìn)入正常工作狀態(tài)或等待工作狀態(tài),執(zhí)行不同作業(yè)的Shuffle節(jié)點(diǎn)和Reduce節(jié)點(diǎn)可以并行操作,有效地提升了系統(tǒng)的性能和對(duì)資源的利用率。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征 進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種映射化簡(jiǎn)MapReduce系統(tǒng),其特征在于,包括映射Map節(jié)點(diǎn)、混洗Shuffle節(jié)點(diǎn)和化簡(jiǎn)Reduce節(jié)點(diǎn);所述Reduce節(jié)點(diǎn),用于向所述Shuf fie節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,所述讀寫請(qǐng)求中攜帶有Map 節(jié)點(diǎn)標(biāo)識(shí)信息以及Reduce節(jié)點(diǎn)標(biāo)識(shí)信息;所述Shuffle節(jié)點(diǎn),用于根據(jù)從所述Reduce節(jié)點(diǎn)接收到的所述讀寫請(qǐng)求中的所述Map 節(jié)點(diǎn)標(biāo)識(shí)信息,將所述讀寫請(qǐng)求發(fā)送給所述Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn);所述Map節(jié)點(diǎn),用于根據(jù)從所述Shuffle節(jié)點(diǎn)接收到的所述讀寫請(qǐng)求中的所述Reduce 節(jié)點(diǎn)標(biāo)識(shí)信息和預(yù)設(shè)的Reduce節(jié)點(diǎn)與目標(biāo)數(shù)據(jù)的對(duì)應(yīng)關(guān)系,獲得所述讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并將所述目標(biāo)數(shù)據(jù)返回給所述Shuffle節(jié)點(diǎn),以供所述Shuffle節(jié)點(diǎn)將所述目標(biāo)數(shù)據(jù)返回給發(fā)送所述讀寫請(qǐng)求的Reduce節(jié)點(diǎn)。
2.根據(jù)權(quán)利要求1所述的MapReduce系統(tǒng),其特征在于,所述Map節(jié)點(diǎn)具體用于將從一個(gè)或多個(gè)Shuffle節(jié)點(diǎn)分別接收到的讀寫請(qǐng)求,放入緩存隊(duì)列中;根據(jù)各讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,對(duì)所述緩存隊(duì)列中的各讀寫請(qǐng)求進(jìn)行排序,獲得讀取次序;根據(jù)所述讀取次序,將各目標(biāo)數(shù)據(jù)分別通過(guò)發(fā)送對(duì)應(yīng)讀寫請(qǐng)求的Shuffle節(jié)點(diǎn)返回給相應(yīng)的Reduce節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的MapReduce系統(tǒng),其特征在于,所述Map節(jié)點(diǎn)根據(jù)所述讀取次序,將各目標(biāo)數(shù)據(jù)分別通過(guò)發(fā)送對(duì)應(yīng)讀寫請(qǐng)求的Shuffle節(jié)點(diǎn)返回給相應(yīng)的Reduce節(jié)點(diǎn)具體為所述Map節(jié)點(diǎn)根據(jù)所述讀取次序,將等待時(shí)間小于或等于時(shí)間閾值的讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),分別通過(guò)發(fā)送對(duì)應(yīng)的讀寫請(qǐng)求的Shuffle節(jié)點(diǎn)返回給相應(yīng)的Reduce節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1所述的MapReduce系統(tǒng),其特征在于,所述MapReduce系統(tǒng)還包括 Master節(jié)點(diǎn),用于對(duì)所述Map節(jié)點(diǎn)、所述Shuffle節(jié)點(diǎn)和所述Reduce進(jìn)行控制。
5.根據(jù)權(quán)利要求4所述的MapReduce系統(tǒng),其特征在于,所述Master節(jié)點(diǎn)還用于 在所述Reduce節(jié)點(diǎn)所屬計(jì)算機(jī)的系統(tǒng)資源占用率大于或等于預(yù)設(shè)占用率閾值時(shí),控制所述Reduce節(jié)點(diǎn)進(jìn)入等待工作狀態(tài),直至所述系統(tǒng)資源占用率小于所述占用率閾值或者預(yù)設(shè)等待的時(shí)間長(zhǎng)度結(jié)束時(shí),恢復(fù)所述Reduce節(jié)點(diǎn)為工作狀態(tài)。
6.根據(jù)權(quán)利要求1所述的MapReduce系統(tǒng),其特征在于,所述Shuffle節(jié)點(diǎn)與多個(gè) Reduce節(jié)點(diǎn)連接。
7.根據(jù)權(quán)利要求6所述的MapReduce系統(tǒng),其特征在于,所述Shuffle節(jié)點(diǎn)還用于周期性地將從各Reduce節(jié)點(diǎn)接收到的讀寫請(qǐng)求中攜帶有相同的Map節(jié)點(diǎn)標(biāo)識(shí)信息的多個(gè)讀寫請(qǐng)求,封裝為一條讀寫請(qǐng)求,并將封裝后的讀寫請(qǐng)求發(fā)送給所述相同的Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求1-7中任一所述的MapReduce系統(tǒng),其特征在于,所述Shuffle節(jié)點(diǎn)還用于在所述MapReduce系統(tǒng)接收到待執(zhí)行的MapReduce作業(yè)之后,啟動(dòng)進(jìn)入工作狀態(tài),直至所述MapReduce作業(yè)執(zhí)行完畢。
全文摘要
本發(fā)明提供一種MapReduce系統(tǒng),包括Map節(jié)點(diǎn)、Shuffle節(jié)點(diǎn)和Reduce節(jié)點(diǎn);Reduce節(jié)點(diǎn),用于向Shuffle節(jié)點(diǎn)發(fā)送讀寫請(qǐng)求,讀寫請(qǐng)求中攜帶有Map節(jié)點(diǎn)標(biāo)識(shí)信息以及Reduce節(jié)點(diǎn)標(biāo)識(shí)信息;Shuffle節(jié)點(diǎn),用于根據(jù)從Reduce節(jié)點(diǎn)接收到的讀寫請(qǐng)求中的Map節(jié)點(diǎn)標(biāo)識(shí)信息,將讀寫請(qǐng)求發(fā)送給Map節(jié)點(diǎn)標(biāo)識(shí)信息對(duì)應(yīng)的Map節(jié)點(diǎn);Map節(jié)點(diǎn),用于根據(jù)從Shuffle節(jié)點(diǎn)接收到的讀寫請(qǐng)求中的Reduce節(jié)點(diǎn)標(biāo)識(shí)信息和預(yù)設(shè)的Reduce節(jié)點(diǎn)與目標(biāo)數(shù)據(jù)的對(duì)應(yīng)關(guān)系,獲得讀寫請(qǐng)求對(duì)應(yīng)的目標(biāo)數(shù)據(jù),并將目標(biāo)數(shù)據(jù)返回給Shuffle節(jié)點(diǎn),以供Shuffle節(jié)點(diǎn)將目標(biāo)數(shù)據(jù)返回給發(fā)送讀寫請(qǐng)求的Reduce節(jié)點(diǎn),有效地提高了MapReduce系統(tǒng)中CPU資源和網(wǎng)絡(luò)帶寬資源等資源的利用率,并且提高了系統(tǒng)的性能。
文檔編號(hào)H04L29/08GK103023805SQ201210479119
公開(kāi)日2013年4月3日 申請(qǐng)日期2012年11月22日 優(yōu)先權(quán)日2012年11月22日
發(fā)明者林學(xué)練, 李金貴, 趙保敬, 隨培培, 胡春明 申請(qǐng)人:北京航空航天大學(xué)