一種檢查調(diào)度任務(wù)前置條件的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及調(diào)度系統(tǒng)批量處理技術(shù),尤其涉及一種檢查調(diào)度任務(wù)前置條件的方法及裝置。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)的興起,互聯(lián)網(wǎng)公司的業(yè)務(wù)數(shù)據(jù)量逐年上升,因此各大互聯(lián)網(wǎng)公司都在內(nèi)部推行對大數(shù)據(jù)挖掘分析技術(shù),并且針對于核心業(yè)務(wù)系統(tǒng)建設(shè)數(shù)據(jù)倉庫。實質(zhì)上,數(shù)據(jù)倉庫是一個環(huán)境,不是一件產(chǎn)品,向用戶提供用于決策支持的當(dāng)前及歷史數(shù)據(jù)。在數(shù)據(jù)倉庫的建設(shè)中,基于數(shù)據(jù)倉庫的計算分為兩種:一種是即席計算,另一種是批量計算。即席計算,指由工作人員根據(jù)當(dāng)時執(zhí)行查詢或計算的實際情況和實際背景實時寫出的SQL語句或者計算算法,這種計算具有多變性、即時性的特征;批量計算,指每次執(zhí)行的計算都大致相同,唯一不同就是某些特定條件的查詢或者計算內(nèi)容不一樣,但整體邏輯仍然一致。
[0003]目前對于數(shù)據(jù)倉庫的計算,采用較多的仍是批量計算,對于批量計算,所采用的方式為:通過調(diào)度系統(tǒng)進(jìn)行定時或者以固定頻率來調(diào)度執(zhí)行計算任務(wù)。常見的批處理調(diào)度系統(tǒng)主要有Azkaban批處理調(diào)度系統(tǒng)和Ozzie工作流調(diào)度系統(tǒng)。對于批處理調(diào)度系統(tǒng)而言,其執(zhí)行計算任務(wù)調(diào)度的方式目前只有兩種:定時調(diào)度和固定頻率調(diào)度。但在批處理調(diào)度系統(tǒng)的實際使用過程中,通常會遇到,如果某個計算任務(wù)滿足一些前置條件,就需要立即調(diào)度并執(zhí)行該任務(wù),不能以固定的時間或固定頻率再去調(diào)度執(zhí)行。
[0004]對于滿足前置條件即可進(jìn)行任務(wù)調(diào)度的情況,目前主流的調(diào)度系統(tǒng)并不具備對調(diào)度任務(wù)的前置條件進(jìn)行檢查的功能,這樣仍只能以定時調(diào)度和固定頻率調(diào)度的方式來執(zhí)行任務(wù)調(diào)度,既耽誤調(diào)度任務(wù)的執(zhí)行效率,又影響調(diào)度系統(tǒng)工作效率。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種檢查調(diào)度任務(wù)前置條件的方法及裝置,以支持調(diào)度系統(tǒng)對調(diào)度任務(wù)前置條件的檢查,從而提高調(diào)度系統(tǒng)的調(diào)度執(zhí)行效率。
[0006]—方面,本發(fā)明實施例提供了一種檢查調(diào)度任務(wù)前置條件的方法,包括:
[0007]S101、如果監(jiān)測到系統(tǒng)當(dāng)前時間達(dá)到當(dāng)前調(diào)度任務(wù)前置條件的首次檢查時間,則啟動執(zhí)行進(jìn)程;
[0008]S102、檢查當(dāng)前調(diào)度任務(wù)的前置條件是否滿足當(dāng)前調(diào)度任務(wù)的執(zhí)行條件,若是,則執(zhí)行步驟S103 ;若否,則執(zhí)行步驟S104 ;
[0009]S103、對當(dāng)前調(diào)度任務(wù)進(jìn)行計算處理,之后結(jié)束所述執(zhí)行進(jìn)程;
[0010]S104、如果系統(tǒng)當(dāng)前時間早于當(dāng)前調(diào)度任務(wù)前置條件的最后檢查時間,則在設(shè)定時間內(nèi)休眠所述執(zhí)行進(jìn)程,之后執(zhí)行步驟S102。
[0011]另一方面,本發(fā)明實施例提供了一種檢查調(diào)度任務(wù)前置條件的裝置,集成于調(diào)度系統(tǒng),包括:
[0012]執(zhí)行進(jìn)程啟動模塊,用于當(dāng)監(jiān)測到系統(tǒng)當(dāng)前時間達(dá)到當(dāng)前調(diào)度任務(wù)前置條件的首次檢查時間時,啟動執(zhí)行進(jìn)程;
[0013]前置條件檢查模塊,用于檢查當(dāng)前調(diào)度任務(wù)的前置條件是否滿足所述調(diào)度任務(wù)的執(zhí)行條件,若是,則跳轉(zhuǎn)至調(diào)度任務(wù)執(zhí)行模塊;若否,則跳轉(zhuǎn)至檢查時間判斷模塊;
[0014]調(diào)度任務(wù)執(zhí)行模塊,用于對當(dāng)前調(diào)度任務(wù)進(jìn)行計算處理,之后結(jié)束所述執(zhí)行進(jìn)程;
[0015]檢查時間判斷模塊,用于當(dāng)系統(tǒng)當(dāng)前時間早于當(dāng)前調(diào)度任務(wù)前置條件的最后檢查時間時,在設(shè)定時間內(nèi)休眠所述執(zhí)行進(jìn)程,之后跳轉(zhuǎn)至前置條件檢查模塊。
[0016]本發(fā)明實施例提供的一種檢查調(diào)度任務(wù)前置條件的方法和裝置,通過調(diào)度任務(wù)的執(zhí)行進(jìn)程,對調(diào)度任務(wù)的前置條件在其首次檢查時間和最后檢查時間的間隔內(nèi)進(jìn)行是否滿足調(diào)度任務(wù)執(zhí)行條件的判定,如果前置條件滿足判定條件,就可基于執(zhí)行進(jìn)程實現(xiàn)調(diào)度任務(wù)的計算處理。利用該方法在調(diào)度系統(tǒng)中實現(xiàn)調(diào)度任務(wù)前置條件的檢查,使調(diào)度系統(tǒng)能夠滿足基于特定前置條件實現(xiàn)對調(diào)度任務(wù)批量計算的需求,從而提高調(diào)度系統(tǒng)的調(diào)度執(zhí)行效率。
【附圖說明】
[0017]圖1為本發(fā)明實施例一提供的一種檢查調(diào)度任務(wù)前置條件的方法的流程示意圖;
[0018]圖2為本發(fā)明實施例二提供的一種檢查調(diào)度任務(wù)前置條件的方法的流程示意圖;
[0019]圖3為本發(fā)明實施例三提供的一種檢查調(diào)度任務(wù)前置條件的裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0020] 下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0021]實施例一
[0022]圖1為本發(fā)明實施例一提供的一種檢查調(diào)度任務(wù)前置條件的方法的流程示意圖,該方法可以由檢查調(diào)度任務(wù)前置條件的裝置執(zhí)行,其中該裝置作為調(diào)度系統(tǒng)的一部分集成在調(diào)度系統(tǒng)中,本發(fā)明實施例一提供的檢查調(diào)度任務(wù)前置條件的方法,如圖1所示,包括如下操作:
[0023]S101、如果監(jiān)測到系統(tǒng)當(dāng)前時間達(dá)到當(dāng)前調(diào)度任務(wù)前置條件的首次檢查時間,則啟動執(zhí)行進(jìn)程。
[0024]在本實施例中,所述前置條件具體可為:處理批量計算的調(diào)度系統(tǒng)中執(zhí)行調(diào)度任務(wù)計算的前提條件?;谇爸脳l件執(zhí)行調(diào)度任務(wù)是調(diào)度系統(tǒng)進(jìn)行批量計算的一種新的調(diào)度方式。一般地,前置條件實則為一個shell (殼)腳本文件,而所述shell腳本文件包含了調(diào)度任務(wù)前置條件的所有檢查邏輯。該shell腳本文件存放在上傳至調(diào)度系統(tǒng)的調(diào)度任務(wù)壓縮文件的根目錄中。
[0025]在本實施例中,所述前置條件的首次檢查時間具體可為允許進(jìn)行相應(yīng)調(diào)度任務(wù)前置條件檢查的起始時間,是一個具體的時間點。所述執(zhí)行進(jìn)程具體用于檢查所述當(dāng)前調(diào)度任務(wù)的前置條件是否滿足所述調(diào)度任務(wù)的執(zhí)行條件以及在前置條件滿足執(zhí)行條件后執(zhí)行所述調(diào)度任務(wù)。啟動所述執(zhí)行進(jìn)程的條件具體可為系統(tǒng)的當(dāng)前時間達(dá)到或超過所述當(dāng)前調(diào)度任務(wù)前置條件的首次檢查時間。
[0026]S102、檢查當(dāng)前調(diào)度任務(wù)的前置條件是否滿足當(dāng)前調(diào)度任務(wù)的執(zhí)行條件,若是,則執(zhí)行步驟S103 ;若否,則執(zhí)行步驟S104。
[0027]在本實施例中,所述調(diào)度任務(wù)的執(zhí)行條件具體可為調(diào)度任務(wù)所需的可讀文件、相關(guān)數(shù)據(jù)等執(zhí)行調(diào)度任務(wù)要依賴的相關(guān)操作信息已經(jīng)準(zhǔn)備就緒,如果準(zhǔn)備就緒就可執(zhí)行任務(wù)調(diào)度。所述前置條件滿足調(diào)度任務(wù)的執(zhí)行條件具體可指:在包含前置條件檢查邏輯的shell腳本文件中,存在一個返回值,如果返回值為0,則表明對前置條件的檢測成功,即前置條件滿足調(diào)度任務(wù)的執(zhí)行條件。進(jìn)一步的,如果返回值此時為0,則可執(zhí)行步驟S103 ;如果返回值為非0,則表明對前置條件的檢測失敗,此時需執(zhí)行步驟S104。
[0028]S103、對當(dāng)前調(diào)度任務(wù)進(jìn)行計算處理,之后結(jié)束所述執(zhí)行進(jìn)程。
[0029]在本實施例中,如果檢查到當(dāng)前調(diào)度任務(wù)的前置條件滿足所述調(diào)度任務(wù)的執(zhí)行條件,就可對當(dāng)前調(diào)度任務(wù)進(jìn)行計算處理,在完成調(diào)度任務(wù)的計算處理工作后就可結(jié)束所述執(zhí)行進(jìn)程。
[0030]S104、如果系統(tǒng)當(dāng)前時間早于當(dāng)前調(diào)度任務(wù)前置條件的最后檢查時間,則在設(shè)定時間內(nèi)休眠所述執(zhí)行進(jìn)程,之后執(zhí)行步驟S102。
[0031]在本實施例中,還設(shè)置了對調(diào)度任務(wù)的前置條件進(jìn)行檢查的最后檢查時間,如果執(zhí)行進(jìn)程對所述調(diào)度任務(wù)前置條件的檢查達(dá)到了最后檢查時間,無論包含前置條件檢查邏輯的shell腳本文件返回值是否0,都要終止檢查進(jìn)程。
[0032]進(jìn)一步的,所述前置條件的首次檢查時間與最后檢查時間的時間間隔小于等于24小時。
[0033]在本實施例中,優(yōu)選地,所述前置條件的首次檢查時間與最后檢查時間的時間間隔小于等于24小時。S卩,在首次檢查時間與最后檢查時間的時間間隔內(nèi)可由執(zhí)行進(jìn)程檢查調(diào)度任務(wù)所需的相關(guān)文件或數(shù)據(jù)是否已經(jīng)存入當(dāng)前調(diào)度系統(tǒng)的執(zhí)行集群,若存入當(dāng)前執(zhí)行集群,則包含前置條件檢查邏輯的shell腳本文件的返回值就會為0,即滿足調(diào)度任務(wù)的執(zhí)行條件。同時在首次檢查時間與最后檢查時間的時間間隔內(nèi),執(zhí)行進(jìn)程每次對所述調(diào)度任務(wù)的前置條件進(jìn)行一輪檢查之后,如果前置條件不滿足執(zhí)行條件,就會休眠一定的時間然后再次對前置條件進(jìn)行