胡元元
摘 要:JobManager作業(yè)管理系統(tǒng)是眾多作業(yè)管理系統(tǒng)中的一員。隨著計(jì)算機(jī)應(yīng)用的增加和巨大的數(shù)據(jù)需求,JobManager作業(yè)管理系統(tǒng)對(duì)數(shù)據(jù)的放置也提出了更高的要求。提出了JobManager作業(yè)管理系統(tǒng)的數(shù)據(jù)放置問題,并為該問題設(shè)計(jì)了詳細(xì)的數(shù)據(jù)放置子系統(tǒng)體系結(jié)構(gòu)。
關(guān)鍵詞:作業(yè)管理;數(shù)據(jù)放置;調(diào)度;分布式
DOIDOI:10.11907/rjdk.162492
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2016)012-0048-03
0 引言
JobManager作業(yè)管理系統(tǒng)中的數(shù)據(jù)密集應(yīng)用對(duì)大塊I/O的需求越來(lái)越大,在廣域網(wǎng)中處理和復(fù)制大量數(shù)據(jù),帶來(lái)數(shù)據(jù)放置的可靠性和效率問題。查找、傳輸、使用和復(fù)制數(shù)據(jù),數(shù)據(jù)管理器要在需要的時(shí)候?qū)?shù)據(jù)進(jìn)行分配和釋放,并在用戶使用完數(shù)據(jù)之后清空所有使用痕跡。
數(shù)據(jù)放置活動(dòng)是整個(gè)JobManager作業(yè)管理系統(tǒng)中的關(guān)鍵因素,對(duì)數(shù)據(jù)的訪問通常是數(shù)據(jù)密集應(yīng)用中的瓶頸[1]。
1 數(shù)據(jù)放置子系統(tǒng)結(jié)構(gòu)
JobManager作業(yè)管理系統(tǒng)提供了一個(gè)數(shù)據(jù)放置子系統(tǒng)來(lái)解決數(shù)據(jù)放置問題,這個(gè)子系統(tǒng)包括數(shù)據(jù)放置的專業(yè)調(diào)度程序,一個(gè)用于了解數(shù)據(jù)放置的作業(yè)分析器,一個(gè)從記錄中提取有用信息并給予解釋的知識(shí)庫(kù),以及一些實(shí)時(shí)優(yōu)化工具[2]。這種數(shù)據(jù)放置子系統(tǒng)提供完整的可靠性、用戶的抽象能力、在存儲(chǔ)服務(wù)器上的平衡負(fù)載能力和控制網(wǎng)絡(luò)中的交換能力。
在遠(yuǎn)程作業(yè)執(zhí)行過程中,數(shù)據(jù)放置是整個(gè)作業(yè)執(zhí)行的重要環(huán)節(jié)。當(dāng)前解決這個(gè)問題的方法是手工或者使用簡(jiǎn)單腳本,沒有任何自動(dòng)化和容錯(cuò)能力,不適應(yīng)分布式計(jì)算環(huán)境的劇烈變化。它們對(duì)作業(yè)沒有權(quán)限,作業(yè)在整個(gè)過程中沒有調(diào)度。
為了解決這些問題,數(shù)據(jù)放置作業(yè)在分布式計(jì)算環(huán)境中必須像計(jì)算作業(yè)一樣成為第一類作業(yè),它們需要排隊(duì)、調(diào)度、監(jiān)控和檢查。更加重要的是,必須在沒有人為干預(yù)的情況下成功執(zhí)行。
因此,可為JobManager作業(yè)管理系統(tǒng)設(shè)計(jì)一個(gè)數(shù)據(jù)放置子系統(tǒng)來(lái)專門處理數(shù)據(jù)放置問題。數(shù)據(jù)放置子系統(tǒng)結(jié)構(gòu)如圖1所示。下面對(duì)數(shù)據(jù)放置子系統(tǒng)各模塊進(jìn)行介紹。
2 數(shù)據(jù)放置子系統(tǒng)模塊
2.1 作業(yè)描述
在介紹數(shù)據(jù)放置子系統(tǒng)作業(yè)描述之前,有必要介紹JobManager作業(yè)管理系統(tǒng)中的作業(yè)和作業(yè)流,在此基礎(chǔ)上,對(duì)數(shù)據(jù)放置作業(yè)和計(jì)算作業(yè)使用不同的作業(yè)描述。
2.1.1 單元作業(yè)(UnitJob)
在作業(yè)管理系統(tǒng)中,單元作業(yè)是可被執(zhí)行的基本單位。
在作業(yè)管理系統(tǒng)中,通常需要自動(dòng)執(zhí)行一系列作業(yè),如果這些作業(yè)滿足一定的執(zhí)行邏輯或者稱之為作業(yè)依賴關(guān)系,那么將這些作業(yè)按照一定的依賴關(guān)系定制成一個(gè)作業(yè)流是一種很好的解決方式。
作業(yè)流在作業(yè)管理系統(tǒng)中也稱為作業(yè)網(wǎng)絡(luò),是相互關(guān)聯(lián)的作業(yè)形成的一個(gè)作業(yè)序列。它的基本工作單元是作業(yè)。每個(gè)作業(yè)流都有一個(gè)虛擬的開始點(diǎn)和結(jié)束點(diǎn)。不含任何作業(yè)的作業(yè)流叫空作業(yè)流[3]。作業(yè)流是作業(yè)管理系統(tǒng)管理和調(diào)度的基本單元,作業(yè)不能脫離作業(yè)流而單獨(dú)提交給系統(tǒng)。
2.1.2 作業(yè)網(wǎng)絡(luò)圖
作業(yè)流程圖又稱為作業(yè)網(wǎng)絡(luò)圖,是按照一定的邏輯關(guān)系將用戶定義的作業(yè)組織成一個(gè)網(wǎng)狀圖,是作業(yè)流的圖形表現(xiàn)形式。在作業(yè)管理系統(tǒng)中,一個(gè)作業(yè)流中既包含了多個(gè)傳統(tǒng)意義上可執(zhí)行的作業(yè),又包含了作業(yè)之間的依賴關(guān)系,還有一種關(guān)系是作業(yè)流之間的依賴關(guān)系。作業(yè)之間的依賴關(guān)系以及作業(yè)流之間的依賴關(guān)系是作業(yè)流參考模型的顯著特點(diǎn),能夠大大提升作業(yè)流的表達(dá)能力和執(zhí)行能力。
2.1.3 結(jié)構(gòu)化作業(yè)流
在基于作業(yè)流的作業(yè)管理系統(tǒng)中,可以構(gòu)造出各種復(fù)雜的作業(yè)網(wǎng)絡(luò),以更好地控制作業(yè)的執(zhí)行順序。本文所研究的作業(yè)管理系統(tǒng)中,可以使用相關(guān)作業(yè)表示出順序、條件/分支、循環(huán)3種基本的執(zhí)行結(jié)構(gòu),形成結(jié)構(gòu)化作業(yè)流。
(1)順序。作業(yè)執(zhí)行順序是前后關(guān)系,前一作業(yè)執(zhí)行完畢,后一作業(yè)再開始執(zhí)行,見圖2。
(2)條件/分支。條件/分支根據(jù)執(zhí)行條件決定作業(yè)網(wǎng)絡(luò)的執(zhí)行走向,見圖3。
(3)循環(huán)。循環(huán)執(zhí)行類似于程序語(yǔ)言中的do-while。利用跳轉(zhuǎn)作業(yè)來(lái)指定要循環(huán)執(zhí)行的目標(biāo)作業(yè)及重復(fù)次數(shù),見圖4。
obManager作業(yè)管理系統(tǒng)中的數(shù)據(jù)密集應(yīng)用需要從遠(yuǎn)程站點(diǎn)到執(zhí)行站點(diǎn)移動(dòng)輸入數(shù)據(jù),執(zhí)行作業(yè),然后將輸出數(shù)據(jù)從執(zhí)行站點(diǎn)移動(dòng)到原來(lái)或者是另一個(gè)遠(yuǎn)程站點(diǎn)。如果不希望在執(zhí)行站點(diǎn)出現(xiàn)用盡磁盤空間情況,就需要在傳輸數(shù)據(jù)前分配空間,并且在移動(dòng)輸出數(shù)據(jù)后釋放空間。
作業(yè)描述模塊需要將這些計(jì)算和數(shù)據(jù)放置步驟使用不同的作業(yè)描述。將原來(lái)一個(gè)單元作業(yè)分解為計(jì)算作業(yè)和數(shù)據(jù)放置作業(yè)的集合,以便對(duì)數(shù)據(jù)放置作業(yè)進(jìn)行下一步操作。
2.2 作業(yè)分析器
作業(yè)分析器獲得用戶定義的作業(yè)描述后,將作業(yè)描述分解為數(shù)據(jù)放置作業(yè)描述和計(jì)算作業(yè)描述,作業(yè)分析器將這兩類作業(yè)區(qū)別開來(lái)。作業(yè)分析器建立了具體的圖,數(shù)據(jù)放置作業(yè)是其中的節(jié)點(diǎn),它們之間的依賴關(guān)系作為圖中的弧,如圖5所示,作業(yè)分析器將具體的圖提交給作業(yè)流管理器。
從圖5可以看出,原本的單元作業(yè)被分解為數(shù)據(jù)放置作業(yè)和計(jì)算作業(yè)。其中數(shù)據(jù)放置作業(yè)種類包括:
(1)傳輸:這種類型的作業(yè)是從一個(gè)物理位置轉(zhuǎn)移一個(gè)完整的或部分的文件到另一個(gè)物理位置,包括輸入操作、輸出操作和第三方傳輸。
(2)分配空間:這類作業(yè)是在目的節(jié)點(diǎn)上分配存儲(chǔ)空間、網(wǎng)絡(luò)帶寬并在來(lái)源/目的地之間建立一條通路,在數(shù)據(jù)放置前為需要放置的數(shù)據(jù)分配需要的資源。
(3)釋放:這類作業(yè)是分配前釋放相應(yīng)資源。
(4)刪除:這類作業(yè)是從遠(yuǎn)程或者本地存儲(chǔ)服務(wù)器、磁帶或磁盤進(jìn)行物理刪除。
2.3 作業(yè)流管理器
作業(yè)流管理器收到作業(yè)分析器轉(zhuǎn)送的作業(yè)圖后,將計(jì)算作業(yè)提交到計(jì)算作業(yè)隊(duì)列[4],數(shù)據(jù)放置作業(yè)提交給數(shù)據(jù)放置作業(yè)隊(duì)列[5]。不同隊(duì)列中的作業(yè)由其對(duì)應(yīng)的調(diào)度程序調(diào)度。
2.4 資源代理/策略實(shí)施器
資源代理為作業(yè)匹配資源,并且?guī)椭鷶?shù)據(jù)定位和決定數(shù)據(jù)移動(dòng)方向,每當(dāng)需要時(shí)就會(huì)進(jìn)行一次作業(yè)到資源的映射服務(wù)。策略實(shí)施器幫助申請(qǐng)具體的資源或具體的作業(yè)策略,就像一個(gè)存儲(chǔ)服務(wù)器可以允許多少并行連接一樣。
2.5 數(shù)據(jù)放置調(diào)度程序
數(shù)據(jù)放置調(diào)度程序分別在JobManager作業(yè)管理系統(tǒng)的輸入/輸出控制系統(tǒng)和輸入/輸出調(diào)度程序中。每個(gè)協(xié)議和數(shù)據(jù)存儲(chǔ)系統(tǒng)都有不同的用戶接口和不同的訪問協(xié)議庫(kù)。當(dāng)作業(yè)執(zhí)行時(shí),用戶需要處理所有不同協(xié)議庫(kù)的復(fù)雜連接,并且在數(shù)據(jù)傳輸協(xié)議和存儲(chǔ)系統(tǒng)中使用不同的接口[6]。數(shù)據(jù)放置調(diào)度程序?yàn)樗胁煌膮f(xié)議和存儲(chǔ)服務(wù)器提供一個(gè)統(tǒng)一的接口,并且在用戶間提供抽象的能力。數(shù)據(jù)放置調(diào)度程序根據(jù)實(shí)施信息來(lái)調(diào)度隊(duì)列中的作業(yè)。系統(tǒng)最重要的組成部分是數(shù)據(jù)放置調(diào)度程序,它根據(jù)數(shù)據(jù)放置作業(yè)特征作出正確的調(diào)度決定。
2.6 網(wǎng)絡(luò)監(jiān)視工具
網(wǎng)絡(luò)監(jiān)視工具收集并統(tǒng)計(jì)最大可利用端對(duì)端帶寬、實(shí)際利用帶寬、潛在的因素和傳輸?shù)臄?shù)量,并對(duì)調(diào)度程序和資源代理/策略實(shí)施器進(jìn)行反饋。
2.7 知識(shí)庫(kù)
JobManager作業(yè)管理系統(tǒng)使用過程中有這種情況:主機(jī)接受了作業(yè),但是長(zhǎng)時(shí)間沒有做任何事情。調(diào)度程序只能不斷嘗試與主機(jī)對(duì)話,需要幾小時(shí)甚至幾天。同時(shí)還有特定主機(jī)在特定的作業(yè)等級(jí)上存在問題,但它卻成功地執(zhí)行了其它等級(jí)作業(yè)。查出上述問題的原因非常困難,而且受影響的只是部分作業(yè)。所以,簡(jiǎn)單的方法是讓這些作業(yè)盡量避免使用資源。
為此提出了知識(shí)庫(kù)觀念,用來(lái)收集不同作業(yè)經(jīng)驗(yàn)。知識(shí)庫(kù)從批調(diào)度系統(tǒng)產(chǎn)生的作業(yè)記錄文件中收集信息[7]。數(shù)據(jù)放置子系統(tǒng)從記錄文件中提出信息并將它們加入知識(shí)庫(kù)。知識(shí)庫(kù)解析這些日志并且提出有用的信息,比如不同的事件、時(shí)間戳、錯(cuò)誤信息和利用統(tǒng)計(jì)[8],然后將這些信息輸入到數(shù)據(jù)庫(kù)。知識(shí)庫(kù)在數(shù)據(jù)庫(kù)中詢問、解釋,然后返回結(jié)果給調(diào)度程序和資源代理/策略實(shí)施器,調(diào)度程序利用這些信息作出更好的調(diào)度決定。
2.8 失敗代理
失敗代理是從收集的信息或者知識(shí)庫(kù)的反饋中盡快查出失敗原因,并且使用“重試”機(jī)制和“最大允許時(shí)間”來(lái)判斷和解決失敗問題。調(diào)度程序隱藏了網(wǎng)絡(luò)、存儲(chǔ)系統(tǒng)、中間件或軟件的失敗。 “重試”機(jī)制指在返回一個(gè)失敗前,可以重試失敗的數(shù)據(jù)傳輸作業(yè)任意多次。 “中止并再運(yùn)行”機(jī)制使用戶可以為數(shù)據(jù)傳輸作業(yè)指定“最大允許運(yùn)行時(shí)間”。當(dāng)一個(gè)作業(yè)的運(yùn)行時(shí)間超過了指定時(shí)間時(shí),調(diào)度程序會(huì)自動(dòng)終止這個(gè)作業(yè)并且重新運(yùn)行,解決了系統(tǒng)傳輸永遠(yuǎn)掛起或者永不返回的問題,用戶可指定重復(fù)任意次。
3 結(jié)語(yǔ)
本文提出了JobManager作業(yè)管理系統(tǒng)數(shù)據(jù)放置問題,為該問題設(shè)計(jì)了數(shù)據(jù)放置子系統(tǒng),并對(duì)數(shù)據(jù)放置子系統(tǒng)體系結(jié)構(gòu)進(jìn)行了詳細(xì)描述,為今后數(shù)據(jù)放置作業(yè)調(diào)度打下了基礎(chǔ)。
參考文獻(xiàn):
[1] KOUZESRT,ANDERSONGA,ELBERTST,et al.The changing paradigm of data-intensive computing [J].Computer,2009,42(1):26-34.
[2] DEANJ,GHEMAWATS.Map reduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.
[3] CHANGF,DEANJ,GHEAMAWATS,et al.Big table:a distributed storage system for structured data[J].ACMTrans on Computer Systems,2008,26(2):1-26.
[4] DOWDYLW,F(xiàn)OSTERDV.Comparative model soft file assignment problem[J].ACM Computing Surveys (CSUR),1982,14(2):287-313.
[5] DUZ,HUJ,CHENY.Optimized QoS-aware replica placement heuristics and applications in astronomy data grid[J].Journal of Systems and Software,2011,84(7):1224-1232.
[6] YUAND,YANGY,LIUX,et al.A data placement strategy in scientific cloud workflows[J].Future Generation Computer Systems,2010,26(8):1200-1214.
[7] 劉少偉,孔令梅,任開軍,等.云環(huán)境下優(yōu)化科學(xué)工作流執(zhí)行性能的兩階段數(shù)據(jù)放置與任務(wù)調(diào)度策略[J].計(jì)算機(jī)學(xué)報(bào),2011,34(11):2121-2130.
[8] TEVFIK KOSAR.Data placement in widely distributed systems [D].University of Wisconsin-Madison,2005.
(責(zé)任編輯:杜能鋼)