任務調度方法和裝置與流程
2023-06-06 04:38:26

本發明涉及計算機技術,尤其涉及一種任務調度方法和裝置。
背景技術:
為了提高系統的穩定性和網絡中心的數據處理能力及服務能力,通常採用集群技術。集群技術的出現,能夠使得伺服器相互連接在一起,構成一個集群,多個集群相互連接構成一個分布式系統,該分布式系統內的各個集群運行一系列共同的應用程式。
在分布式系統中,可以將所運行的應用程式劃分為多個任務,對於單個任務來說,可以將其按照運行的業務類型不同劃分至不同的業務單元內,進而將同屬於一個業務單元的任務運行於同一個集群上並將這些任務的任務數據也存儲該集群上。
由於一個業務單元中的一個任務可能會需要讀取另一業務單元中的另一任務的任務數據,也就是說在原集群上運行的任務需要依賴另一任務的任務數據。因此,當任務和其所依賴的另一任務的任務數據,即依賴數據,在不同集群上時,該任務會出現跨集群讀寫的情況,導致佔用了大量的帶寬。針對這一問題,現有技術中一旦發現某一任務存在跨集群讀寫的情況,便將該任務調度至其所讀取的依賴數據所在的目標集群。但在實際運行過程中仍會出現集群間的帶寬佔用過高的情況。
技術實現要素:
本發明提供一種任務調度方法和裝置,用於解決現有技術中集群間的帶寬佔用過高的情況。
為達到上述目的,本發明的實施例採用如下技術方案:
第一方面,提供了一種任務調度方法,包括:
對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得所述任務跨集群執行讀和寫所需的網絡資源的情況;
根據讀和寫所需的網絡資源的情況,對所述任務進行調度。
第二方面,提供了一種任務調度裝置,包括:
分析模塊,用於對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得所述任務跨集群執行讀和寫所需的網絡資源的情況;
調度模塊,用於根據所述讀和寫所需的網絡資源的情況,對所述任務進行調度。
本發明實施例提供的任務調度方法和裝置,通過對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得任務跨集群執行讀和寫所佔用網絡資源的情況,根據讀和寫所需的網絡資源的情況,對任務進行調度。由於讀和寫所佔用的網絡資源的情況,分別體現了將任務調度至讀和寫時所訪問數據所在集群能夠節省的網絡資源,因而,據此確定任務所調度至的集群能夠使得任務實現較少的網絡資源佔用,解決現有技術中集群間的帶寬佔用過高的情況。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1為本發明實施例一提供的一種任務調度方法的流程示意圖;
圖2為本發明實施例二提供的一種任務調度方法的流程示意圖;
圖3為本發明實施例三提供的一種任務調度裝置的結構示意圖;
圖4為本發明實施例四提供的一種任務調度裝置的結構示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。
下面結合附圖對本發明實施例提供的任務調度方法和裝置進行詳細描述。
實施例一
圖1為本發明實施例一提供的一種任務調度方法的流程示意圖,本實施例所提供的方法,可以由分布式系統中的任務管理器執行,如圖1所示,方法包括:
步驟101、對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得任務跨集群執行讀和寫所需的網絡資源的情況。
具體的,分布式系統一般會承載著很多的任務,其中有相當一部分是周期性運行的任務,這些任務可能會每小時、每天或者每周的定期運行,任務運行之前需要訪問運行所需的數據,這裡所說的訪問即讀取,任務定期訪問的數據會是當時最新的數據,從而保證了運行所獲得的結果數據的準確性。在讀取數據之後,還需要將所讀取到的數據輸入到運行的任務中,因此,所讀取的數據為任務的輸入數據。若該任務訪問數據的過程中涉及跨集群讀的情況,則會佔用一定帶寬等網絡資源。由於在這種跨集群訪問數據的情況下,必然涉及將數據從另一集群讀取到任務所運行的集群,此時任務的輸入數據便能夠體現出跨集群讀所佔用的網絡資源的情況,例如:佔用帶寬的情況。
另外,任務在運行結束後,還需要將任務運行的結果數據返回至任務管理器所最初分配的默認集群,所返回的結果數據需要首先由任務進行輸出,所輸出的數據稱為任務的輸出數據,進而將結果數據寫入默認集群。若該任務返回結果數據的過程中涉及跨集群寫的情況,則同樣會 佔用一定帶寬等網絡資源。由於跨集群返回結果數據必然涉及將結果數據從任務所運行的集群寫入到另一集群,此時任務的輸出數據便能夠體現出跨集群寫所佔用的網絡資源的情況,例如:佔用帶寬的情況。
通過執行跨集群讀和寫時,任務所需的網絡資源的情況,一方面可以預測出若任務當前所在的原集群與所讀取的依賴數據所在集群為不同集群時,任務所佔用的網絡資源情況,另一方面可以預測出若任務當前所在的原集群與所寫入的結果數據所在集群為不同集群時,任務所佔用的網絡資源情況。
作為一種可能的實現方式,歷史記錄中記錄有每一個任務運行在當前所分配的原集群上所輸入和輸出的數據量,可以根據歷史記錄,針對每一個任務,獲得輸入數據的數據量、輸出數據的數據量,針對每一個任務計算輸入輸出比。其中,輸入輸出比等於輸入數據的數據量與輸出數據的數據量的比值。
步驟102、根據讀和寫所需的網絡資源的情況,對任務進行調度。
具體的,若讀操作所需的網絡資源多於寫操作所需的網絡資源,將任務調度至所讀取的依賴數據所在的目標集群。
這是由於跨集群任務的數據存儲和任務運行分別位於不同的集群上,輸入數據和輸出數據分別均存在三種情況:a.存儲在任務當前所分配的原集群上;b.存儲在任務所待調度至的目標集群上;c.存儲在原集群和目標集群之外的集群上。因此,在現有技術的一旦發現某一任務存在跨集群讀寫的情況,便將該任務調度至其所讀取的依賴數據所在的目標集群的情況下,輸入數據或輸出數據只要不在目標集群上就需要通過跨集群複製或直讀直寫的方式訪問,跨集群任務所產生的跨集群數據量過大時會對網絡資源造成壓力。
在一種可能的情況下,若跨集群任務的輸入數據存儲於目標集群上並且數據量很大,那麼調度該跨集群任務至目標集群可以省去將依賴數據從目標集群讀取到原集群的網絡資源佔用,同時任務的輸出數據的數據量很小,那麼調度該跨集群任務至目標集群所導致增加的將結果數據從目標集群寫入到默認集群的網絡資源佔用不會很大,從而使得調度引 起的跨集群網絡資源佔用會出現顯著降低。也就是說,輸入數據的數據量與輸出數據的數據量的比值,即輸入輸出比越大則跨集群網絡資源佔用降低的情況越顯著。
作為一種可能的實現方式,可以通過判斷任務輸入輸出比是否大於預設第一閾值預測調度至依賴數據所在的目標集群是否能夠有效降低所佔用的帶寬等網絡資源,若是,則將任務調度至所述任務的依賴數據所在的目標集群。其中,第一閾值大於1。
相反的,若讀操作所需的網絡資源不多於寫操作所需的網絡資源,可以將任務調度至所寫入的結果數據所在的集群。
本實施例中,通過對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得讀和寫所佔用網絡資源的情況,根據讀和寫所需的網絡資源的情況,對任務進行調度。由於讀和寫所佔用的網絡資源的情況,分別體現了將任務調度至讀和寫時所訪問數據所在集群能夠節省的網絡資源,因而,據此確定任務所調度至的集群能夠使得任務實現較少的網絡資源佔用,解決現有技術中集群間的帶寬佔用過高的情況。
實施例二
圖2為本發明實施例二提供的一種任務調度方法的流程示意圖,如圖2所示,包括:
步驟201、基於歷史記錄進行分析,從進行跨集群讀寫的任務中篩選出目標任務。
具體的,歷史記錄中記錄有各個任務的任務信息和數據信息。其中,任務信息包括:輸入數據的數據量和輸出數據的數據量;數據信息包括:輸入數據所在集群、輸出數據所在集群、任務所屬業務單元和任務當前所在集群,以及任務運行頻率和運行開銷。
基於歷史記錄,確定出輸入數據或輸出數據所在集群和任務當前所在集群為不同集群的跨集群任務。將任務當前所在集群作為原集群。
針對每一個跨集群任務,根據公式輸入輸出比=輸入數據量/輸出數據量,計算輸入輸出比。採用輸入輸出比、輸出數據量、運行開銷和運行 頻率、當前任務所在集群負載所構成的篩選條件篩選出讀操作所需的網絡資源多於寫操作所需的網絡資源的目標任務。
例如:篩選條件可以為輸入輸出比大於第一閾值,第一閾值為100,且輸出數據量小於100gb,運行開銷、運行頻率、集群負載等分別小於預設集群配額。
這裡所說的預設集群配額是根據目標集群能夠提供的cpu和存儲空間等集群資源所確定的。在篩選條件中增加運行開銷、運行頻率、集群負載等用於指示任務佔用的集群資源的指標,主要是由於即使輸入輸出比較大也就是調度任務所節省的網絡資源較多,但是當任務運行時所佔用的集群資源較多,而所調度至的目標集群無法滿足任務所需,從而大幅增加了目標集群的負載的情況下,將任務調度至目標集群後分布式系統的整體性能並沒有得到明顯提升,這種調度就是得不償失的,因此,在當任務運行時所佔用的集群資源較多時,不對任務進行調度。
步驟202、對目標任務提取任務標識,生成記錄任務標識的調度信息。
具體的,獲得目標任務的任務標記,有兩種方法,對於結構化查詢語言(structuredquerylanguage,sql)任務可以將查詢語句中周期性的屬性屏蔽掉,對任務進行哈希摘要處理,例如採用消息摘要算法第五版(messagedigestalgorithmmd5,簡稱md5)算法進行哈希摘要處理,並將哈希摘要作為該任務的任務標識。另一種方法,針對非sql任務可以直接將任務的固定編號作為任務的任務標識,這些固定編號可以來自如天網系統等外部系統。
在調度信息中,用任務標識對該目標任務進行標記。另外,調度信息可以用於記錄目標任務所需調度至的目標集群。
由於基於歷史記錄進行分析,篩選出目標任務的過程運算量較大,因而,可以預先執行,從而基於執行結果,生成調度信息。這樣,當接收到待調度的任務時,則無需對其進行分析,可以直接根據預先分析所獲得的調度信息進行調度,節省了時間,提高的調度的時效性。在實際操作過程中,可以將基於歷史記錄進行分析,生成調度信息的過程稱為訓練過程,將後續根據調度信息進行調度的過程稱為決策過程。
步驟203、當接收到待調度的任務時,根據調度信息調度任務。
具體的,當接收到待調度的任務時,獲取該任務的任務標識,從而對該任務進行識別。具體來說,可以在任務調度系統接收到待調度的任務後,判斷任務的類型是否為sql任務,如果是則提取哈希摘要作為任務標識,否則,提取固定編號作為任務標識。具體獲取任務標識的過程參見步驟202中的相關描述,此處不再贅述。根據獲取到的任務標識,在調度信息中進行匹配,匹配到了則調度到任務的目標集群上,否則,調度到任務所寫入的結果數據所在的原集群。進一步,在調度之後,還可以為經過調度的任務分配計算資源。
因為當跨集群任務的輸入數據存儲於目標集群上並且數據量很大時,調度該跨集群任務至目標集群可以省去將依賴數據從目標集群讀取到原集群的網絡資源佔用,同時任務的輸出數據的數據量很小,那麼調度該跨集群任務至目標集群所增加的將結果數據從目標集群到原集群寫入的網絡資源佔用不會很大,因此,使得調度引起的跨集群網絡資源佔用會出現顯著降低。
也就是說,輸入數據的數據量與輸出數據的數據量的比值,即輸入輸出比越大則跨集群網絡資源佔用降低的情況越顯著,可以據此確定第一閾值的取值,若僅在跨集群網絡資源佔用降低的情況越顯著時調度任務至目標集群,則可以將第一閾值確定的較大,否則,確定的較小,但第一閾值應大於1。
實施例三
圖3為本發明實施例三提供的一種任務調度裝置的結構示意圖,如圖3所示,包括:分析模塊31和調度模塊32。
分析模塊31,用於對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得所述任務讀和寫所需的網絡資源的情況;
調度模塊32,用於根據所述讀和寫所需的網絡資源的情況,對所述任務進行調度。
具體的,調度模塊32具體用於若所述讀操作所需的網絡資源多於寫 操作所需的網絡資源,將所述任務調度至所讀取的依賴數據所在的目標集群。
本實施例中,通過對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得讀和寫所佔用網絡資源的情況,根據讀和寫所需的網絡資源的情況,對任務進行調度。由於讀和寫所佔用的網絡資源的情況,分別體現了將任務調度至讀和寫時所訪問數據所在集群能夠節省的網絡資源,因而,據此確定任務所調度至的集群能夠使得任務實現較少的網絡資源佔用,解決現有技術中集群間的帶寬佔用過高的情況。
實施例四
圖4為本發明實施例四提供的一種任務調度裝置的結構示意圖,在圖3所提供的任務調度裝置的基礎上,分析模塊31,包括:獲得單元311和計算單元312。
獲得單元311,用於根據歷史記錄,針對每一個所述任務,獲得輸入數據的數據量、輸出數據的數據量。
計算單元312,用於針對每一個所述任務計算用於指示讀和寫所需的網絡資源的比例的輸入輸出比。
其中,輸入輸出比等於輸入數據的數據量與輸出數據的數據量的比值。
進一步,調度模塊32,包括:判斷單元321、標識單元322、生成單元323和調度單元324。
判斷單元321,用於判斷所述任務是否滿足預設的篩選條件。
其中,篩選條件包括:所述輸入輸出比大於預設第一閾值;其中,第一閾值大於1。篩選條件還包括:輸出數據的數據量小於第二閾值;和/或,所佔用的集群資源小於預設配額,其中所佔用的集群資源包括運行開銷、運行頻率和集群負載中的至少一個。
標識單元322,用於針對滿足所述篩選條件的任務,獲得任務標識。
生成單元323,用於生成用於記錄所述任務標識的調度信息。
調度單元324,用於若滿足所述篩選條件,則將所述任務調度至所述 任務所讀取的依賴數據所在的目標集群。
具體的,調度單元324,具體用於當接收到待調度任務時,獲取標識單元所獲得所述待調度任務的任務標識;若所述待調度任務的任務標識與所述調度信息中的任務標識相匹配,則將所述待調度任務調度至所述待調度任務的依賴數據所在的目標集群。
進一步,標識單元322,包括:判斷子單元3221、哈希子單元3222和編號子單元3223。
判斷子單元3221,用於判斷所述任務的類型是否為sql;
哈希子單元3222,用於若所述任務的類型為sql,對所述任務進行哈希處理,獲得哈希摘要,將所述哈希摘要作為所述任務標識;
編號子單元3223,用於若所述任務的類型不為sql,將所述任務的編號作為所述任務標識。
需要說明的是,在前述各中所提及的網絡資源可以為網絡帶寬和/或網絡帶寬時延積,本領域技術人員可以知曉,還可以採用其他用于衡量網絡資源的指標,而不會影響各實施例的實現效果。
通過對進行跨集群讀寫的任務所需的網絡資源進行分析,以獲得讀和寫所佔用網絡資源的情況,根據讀和寫所需的網絡資源的情況,對任務進行調度。由於讀和寫所佔用的網絡資源的情況,分別體現了將任務調度至讀和寫時所訪問數據所在集群能夠節省的網絡資源,因而,據此確定任務所調度至的集群能夠使得任務實現較少的網絡資源佔用,解決現有技術中集群間的帶寬佔用過高的情況。
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成。前述的程序可以存儲於一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光碟等各種可以存儲程序代碼的介質。
最後應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記 載的技術方案進行修改,或者對其中部分或者全部技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的範圍。