基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法,該系統(tǒng)包括:流式計(jì)算模塊,所述流式計(jì)算模塊中包括若干Topology計(jì)算任務(wù);批處理計(jì)算模塊,所述批處理計(jì)算模塊中包括若干Job計(jì)算任務(wù);互操作模塊,所述互操作模塊分別與流式計(jì)算模塊和批處理計(jì)算模塊相連,互操作模塊包括注冊子單元和觸發(fā)子單元,注冊子單元用于搜集流式計(jì)算模塊上的Topology信息和批處理計(jì)算模塊上的Job信息,觸發(fā)子單元用于接收流式計(jì)算模塊或批處理計(jì)算模塊的互操作指令,并調(diào)用另一方的計(jì)算任務(wù)。本發(fā)明從系統(tǒng)級層面上實(shí)現(xiàn)了不同計(jì)算模塊之間的互操作,以較高地效率完成了不同計(jì)算模型系統(tǒng)上的邏輯單元的相互調(diào)用。
【專利說明】基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及流式計(jì)算和批處理計(jì)算的數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法。
【背景技術(shù)】
[0002]近些年來,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,現(xiàn)代社會進(jìn)入了大數(shù)據(jù)時代。社會上產(chǎn)生的數(shù)據(jù)量越來越大,導(dǎo)致計(jì)算機(jī)系統(tǒng)需要處理的數(shù)據(jù)量也日益增加。因此,對大數(shù)據(jù)的高效處理成為人們普遍關(guān)注的問題。一般而言,對于大數(shù)據(jù),分治法是一個比較有效的解決方法。這種算法把單一的計(jì)算任務(wù)分配到不同的計(jì)算機(jī)上進(jìn)行,這類算法的典型代表有批處理計(jì)算模型、流式計(jì)算模型等。
[0003]批處理計(jì)算模型的典型代表是Hadoop,一個分布式系統(tǒng)基礎(chǔ)架構(gòu)。它能夠?qū)⒋罅康牧畠r(jià)機(jī)器形成集群,從而用來提供分布式計(jì)算的服務(wù)。Hadoop其中的MapReduce計(jì)算模型采用分而治之的理念,從分布式文件系統(tǒng)HDFS中獲取數(shù)據(jù),將其按照大小分片,進(jìn)行分布式處理,獲得最終結(jié)果。雖然Hadoop在面臨海量數(shù)據(jù)時,具有吞吐量大的特點(diǎn),但是也對數(shù)據(jù)處理有以下要求:1)數(shù)據(jù)需要已經(jīng)存在在HDFS當(dāng)中;2)數(shù)據(jù)之間是少關(guān)聯(lián)的、盡可能無影響的。綜上所述,Hadoop適合大批量的數(shù)據(jù)處理,但是對于數(shù)據(jù)的實(shí)時計(jì)算并不合適。
[0004]流式計(jì)算模型有Esper、Streambase、HStreaming和YahooS4等,其中的典型代表是Twitter開源系統(tǒng)Storm, —個針對在線業(yè)務(wù)而存在的計(jì)算平臺。Storm提供了一組通用原語,可用于實(shí)時處理消息并更新數(shù)據(jù)庫;也可以被用來做“連續(xù)計(jì)算”,對數(shù)據(jù)流做連續(xù)查詢,在計(jì)算時就將結(jié)果以流的形式輸出給用戶;還可以被用于“分布式RPC”,以并行的方式運(yùn)行昂貴的運(yùn)算??偟膩碇v,Storm是一個簡單的編程模型,可以使用多種編程語言,擁有快速,可靠的消息處理能力的同時,也具備良好的容錯性和實(shí)時擴(kuò)展性。
[0005]但是隨著數(shù)據(jù)量的大規(guī)模增長和用戶需求的日益多樣化,實(shí)際需求中人們對數(shù)據(jù)的處理要求越來越高,單一的計(jì)算模型并不能獨(dú)立地承擔(dān)服務(wù)。我們可以透過一個例子來看:在針對海量數(shù)據(jù)進(jìn)行批處理計(jì)算時,可能需要獲取其中某個特定個體的實(shí)時情況;同樣地,在大數(shù)據(jù)進(jìn)行流式計(jì)算處理時,可能需要查詢某個特定個體的歷史記錄。在這種情況下,我們希望存在一種機(jī)制,使得批處理計(jì)算模型和流式計(jì)算模型能夠方便地進(jìn)行交互操作,減少轉(zhuǎn)換時的開銷,從而更好地提供數(shù)據(jù)處理服務(wù)。
[0006]從現(xiàn)有的計(jì)算模型來看,相比單一的集群,實(shí)時處理(Storm為代表)和批處理(Hadoop為代表)的結(jié)合具有很多優(yōu)勢:1)提供了巨大的彈性潛力。實(shí)時處理的負(fù)載一般不恒定,而且是不可預(yù)測的。實(shí)時處理和批處理搭配使用,實(shí)時處理需要資源時可以從批處理作業(yè)那里竊取,當(dāng)資源需求下降時再把資源換回去;2)實(shí)時處理和批處理兩者之間會共享數(shù)據(jù)。通過將實(shí)時處理系統(tǒng)放到物理上更接近數(shù)據(jù)源或者是同一流水線中其他組件的地方,可以減少網(wǎng)絡(luò)傳輸,進(jìn)而減少獲取數(shù)據(jù)的總開銷。到目前,與本發(fā)明相關(guān)的技術(shù)或者產(chǎn)品有 Spark Streaming、Yahoo Storm OnYARN> Twitter Summingbird 等。
[0007]SparkStreaming將流式計(jì)算分解成一系列短小的批處理作業(yè),從而在批處理計(jì)算引擎Spark的基礎(chǔ)上提供了對數(shù)據(jù)流的處理能力。Spark Streaming將輸入數(shù)據(jù)按照批處理指定的大小(如I秒)分成一段一段的離散化數(shù)據(jù),每一段數(shù)據(jù)都轉(zhuǎn)換成Spark中的彈性分布式數(shù)據(jù)集,然后將Spark Streaming中對離散化數(shù)據(jù)的變換操作變?yōu)镾park中對彈性分布式數(shù)據(jù)集的變換操作,將RDD經(jīng)過操作變成中間結(jié)果保存在內(nèi)存中。整個流式計(jì)算根據(jù)業(yè)務(wù)的需求可以對中間的結(jié)果進(jìn)行疊加,或者將其存儲到外部設(shè)備。
[0008]Storm On Yarn嘗試將Storm運(yùn)行在YARN上,相比于將Storm部署到一個獨(dú)立的集群中,這樣做帶來的好處有:1)彈性計(jì)算資源。將Storm運(yùn)行到Y(jié)ARN上后,Storm可與其他應(yīng)用程序(比如MapReduce批處理應(yīng)用程序)共享整個集群中的資源,這樣,當(dāng)Storm負(fù)載驟增時,可動態(tài)為它增加計(jì)算資源,而當(dāng)負(fù)載減小時,可釋放部分資源,從而將這些資源暫時分配給負(fù)載更重的批處理應(yīng)用程序。2)共享底層存儲。Storm可與運(yùn)行在YARN上的其他框架共享底層的一個HDFS存儲系統(tǒng),可避免多個集群帶來的維護(hù)成本,同時避免數(shù)據(jù)跨集群拷貝帶來的網(wǎng)絡(luò)開銷和時間延遲。3)支持多版本??赏瑫r將多個Storm版本運(yùn)行YARN上,避免一個版本一個集群帶來的維護(hù)成本。
[0009]Summingbird是最近由Twitter開源的一個流式計(jì)算模型和批處理計(jì)算模型的融合體。一個Summingbird項(xiàng)目既可以被用來做批處理,又可以用來做實(shí)時處理,這種作業(yè)聚合的方式達(dá)到了無縫整合平臺,減少切換開銷的目的。
[0010]Summingbird 的核心概念包括如下:l)Producer:Producer 是 Summingbird 的數(shù)據(jù)流抽象,用以傳遞給特定Platform做MapReduce流編譯。2) Platform:Platform實(shí)例可以用于任何流MapReduce庫的實(shí)現(xiàn),Summingbird庫包含了 Platform對Storm、Scalding及內(nèi)存處理的支持。3) Source =Source代表了一個數(shù)據(jù)的源,每個系統(tǒng)都對數(shù)據(jù)源有自己的定義,比如 Memory 平臺將 Source [T]定義為任何 TraversableOnce [T]。4) Store:Store 是Summingbird中流MapReduce進(jìn)行“reduce”操作的場所,Store包含了所有鍵對應(yīng)值聚合的快照。5) Sink:不同于Store, Sink允許你形成一個體現(xiàn)Producer值的非聚合流,sink是流而不是快照。6) Service:Service允許用戶在Producer流中當(dāng)前值上執(zhí)行“ lookup join”或者是“ leftjoin”,被連接的值可以是來自另一個Store的快照,也可以是另一個Sink的流,甚至來自一些其它的異步功能。7) Plan:Plan由Platform調(diào)用platform, plan (producer)產(chǎn)生,作為MapReduce流的最終實(shí)現(xiàn)。對于Storm來說,Plan就是個StormTopology實(shí)例,用戶可以通過Storm提供的方法執(zhí)行。對于Memory平臺來說,Plan就是個內(nèi)存Stream,包含了被傳遞Producer提供的輸出內(nèi)容。
[0011]現(xiàn)有的大數(shù)據(jù)分析系統(tǒng)在流式計(jì)算和批處理計(jì)算融合方面工作,是從以下方面進(jìn)行的。
[0012]I)第一種方式是在流式計(jì)算系統(tǒng)的基礎(chǔ)上,增加對批處理計(jì)算的支持。Storm的作者Nathan Marz最近在“How to beat the CAP theorem”一文中,提出數(shù)據(jù)處理可以通過一個簡單的公式來表達(dá):Query = Function (All Data)。數(shù)據(jù)系統(tǒng)就是要回答數(shù)據(jù)集問題的系統(tǒng),問題稱為Query。由于Query是針對所有數(shù)據(jù)上的函數(shù),所以加快函數(shù)執(zhí)行的方法就是預(yù)先準(zhǔn)備好這些Query,當(dāng)有新的數(shù)據(jù)產(chǎn)生時,就重新對所有數(shù)據(jù)執(zhí)行函數(shù)。這樣簡化問題后,基于批處理計(jì)算,除了結(jié)果需要滯后一段時間才能獲得外,Query總是可以被反復(fù)執(zhí)行。任何超過一段時間的數(shù)據(jù)已經(jīng)被計(jì)算進(jìn)入了批處理視圖中,所以剩下來要做的就是處理最近時間段的數(shù)據(jù)。為了處理最近幾個小時的數(shù)據(jù),需要一個實(shí)時系統(tǒng)和批處理系統(tǒng)同時運(yùn)行。這個實(shí)時系統(tǒng)在最近幾個小時的數(shù)據(jù)上執(zhí)行預(yù)計(jì)算查詢函數(shù)。要計(jì)算一個查詢函數(shù),需要查詢批處理視圖和實(shí)時視圖,并把它們合并起來以得到最終的數(shù)據(jù)。進(jìn)行實(shí)時計(jì)算的系統(tǒng)是Storm,它在數(shù)據(jù)流上進(jìn)行持續(xù)計(jì)算,并且對這種流式數(shù)據(jù)處理提供了有力保障。在批處理層僅需要考慮數(shù)據(jù)和數(shù)據(jù)上的查詢函數(shù),批處理層因此很好掌控。在實(shí)時層需要使用增量算法和復(fù)雜的NoSQL數(shù)據(jù)庫。把所有的復(fù)雜問題獨(dú)立到實(shí)時層中,這對系統(tǒng)的魯棒性、可靠性可以做出重要改進(jìn)。但是,在實(shí)際的實(shí)現(xiàn)中,通過建立簡單而同一的數(shù)據(jù)查詢函數(shù)并不是一件容易的事情。以往基于關(guān)系型的數(shù)據(jù)庫系統(tǒng)是建立在完整的關(guān)系模型上的數(shù)據(jù)處理系統(tǒng),所以應(yīng)對不同種類的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)是很難存在這樣的簡單函數(shù)模型。
[0013]2)第二種方法是從批處理計(jì)算的基礎(chǔ)入手,結(jié)合流式數(shù)據(jù)處理,比如通過修改MapReduce編程模型來進(jìn)行實(shí)時數(shù)據(jù)流處理。Facebook在SIGM0D2011上發(fā)表了利用HBase/Hadoop進(jìn)行實(shí)時處理數(shù)據(jù)的工作[Borthakur2011],通過一些實(shí)時性改造,讓批處理計(jì)算平臺也具備實(shí)時計(jì)算的能力。但是,效果并不理想。這是因?yàn)镸apReduce的編程框架為批處理做了高度優(yōu)化,系統(tǒng)典型地通過調(diào)度批量任務(wù)來操作靜態(tài)數(shù)據(jù),任務(wù)不是常駐服務(wù),數(shù)據(jù)也不是實(shí)時流入;而流式計(jì)算的典型范式之一是不確定數(shù)據(jù)到達(dá)速率的事件流流入系統(tǒng),系統(tǒng)處理能力必須與事件流量相匹配。這類基于MapReduce流式處理的缺點(diǎn)有三個方面:a)將輸入數(shù)據(jù)分隔成固定大小的片段,再由MapReduce平臺處理,處理的延遲與數(shù)據(jù)片段的長度、初始化處理任務(wù)的開銷成正比。片段之間的依賴管理更加復(fù)雜,最優(yōu)的分段大小取決于具體應(yīng)用;b)為了支持流式處理,MapReduce被改造成Pipeline的模式,而不是Reduce直接輸出。為了提高處理效率,中間結(jié)果只保存在內(nèi)存中。諸如此類改動使得原有的MapReduce框架的復(fù)雜度大大增加,不利于系統(tǒng)的維護(hù)和擴(kuò)展;c)用戶被迫使用MapReduce的接口來定義流式作業(yè),這使得用戶程序的可伸縮性降低。
[0014]3)第三種模式,關(guān)聯(lián)組合模式。以Twitter Summingbird舉例來說,它致力于解決現(xiàn)有方法遇到的實(shí)際問題:1)兩個不同系統(tǒng)中的兩組聚合邏輯必須保持同步;2)在每個系統(tǒng)和客戶端之間,鍵和值必須一致地進(jìn)行序列化;3)客戶端要負(fù)責(zé)從兩個數(shù)據(jù)存儲讀取數(shù)據(jù)、執(zhí)行最后的聚合并提供合并結(jié)果。Summingbird的混合模式可以讓Hadoop處理大多數(shù)的數(shù)據(jù),Storm則只處理那些Hadoop沒有處理過的實(shí)時數(shù)據(jù)。Summingbird要處理的數(shù)據(jù)同時來自Hadoop和Storm,和管道式地處理幾個不同的系統(tǒng)不一樣,它需要同時確保處理上的速度和準(zhǔn)確度。盡管Summingbird利用統(tǒng)一的編程接口來整合平臺,通用性好,可擴(kuò)展性強(qiáng),仍然存在在實(shí)際操作中執(zhí)行效率不夠理想的不足。
[0015]因此,針對上述技術(shù)問題,有必要提供一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法。
【發(fā)明內(nèi)容】
[0016]有鑒于此,本發(fā)明的目的在于提供一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)及方法,其交互層次由平臺級降低為任務(wù)級,從而可以從根本上提升交互操作的執(zhí)行效率。
[0017]為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供的技術(shù)方案如下:
[0018]一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括:[0019]流式計(jì)算模塊,所述流式計(jì)算模塊中包括若干Topology計(jì)算任務(wù);
[0020]批處理計(jì)算模塊,所述批處理計(jì)算模塊中包括若干Job計(jì)算任務(wù);
[0021]互操作模塊,所述互操作模塊分別與流式計(jì)算模塊和批處理計(jì)算模塊相連,互操作模塊包括注冊子單元和觸發(fā)子單元,注冊子單元用于搜集流式計(jì)算模塊上的Topology信息和批處理計(jì)算模塊上的Job信息,觸發(fā)子單元用于接收流式計(jì)算模塊或批處理計(jì)算模塊的互操作指令,并調(diào)用另一方的計(jì)算任務(wù)。
[0022]作為本發(fā)明的進(jìn)一步改進(jìn),所述Topology信息包括Topology的名稱、倉ll建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
[0023]作為本發(fā)明的進(jìn)一步改進(jìn),所述流式計(jì)算模塊采用Storm集群,批處理計(jì)算模塊采用Hadoop集群。
[0024]相應(yīng)地,一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理方法,所述方法包括:
[0025]S1、啟動方提出觸發(fā)請求,并與觸發(fā)子單元建立連接,所述啟動方為流式計(jì)算模塊或批處理計(jì)算模塊;
[0026]S2、啟動方將觸發(fā)請求和互操作信息發(fā)送給觸發(fā)子單元;
[0027]S3、觸發(fā)子單元與執(zhí)行方建立連接,所述執(zhí)行方為與啟動方對應(yīng)的批處理計(jì)算模塊或流式計(jì)算模塊;
[0028]S4、觸發(fā)子單元轉(zhuǎn)發(fā)觸發(fā)請求和互操作信息給執(zhí)行方;
[0029]S5、執(zhí)行方根據(jù)接收到的觸發(fā)請求和互操作信息啟動新的邏輯單元,開始執(zhí)行任務(wù)進(jìn)行數(shù)據(jù)處理。
[0030]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟SI前還包括:
[0031]SO、注冊子單元分析流式計(jì)算模塊和批處理計(jì)算模塊,搜集所有符合互操作條件的Topology計(jì)算任務(wù)和Job計(jì)算任務(wù)。
[0032]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟SO前還包括:
[0033]注冊子單元搜集流式計(jì)算模塊和批處理計(jì)算模塊中的互操作信息,生成相應(yīng)的注冊表。
[0034]作為本發(fā)明的進(jìn)一步改進(jìn),所述互操作信息包括流式計(jì)算模塊上Topology計(jì)算任務(wù)的Topology信息和批處理計(jì)算模塊上Job計(jì)算任務(wù)的Job信息。
[0035]作為本發(fā)明的進(jìn)一步改進(jìn),所述Topology信息包括Topology的名稱、倉ll建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
[0036]本發(fā)明具有以下有益效果:
[0037]本發(fā)明從系統(tǒng)級層面上實(shí)現(xiàn)了不同計(jì)算模塊之間的互操作,以較高地效率完成了不同計(jì)算模型系統(tǒng)上的邏輯單元的相互調(diào)用。
【專利附圖】
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0039]圖1為本發(fā)明中基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng)的模塊示意圖。
[0040]圖2為本發(fā)明一優(yōu)選實(shí)施方式中Storm中計(jì)算任務(wù)組成圖。
[0041]圖3為本發(fā)明一優(yōu)選實(shí)施方式中MapReduce計(jì)算模型中計(jì)算任務(wù)執(zhí)行圖。
[0042]圖4為本發(fā)明一優(yōu)選實(shí)施方式中互操作模塊示意圖。
【具體實(shí)施方式】
[0043]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0044]參圖1所示,本發(fā)明公開了一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng),其包括:
[0045]流式計(jì)算模塊10,流式計(jì)算模塊中包括若干Topology計(jì)算任務(wù);
[0046]批處理計(jì)算模塊20,所述批處理計(jì)算模塊中包括若干Job計(jì)算任務(wù);
[0047]其中,流式計(jì)算模塊10和批處理計(jì)算模塊20分別是兩個各自獨(dú)立的計(jì)算模型系統(tǒng)。
[0048]互操作模塊30,互操作模塊分別與流式計(jì)算模塊10和批處理計(jì)算模塊20相連,互操作模塊包括注冊子單元31和觸發(fā)子單元32。
[0049]其中,注冊子單元31負(fù)責(zé)搜集流式計(jì)算模塊上的Topology信息和批處理計(jì)算模塊上的Job信息;一旦有需要交互操作的需求產(chǎn)生(流式計(jì)算模型調(diào)用批處理計(jì)算模型某個Job計(jì)算任務(wù);或是批處理計(jì)算模型調(diào)用流式計(jì)算模型某個Topology計(jì)算任務(wù)),一方將會發(fā)出啟動指令到觸發(fā)子單元32,觸發(fā)子單元32會及時回應(yīng),調(diào)用另一方的基本計(jì)算任務(wù),從而實(shí)現(xiàn)互操作。本發(fā)明中Topology信息包括Topology的名稱、倉ll建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
[0050]優(yōu)選地,本發(fā)明所提出的互操作數(shù)據(jù)處理系統(tǒng)中流式計(jì)算模塊采用Storm集群,批處理計(jì)算模塊采用Hadoop集群,當(dāng)然在其他實(shí)施方式中也可以為其他集群。三個模塊功能簡述如下:
[0051](I)流式計(jì)算模塊:在Storm集群中,一個實(shí)時應(yīng)用的計(jì)算任務(wù)被打包作為Topology發(fā)布,Topology是由不同的Spouts和Bolts,通過數(shù)據(jù)流(Stream)連接起來的圖。一個Topology的內(nèi)部結(jié)構(gòu)圖如圖2所示。
[0052]在Storm中,Stream的概念是Topology內(nèi)唯一的,只能在Topology內(nèi)按照“發(fā)布-訂閱”方式在不同組件(Spout和Bolt)之間進(jìn)行單向的數(shù)據(jù)流動。
[0053](2)批處理計(jì)算模塊:在批處理計(jì)算架構(gòu)Hadoop上,一個代表客戶機(jī)在單個主系統(tǒng)上啟動的MapReduce應(yīng)用程序稱為JobTracker。它是Hadoop集群中惟一負(fù)責(zé)控制MapReduce應(yīng)用程序的系統(tǒng)。在應(yīng)用程序提交之后,將提供包含在HDFS中的輸入和輸出目錄。JobTracker使用文件塊信息(物理量和位置)確定如何創(chuàng)建其他TaskTracker從屬任務(wù)。MapReduce應(yīng)用程序被復(fù)制到每個出現(xiàn)輸入文件塊的節(jié)點(diǎn)。將為特定節(jié)點(diǎn)上的每個文件塊創(chuàng)建一個惟一的從屬任務(wù)。每個TaskTracker將狀態(tài)和完成信息報(bào)告給JobTracker。其架構(gòu)如圖3所示,
[0054](3)互操作模塊:該模塊根據(jù)需求劃分為注冊子單元和觸發(fā)子單元,具體架構(gòu)如圖4所示:
[0055]注冊子單元:該子單元主要負(fù)責(zé)對現(xiàn)有Topology和Job的名稱、倉Il建時間和權(quán)限統(tǒng)計(jì),生成相應(yīng)的注冊表。如果這些計(jì)算任務(wù)想要使用到互操作,它們必須在注冊子單元提前注冊。
[0056]觸發(fā)子單元:該子單元利用回調(diào)機(jī)制實(shí)現(xiàn)了互操作?;卣{(diào)機(jī)制是一種常見的設(shè)計(jì)模型,它把工作流內(nèi)的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供數(shù)據(jù),或者要求外部使用者提供數(shù)據(jù)。本單元將流式計(jì)算Topology的接口和批處理計(jì)算Job的接口分別統(tǒng)計(jì)并寫入回調(diào)函數(shù)表。一旦接到一方對另一方的調(diào)用指令后,能夠及時將消息與狀態(tài),通過子單元調(diào)用回調(diào)函數(shù)傳遞給另一方,從而啟動另一方的計(jì)算任務(wù)繼續(xù)進(jìn)行數(shù)據(jù)處理,實(shí)現(xiàn)系統(tǒng)級別的互操作。
[0057]本發(fā)明基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理方法包括:
[0058]S1、啟動方提出觸發(fā)請求,并與觸發(fā)子單元建立連接,所述啟動方為流式計(jì)算模塊或批處理計(jì)算模塊;
[0059]S2、啟動方將觸發(fā)請求和互操作信息發(fā)送給觸發(fā)子單元;
[0060]S3、觸發(fā)子單元與執(zhí)行方建立連接,所述執(zhí)行方為與啟動方對應(yīng)的批處理計(jì)算模塊或流式計(jì)算模塊;
[0061]S4、觸發(fā)子單元轉(zhuǎn)發(fā)觸發(fā)請求和互操作信息給執(zhí)行方;
[0062]S5、執(zhí)行方根據(jù)接收到的觸發(fā)請求和互操作信息啟動新的邏輯單元,開始執(zhí)行任務(wù)進(jìn)行數(shù)據(jù)處理。
[0063]本發(fā)明是針對兩種獨(dú)立計(jì)算系統(tǒng)和兩種獨(dú)立計(jì)算任務(wù)的互操作,因此觸發(fā)是雙向的??梢杂闪魇接?jì)算模塊Storm中的某個Topology出發(fā),通過觸發(fā)機(jī)制來啟動批處理計(jì)算模塊Hadoop中的某個Job ;亦可以由批處理計(jì)算模塊Hadoop中的某個Job出發(fā),通過觸發(fā)機(jī)制來調(diào)用流式計(jì)算模塊Storm中的某個Topology。
[0064]進(jìn)一步地,觸發(fā)之前還包括:
[0065]注冊子單元搜集流式計(jì)算模塊和批處理計(jì)算模塊中的互操作信息,生成相應(yīng)的注冊表;互操作信息包括流式計(jì)算模塊上Topology計(jì)算任務(wù)的Topology信息和批處理計(jì)算模塊上Job計(jì)算任務(wù)的Job信息。其中Topology信息包括Topology的名稱、倉ll建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
[0066]注冊子單元分析流式計(jì)算模塊和批處理計(jì)算模塊,搜集所有符合互操作條件的Topology計(jì)算任務(wù)和Job計(jì)算任務(wù)。
[0067]觸發(fā)方式如上述:啟動方提出觸發(fā)請求,并與觸發(fā)子單元建立連接;啟動方將觸發(fā)請求和必要信息發(fā)送給觸發(fā)子單元;觸發(fā)子單元與執(zhí)行方建立連接;觸發(fā)子單元轉(zhuǎn)發(fā)觸發(fā)請求和必要信息給執(zhí)行方;執(zhí)行方根據(jù)接收到的觸發(fā)請求和必要信息啟動新的邏輯單元,開始執(zhí)行任務(wù)。
[0068]通過上述方法,兩個獨(dú)立的模塊通過觸發(fā)子單元可以進(jìn)行交互通信;獨(dú)立模塊間彼此的觸發(fā)請求可以得到執(zhí)行。[0069]以下結(jié)合具體實(shí)施例對本發(fā)明作進(jìn)一步說明。
[0070]流式計(jì)算模塊中的計(jì)算單元Boltl希望通過觸發(fā)器TriggerJJnit來調(diào)用批處理計(jì)算模塊中的Jobl。Boltl首先與TriggerJJnit建立連接,并開啟線程執(zhí)行信息傳輸工作。
[0071]Boltl:
[0072]
【權(quán)利要求】
1.一種基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理系統(tǒng),其特征在于,所述系統(tǒng)包括: 流式計(jì)算模塊,所述流式計(jì)算模塊中包括若干Topology計(jì)算任務(wù); 批處理計(jì)算模塊,所述批處理計(jì)算模塊中包括若干Job計(jì)算任務(wù); 互操作模塊,所述互操作模塊分別與流式計(jì)算模塊和批處理計(jì)算模塊相連,互操作模塊包括注冊子單元和觸發(fā)子單元,注冊子單元用于搜集流式計(jì)算模塊上的Topology信息和批處理計(jì)算模塊上的Job信息,觸發(fā)子單元用于接收流式計(jì)算模塊或批處理計(jì)算模塊的互操作指令,并調(diào)用另一方的計(jì)算任務(wù)。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述Topology信息包括Topology的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述流式計(jì)算模塊采用Storm集群,批處理計(jì)算模塊采用Hadoop集群。
4.一種如權(quán)利要求1所述的基于流式計(jì)算和批處理計(jì)算的互操作數(shù)據(jù)處理方法,其特征在于,所述方法包括: 51、啟動方提出觸發(fā)請求,并與觸發(fā)子單元建立連接,所述啟動方為流式計(jì)算模塊或批處理計(jì)算模塊; 52、啟動方將觸發(fā)請求和互操作信息發(fā)送給觸發(fā)子單元; 53、觸發(fā)子單元與執(zhí)行方建立連接,所述執(zhí)行方為與啟動方對應(yīng)的批處理計(jì)算模塊或流式計(jì)算模塊; 54、觸發(fā)子單元轉(zhuǎn)發(fā)觸發(fā)請求和互操作信息給執(zhí)行方; 55、執(zhí)行方根據(jù)接收到的觸發(fā)請求和互操作信息啟動新的邏輯單元,開始執(zhí)行任務(wù)進(jìn)行數(shù)據(jù)處理。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟SI前還包括: SO、注冊子單元分析流式計(jì)算模塊和批處理計(jì)算模塊,搜集所有符合互操作條件的Topology計(jì)算任務(wù)和Job計(jì)算任務(wù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟SO前還包括: 注冊子單元搜集流式計(jì)算模塊和批處理計(jì)算模塊中的互操作信息,生成相應(yīng)的注冊表。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述互操作信息包括流式計(jì)算模塊上Topology計(jì)算任務(wù)的Topology信息和批處理計(jì)算模塊上Job計(jì)算任務(wù)的Job信息。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述Topology信息包括Topology的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì),Job信息包括Job的名稱、創(chuàng)建時間和權(quán)限統(tǒng)計(jì)。
【文檔編號】G06F9/46GK104008007SQ201410260493
【公開日】2014年8月27日 申請日期:2014年6月12日 優(yōu)先權(quán)日:2014年6月12日
【發(fā)明者】范小朋, 吳楠, 沈慧, 趙東輝, 須成忠 申請人:深圳先進(jìn)技術(shù)研究院