• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            網(wǎng)格實(shí)踐: 在網(wǎng)格中實(shí)現(xiàn) SOA 和 Web 服務(wù)-----使用 GT4 和 Globus Resource Allocation Manager

            保持與 Globus Toolkit 的同步更新對(duì)于維持最新的網(wǎng)格技巧來說非常重要。本文將介紹 Globus Toolkit 的版本 4,在 Service-Oriented Architecture(SOA)和 Web 服務(wù)領(lǐng)域中展示這個(gè)工具包,并詳細(xì)介紹 Grid Resource Allocation Manager 組件(GRAM),以及為網(wǎng)格作業(yè)提交、監(jiān)視和控制例子創(chuàng)造條件的支持服務(wù)。

            在本文中,我將在 Service-Oriented Architecture(SOA)和 Web 服務(wù)領(lǐng)域概要介紹 Globus Toolkit 4 的內(nèi)容。重點(diǎn)介紹這個(gè)工具包中的 Grid Resource Allocation Manager(GRAM)組件(以及支持服務(wù))—— 這是一組核心服務(wù),可以幫助您在特定的資源上啟動(dòng)作業(yè)、檢查狀態(tài)并獲取結(jié)果的實(shí)際操作。通過這個(gè)重點(diǎn)的介紹,我們將設(shè)置提交網(wǎng)格作業(yè)的一個(gè)例子中的步驟。網(wǎng)格作業(yè)的例子開始是以一個(gè)非常基本的例子形式出現(xiàn)的,然后逐漸向其中引入一些新的概念和特性,以支持更加復(fù)雜的作業(yè) —— 最后通過 Globus GRAM 將多個(gè)作業(yè)提交給調(diào)度器。

            不過首先讓我們來討論一下有關(guān) SOA 和網(wǎng)格的問題。

            SOA 和網(wǎng)格

            SOA 是最近的一個(gè)熱點(diǎn)問題。盡管這個(gè)概念已經(jīng)并不新鮮,但是它卻重新點(diǎn)燃了 Web 服務(wù)的活力。Web 服務(wù)可以通過一個(gè)使用標(biāo)準(zhǔn)協(xié)議仔細(xì)進(jìn)行定義的接口為遠(yuǎn)程用戶提供對(duì)程序的訪問。高級(jí)的服務(wù)可以在現(xiàn)有的服務(wù)之上進(jìn)行構(gòu)建,應(yīng)用程序可以通過將一系列 Web 服務(wù)連接在一起而進(jìn)行開發(fā)。最后,我們還有一個(gè)非常有用的重用方法。

            如果應(yīng)用程序提供了一個(gè)通用的可重用服務(wù),并且它是無狀態(tài)的,需要少量的輸入和輸出數(shù)據(jù),那么這個(gè)應(yīng)用程序就應(yīng)該打包為一個(gè) Web 服務(wù)。為了增加重用性,甚至還有一種發(fā)現(xiàn)并調(diào)用現(xiàn)有服務(wù)的機(jī)制。這種方法對(duì)于在分布式環(huán)境中提供對(duì)常用應(yīng)用程序的訪問來說非常有效,因?yàn)樗腔跇?biāo)準(zhǔn)協(xié)議的,例如 SOAP over HTTP。

            在將 SOA 應(yīng)用到網(wǎng)格實(shí)現(xiàn)上時(shí),有一些常見的應(yīng)用程序應(yīng)該以 Web 服務(wù)的形式提供。然而,很多常見的應(yīng)用程序都是特定于網(wǎng)格實(shí)現(xiàn)類型的,無論研究、科學(xué)方面的網(wǎng)格,還是教育網(wǎng)格。如果我們希望在這些應(yīng)用程序域之間使用一些可重用的服務(wù),那么應(yīng)該區(qū)分任何網(wǎng)格實(shí)現(xiàn)中所需要的服務(wù):

            • 安全性
            • 執(zhí)行管理
            • 通知
            • 復(fù)制
            • 資源發(fā)現(xiàn)
            • 監(jiān)視

            如果我們將網(wǎng)格實(shí)現(xiàn)中所需要的服務(wù)進(jìn)行合并,就會(huì)得到一個(gè)基本的網(wǎng)格基礎(chǔ)設(shè)施,我們稱之為“面向服務(wù)的基礎(chǔ)設(shè)施”(Service-Oriented Infrastructure)。







            GRAM 功能和服務(wù)

            這種環(huán)境中的 Web 服務(wù)為支持通用的作業(yè)提交方法提供了一個(gè)基礎(chǔ),當(dāng)您希望在相關(guān)的輸入數(shù)據(jù)之間提供可執(zhí)行文件時(shí),可能要在產(chǎn)生輸出數(shù)據(jù)的同時(shí)訪問這些數(shù)據(jù),然后在執(zhí)行過程中與作業(yè)進(jìn)行交互,此時(shí)這種方法非常有效。這看起來可能有些超前,但是現(xiàn)在的確已經(jīng)有了提供這種功能的工具和技術(shù)。

            Globus Toolkit 4.0 就是這樣一種工具。它對(duì)一組 Web 服務(wù)進(jìn)行了打包,這些服務(wù)為我們提供了一個(gè)面向服務(wù)的基礎(chǔ)設(shè)施。應(yīng)用程序關(guān)注的是某個(gè)具體的問題領(lǐng)域,而 Globus Toolkit 關(guān)注的則是整個(gè)基礎(chǔ)設(shè)施。Globus Web 服務(wù)可以幫助您對(duì)分布式基礎(chǔ)設(shè)施組件進(jìn)行訪問和管理。

            Globus Toolkit 的 GRAM 組件提供了一組 Web 服務(wù),它們采用了 WS-Resource Framework,其設(shè)計(jì)目標(biāo)是幫助您在網(wǎng)格環(huán)境中提交作業(yè)和管理作業(yè)。GRAM 可以用于那些需要信任證書、可靠執(zhí)行以及協(xié)調(diào)文件步驟的作業(yè)。GRAM 可以幫助實(shí)現(xiàn)信任證書的管理,從而提交作業(yè),監(jiān)視作業(yè)的進(jìn)展?fàn)顩r,控制作業(yè)的執(zhí)行情況,并分階段地處理相關(guān)的數(shù)據(jù)。不同的信任證書可以用來代表不同的功能。GRAM 提供了一個(gè)可靠的執(zhí)行環(huán)境,并集成了多個(gè)專門用來在復(fù)雜環(huán)境中對(duì)作業(yè)執(zhí)行管理進(jìn)行優(yōu)化的調(diào)度器。GRAM 和支持服務(wù)提供了文件分段傳輸?shù)墓δ埽踔吝€提供了在作業(yè)運(yùn)行時(shí)訪問輸出數(shù)據(jù)文件的功能,從而有效地實(shí)現(xiàn)對(duì)輸出數(shù)據(jù)的利用。

            GRAM 調(diào)度器

            當(dāng)您提交一個(gè)作業(yè)時(shí),GRAM 創(chuàng)建一個(gè) ManagedJob 對(duì)象,并返回其句柄。然后您就可以使用這個(gè)句柄與這個(gè)作業(yè)進(jìn)行交互,這實(shí)際上是一個(gè) WS-Addressing Endpoint Reference(EPR)。稍后我們將討論一個(gè)典型的交互過程,并給出幾個(gè)例子;但是首先讓我們來了解一下支持作業(yè)執(zhí)行所使用的基礎(chǔ)設(shè)施。

            網(wǎng)格作業(yè)可能會(huì)消耗大量的計(jì)算周期,因此一個(gè)網(wǎng)格環(huán)境通常會(huì)包含很多資源集群。這些集群通常是由一個(gè)調(diào)度器進(jìn)行控制的。調(diào)度器負(fù)責(zé)對(duì)資源的使用進(jìn)行優(yōu)化,從而按照定義好的策略來有效地執(zhí)行作業(yè)。有很多調(diào)度器可以使用,其中包括 Load Sharing Facility、Condor 和 Portable Batch System。

            GRAM 使用調(diào)度器適配器將作業(yè)描述語法轉(zhuǎn)換成調(diào)度器可以執(zhí)行的命令。除了為調(diào)度器提供一個(gè)接口之外,GRAM 還包含了一種派生新的 UNIX? 進(jìn)程來啟動(dòng)作業(yè)的機(jī)制。這適用于小型的串行作業(yè),它們?cè)谶\(yùn)行時(shí)不需要集群資源,也不需要共享內(nèi)存或消息傳遞。在后面的例子中,我們就會(huì)使用這個(gè)簡(jiǎn)單的派生進(jìn)程。

            派生進(jìn)程使用一個(gè) Fork Starter 程序來啟動(dòng)并監(jiān)視針對(duì) GRAM 的作業(yè)進(jìn)程。它還記錄了一些數(shù)據(jù),例如啟動(dòng)時(shí)間、結(jié)束時(shí)間以及該作業(yè)的退出代碼。當(dāng)提交作業(yè)時(shí),事件會(huì)被寫入日志文件中。當(dāng)有重要的事件發(fā)生時(shí),會(huì)繼續(xù)在后面添加日志。這些調(diào)度器日志文件是由稱為 Scheduler Event Generator (SEG)的進(jìn)程進(jìn)行監(jiān)視的,它會(huì)讓 GRAM 通過監(jiān)聽相關(guān)的事件并與其通信,來保持與作業(yè)狀態(tài)的同步。

            GRAM 支持服務(wù)

            GRAM 提供了作業(yè)和執(zhí)行管理服務(wù)來提交、監(jiān)視和控制作業(yè),但是這都依賴于用來傳輸文件和管理證書所使用的支持服務(wù)。GridFTP 所提供的文件服務(wù)用來幫助 GRAM 實(shí)現(xiàn)對(duì)輸入和輸出文件的分段傳輸。證書管理服務(wù)處理證書對(duì)其他服務(wù)和所需要的分布式網(wǎng)格資源的委托。







            GRAM 作業(yè)提交

            現(xiàn)在我們已經(jīng)基本了解了這些功能和支持服務(wù),接下來讓我們討論一下實(shí)際的作業(yè)提交系統(tǒng)。

            作業(yè)提交的基礎(chǔ)知識(shí)

            可以使用應(yīng)用程序編程接口(API)或者通過命令行工具,以編程的方式提交作業(yè)。命令行工具是用來測(cè)試 Globus 安裝的一種簡(jiǎn)單方法,因此我們首先介紹一下這種方法。

            globusrun-ws 命令行工具取代了 managed-job-globusrun 命令,它用來提交、監(jiān)視和控制作業(yè)。它可以協(xié)調(diào)文件的分段傳輸、證書委托和身份驗(yàn)證問題。信息可以使用命令行選項(xiàng)進(jìn)行指定,也可以包含在一個(gè)基于 XML 的對(duì)象描述文件中。globusrun-ws 命令是同步執(zhí)行的,因此作業(yè)在提交時(shí)并不會(huì)返回控制權(quán)。相反,它會(huì)通過顯示作業(yè)的狀態(tài),以交互方式提供一些反饋。基于這些狀態(tài)信息,您可以選擇使用 Ctrl C 來取消某個(gè)作業(yè)。

            作業(yè)提交的前提條件

            所有的用戶都必須通過身份驗(yàn)證并具有有效的證書才可以提交作業(yè)。這個(gè)作業(yè)可能需要將證書委托給他人來執(zhí)行遠(yuǎn)程操作,例如分段傳輸文件。

            下面的例子假設(shè)已經(jīng)使用 grid-proxy-init 命令生成了一個(gè)有效的代理。然而,證書也可以通過作業(yè)請(qǐng)求進(jìn)行傳輸,或者上傳到 Delegation 服務(wù)中。清單 1 是提交一個(gè)簡(jiǎn)單作業(yè)(用來獲取日期)的例子。-c 選項(xiàng)指定要運(yùn)行 /bin/date 命令。


            清單 1. 提交作業(yè)來獲取日期
            												
            																		
            [globust@gt4-test ~]$ grid-proxy-init
            Your identity: /C=US/O=UTAustin/OU=TACC/CN=Globus User/UID=globust
            Enter GRID pass phrase for this identity:
            Creating proxy .............................................. Done
            Your proxy is valid until: Thu May 19 23:35:47 2005
            
            [globust@gt4-test ~]$ globusrun-ws -submit -c /bin/date
            Submitting job...Done.
            Job ID: uuid:254e353e-c884-11d9-9304-0011435a15ac
            Termination time: 05/20/2005 16:36 GMT
            Current job state: Active
            Current job state: CleanUp
            Current job state: Done
            Destroying job...Done.
            
            												
            										

            作業(yè)描述文件

            在命令行中指定多個(gè)作業(yè)參數(shù)可能會(huì)是一件令人討厭的事情。當(dāng)有多個(gè)參數(shù)與一個(gè)作業(yè)相關(guān)時(shí),可以使用作業(yè)描述文件。

            作業(yè)是使用 -f 選項(xiàng)提交的,后面跟著作業(yè)描述文件名。在作業(yè)描述文件中可以使用變量。在提交作業(yè)時(shí),GRAM 會(huì)處理作業(yè)描述文件,并替換變量的值。

            在下面這個(gè)例子中,變量 GLOBUS_USER_HOME 對(duì)應(yīng)我的主目錄。這個(gè)變量會(huì)被替換成解析后的值,這是到主目錄的實(shí)際路徑。在清單 2 中,我們提交了一個(gè)使用提交描述文件 simple_test.xml 描述的作業(yè)。這個(gè)作業(yè)使用 echo 命令將輸入?yún)?shù)重定向到標(biāo)準(zhǔn)輸出上。在這里,我們規(guī)定,應(yīng)該將標(biāo)準(zhǔn)輸出重定向到主目錄中的 stdout 文件。


            清單 2. 使用作業(yè)描述文件
            												
            																		
            globust@gt4-test ~]$ globusrun-ws -submit -f simple_test.xml 
            Submitting job...Done.
            Job ID: uuid:db96c126-c884-11d9-8a94-0011435a15ac
            Termination time: 05/20/2005 16:41 GMT
            Current job state: Active
            Current job state: CleanUp
            Current job state: Done
            Destroying job...Done.
            
            [globust@gt4-test ~]$ cat simple_test.xml 
            <job>
                <executable>/bin/echo</executable>
                <argument>Wow, we're submitting Grid Jobs!</argument>
                <stdout>${GLOBUS_USER_HOME}/stdout</stdout>
                <stderr>${GLOBUS_USER_HOME}/stderr</stderr>
            </job>
            
            												
            										

            批處理模式

            除了同步模式之外,globusrun-ws 命令還可以使用批處理模式來提交后臺(tái)作業(yè)。

            要使用批處理模式,則需要指定一個(gè)文件,其中 GRAM 應(yīng)該將 Job EPR 保存到所管理的作業(yè)資源中,然后在與這個(gè)作業(yè)相關(guān)的一系列命令中指定這個(gè)文件。

            在這個(gè)例子中,我們將提交與上一個(gè)例子相同的作業(yè),但是我們使用 -batch 選項(xiàng)指定它應(yīng)該在后臺(tái)運(yùn)行。控制權(quán)會(huì)立即返回,因此您可以在這個(gè)作業(yè)運(yùn)行的同時(shí)執(zhí)行其他工作。后臺(tái)作業(yè)的狀態(tài)可以使用 globusrun-ws 命令的 -status 參數(shù)進(jìn)行查詢,并指定 -job-epr-file,該參數(shù)可以確定與這個(gè)作業(yè)相關(guān)的 ManagedJob 對(duì)象。


            清單 3. 在后臺(tái)運(yùn)行清單 2 中的作業(yè)
            												
            																		
            globust@gt4-test ~]$ globusrun-ws -submit -batch -f simple_test.xml -o st.epr
            Submitting job...Done.
            Job ID: uuid:db96c126-c884-11d9-8a94-0011435a15ac
            Termination time: 05/20/2005 16:41 GMT
            Current job state: Active
            Current job state: CleanUp
            Current job state: Done
            Destroying job...Done.
            
            [globust@gt4-test ~]$ globusrun-ws -status -job-epr-file st.epr
            Submitting job...Done.
            
            												
            										

            作業(yè)變量

            您可以在作業(yè)描述文件中為這個(gè)作業(yè)設(shè)置環(huán)境變量,并通過指定一個(gè) count 參數(shù)來控制該作業(yè)運(yùn)行的次數(shù)。在下面這個(gè)例子中,環(huán)境變量 CONDOR_CONFIG 已經(jīng)設(shè)置,以指定 condor 配置文件的位置;count 變量說明這個(gè)作業(yè)應(yīng)該運(yùn)行 25 次。


            清單 4. 確定一個(gè)作業(yè)運(yùn)行多少次
            												
            																		
                <environment>
                    <name>CONDOR_CONFIG</name>
                    <value>/usr/local/condor/condor-6.7.7/etc/condor_config</value>
                </environment>
            
                ...
             
                <count>25</count>
            
            												
            										

            文件分段傳輸

            作業(yè)描述符文件可以包括文件傳輸指令,它控制輸入和輸出文件的分段傳輸。這些指令使用了 Reliable FileTransfer(RFT)語法,在指定源 URL 和目的 URL 時(shí)可以支持第三方的文件傳輸。

            RFT 服務(wù)是通過 GRAM 調(diào)用來分段傳輸輸入文件和輸出文件的。RFT 類似于一個(gè) GridFTP 客戶端,通過持續(xù)進(jìn)行傳輸來管理數(shù)據(jù)的傳輸和狀態(tài)信息。它通過支持檢查點(diǎn)和為崩潰的文件傳輸提供重啟功能而增強(qiáng)了可靠性。

            除了要對(duì)輸入和輸出文件進(jìn)行分段傳輸之外,GridFTP 還可以用來在作業(yè)執(zhí)行期間對(duì)輸出文件進(jìn)行監(jiān)視。GridFTP 可以檢查輸出文件的狀態(tài),并傳輸任何新信息,從而有效地處理輸出數(shù)據(jù)。

            清單 5 給出了文件分段傳輸指令,它用來從一個(gè)遠(yuǎn)程機(jī)器 gt4-test1 上獲取一個(gè)文件,并將其復(fù)制到 /tmp/simpleTestFile 中的本地文件系統(tǒng)中。


            清單 5. 文件分段傳輸指令
            												
            																		
            <fileStageIn>
                 <transfer>
                     <sourceUrl>gsiftp://gt4-test1:2811/tmp/simpleTestFile</sourceUrl>
                     <destinationUrl>file:////tmp/simpleTestFile</destinationUrl>
                 </transfer>
            </fileStageIn>
            
            												
            										

            除了對(duì)文件進(jìn)行分段傳輸之外,還可以使用 <fileCleanUp> 指令自動(dòng)刪除文件,如清單 6 所示:


            清單 6. 自動(dòng)清除文件
            												
            																		
            <job>
                 <fileCleanUp>
                    <deletion>
                        <file>file:////tmp/simpleTestFile</file>
                    </deletion>
                </fileCleanUp>
            </job>
            
            												
            										

            多作業(yè)支持

            作業(yè)描述 XML 模式支持多作業(yè) 的概念,即由多個(gè)作業(yè)或子作業(yè)組成的作業(yè)。這種方法可以用來將一組相關(guān)的作業(yè)綁定在一起,并將其一次提交給 GRAM。

            GRAM 使用一個(gè)集中地點(diǎn)來對(duì)多作業(yè)環(huán)境中的各個(gè)進(jìn)程進(jìn)行同步。這用于那些在完成其他計(jì)算之前需要在執(zhí)行過程中的某個(gè)特定地方集中的并行作業(yè)。

            作業(yè)描述符文件中的每個(gè)子作業(yè)都必須為工廠指定一個(gè)端點(diǎn)。這允許并行地向多個(gè)主機(jī)提交作業(yè)。

            下面這個(gè)例子為一個(gè)由兩個(gè)子作業(yè)做成的作業(yè)使用了一個(gè)多作業(yè)的描述文件 —— 一個(gè)作業(yè)用來獲取日期,另外一個(gè)作業(yè)使用 echo 命令將輸入?yún)?shù)傳遞給標(biāo)準(zhǔn)輸出。第一個(gè)子作業(yè)的輸出被發(fā)送到主目錄中的 stdout.p1 文件中,第二個(gè)子作業(yè)的輸出被發(fā)送到 stdout.p2 文件中。


            清單 7. 兩個(gè)作業(yè),只花一份錢
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <multiJob xmlns:gram="http://www.globus.org/namespaces/2004/10/gram/job" 
                 xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
                <factoryEndpoint>
                    <wsa:Address>
                        https://localhost:8443/wsrf/services/ManagedJobFactoryService
                    </wsa:Address>
                    <wsa:ReferenceProperties>
                        <gram:ResourceID>Multi</gram:ResourceID>
                    </wsa:ReferenceProperties>
                </factoryEndpoint>
                <directory>${GLOBUS_LOCATION}</directory>
                <count>1</count>
            
                <job>
                    <factoryEndpoint>
                        <wsa:Address>https://localhost:8443/wsrf/services/ManagedJ
                        obFactoryService</wsa:Address>
                        <wsa:ReferenceProperties>
                            <gram:ResourceID>Fork</gram:ResourceID>
                        </wsa:ReferenceProperties>
                    </factoryEndpoint>
                    <executable>/bin/date</executable>
                    <stdout>${GLOBUS_USER_HOME}/stdout.p1</stdout>
                    <stderr>${GLOBUS_USER_HOME}/stderr.p1</stderr>
                    <count>2</count>
                </job>
            
                <job>
                    <factoryEndpoint>
                        <wsa:Address>https://localhost:8443/wsrf/services/ManagedJ
                        obFactoryService</wsa:Address>
                        <wsa:ReferenceProperties>
                            <gram:ResourceID>Fork</gram:ResourceID>
                        </wsa:ReferenceProperties>
                    </factoryEndpoint>
                    <executable>/bin/echo</executable>
                    <argument>Hello World!</argument>        
                    <stdout>${GLOBUS_USER_HOME}/stdout.p2</stdout>
                    <stderr>${GLOBUS_USER_HOME}/stderr.p2</stderr>
                    <count>1</count>
                </job>
            
            </multiJob>
            
            												
            										







            調(diào)度器

            上面我們簡(jiǎn)要介紹了網(wǎng)格是如何包含在調(diào)度器的控制之下進(jìn)行操作的集群資源。調(diào)度器會(huì)對(duì)吞吐量進(jìn)行性能和效率的優(yōu)化。

            GRAM 使用實(shí)現(xiàn) GRAM WS 適配器插件 API 的適配器來對(duì)調(diào)度器進(jìn)行協(xié)調(diào)。這些調(diào)度器的安裝和配置應(yīng)該在安裝或配置 Globus Toolkit 之前完成。

            GRAM 調(diào)度器適配器包含在 Globus PBS (Portable Batch System)的發(fā)行版、 Condor 和 Platform Load Sharing Facility (LSF)中。 Globus 文檔介紹了 PBS 的設(shè)置步驟,因此我們下面將介紹一下 Condor 和 Platform LSF。我們假設(shè)您已經(jīng)正確安裝并配置了 Globus(這包括導(dǎo)出的環(huán)境變量,例如 ANT_HOMEJAVA_HOMEGLOBUS_LOCATION)。在 Globus 的安裝目錄中,執(zhí)行下面的命令:

            												
            														% configure -prefix=$GLOBUS_LOCATION -enable-wsgram-lsf -enable-wsgram-condor
            % make
            % make install
            
            												
            										

            假設(shè)這個(gè)步驟成功完成了,那么在 $GLOBUS_LOCATION/etc 目錄中,每個(gè)調(diào)度器都會(huì)有一個(gè) gram-service,如清單 8 所示:


            清單 8. 創(chuàng)建一個(gè) gram-service 監(jiān)聽
            												
            																		
            [mausolf@gt4-test etc]$ pwd
            /usr/local/globus/globus-4.0.0/etc
             [mausolf@gt4-test etc]$ ls gram-service-*
            gram-service-Condor:
            jndi-config.xml
            
            gram-service-Lsf:
            jndi-config.xml
            
            gram-service-Fork:
            jndi-config.xml
            
            gram-service-Multi:
            jndi-config.xml
            
            												
            										

            jobType

            在提交作業(yè)時(shí),您可以使用 jobType 指令指定使用哪一個(gè)調(diào)度器。在 jobType 中指定的名稱必須與 JNDI 配置文件中這個(gè)服務(wù)所使用的名稱完全匹配。

            例如,在下面這個(gè)例子中,作業(yè) jndi-config.xml (位于 $GLOBUS_LOCATION/etc/gram-service-condor 目錄中)將名稱 condor 賦予這個(gè)服務(wù)。下面這個(gè)例子使用了一個(gè)作業(yè)描述文件 simple2test.xml 將作業(yè)提交給 condor


            清單 9. 指定使用哪個(gè)調(diào)度器
            												
            																		
            <?xml version="1.0" encoding="UTF-8"?>
            <job>
                <executable>/usr/local/condor/condor-6.7.7/examples/sh_loop</executable>
                <directory>${GLOBUS_USER_HOME}</directory>
                <argument>123</argument>
                <stdin>/dev/null</stdin>
                <stdout>${GLOBUS_USER_HOME}/stdout</stdout>
                <stderr>${GLOBUS_USER_HOME}/stderr</stderr>
                <jobType>condor</jobType>
            </job>
            
            												
            										

            可以在命令行中使用 globusrun-ws 來提交這個(gè)作業(yè),如下所示:

            												
            														[globust@gt4-test ~]$ globusrun-ws -submit -batch -f simple2test.xml -o st2.epr
            
            												
            										

            在這個(gè)例子中,這個(gè)作業(yè)是在后臺(tái)運(yùn)行的。控制權(quán)會(huì)立即返回,您可以通過提供 job-epr-file 來獲得后臺(tái)作業(yè)的狀態(tài),如下所示:

            												
            														[globust@gt4-test ~]$ globusrun-ws -status -job-epr-file st2.epr
            Current job state: Done

            讓我們來看一個(gè)更加真實(shí)的多作業(yè)提交系統(tǒng),它可以用類似的方式提交作業(yè)。因?yàn)槲覀円峤欢嘧鳂I(yè),所以將 jobType 指定為 Condor,然后通過 GRAM 和 Condor 來查詢其狀態(tài)。


            清單 10. 為多作業(yè)指定調(diào)度器
            												
            																		
             [globust@gt4-test ~]$ globusrun-ws -submit -batch -f multi3test.xml -o mt3.epr
            Delegating user credentials...Done.
            Submitting job...Done.
            Job ID: uuid:b701732a-c95f-11d9-870d-0011435a15ac
            Termination time: 05/21/2005 18:48 GMT
            
             [globust@gt4-test ~]$ condor_q
             Submitter: gt4-test.tacc.utexas.edu : <129.114.50.64:54109> 
             : gt4-test.tacc.utexas.edu
             ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD                
             62.0   globust         5/24 11:07   0+00:00:04 R  0   0.0  sh_loop 1100      
             63.0   globust         5/24 11:07   0+00:00:00 R  0   0.0  sh_loop 1200      
            
            2 jobs; 0 idle, 2 running, 0 held
            
            
             [globust@gt4-test ~]$ globusrun-ws -status -job-epr-file mt3.epr
            Current job state: Pending 
            
            												
            										

            清單 11 給出了用于清單 10 中的多作業(yè)提交的作業(yè)描述文件。所指定的可執(zhí)行文件 sh_loop 是 Condor 發(fā)行版中提供的一個(gè)示例程序,它會(huì)循環(huán)一段指定的時(shí)間。之所以選擇這個(gè)例子是因?yàn)樗浅:?jiǎn)單,而且可以指定作業(yè)的持續(xù)時(shí)間,這讓我們可以使用 Condor 和 GRAM 工具來展示查詢作業(yè)的狀態(tài)。


            清單 11. 清單 10 中作業(yè)所使用的作業(yè)描述符
            												
            																		
            [globust@gt4-test ~]$ cat multi3test.xml 
            <?xml version="1.0" encoding="UTF-8"?>
            <multiJob xmlns:gram="http://www.globus.org/namespaces/2004/10/gram/job" 
                 xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
                <factoryEndpoint>
                    <wsa:Address>
                        https://gt4-test.tacc.utexas.edu:8443/wsrf/services/ManagedJ
                        obFactoryService
                    </wsa:Address>
                    <wsa:ReferenceProperties>
                        <gram:ResourceID>Multi</gram:ResourceID>
                    </wsa:ReferenceProperties>
                </factoryEndpoint>
                <directory>${GLOBUS_LOCATION}</directory>
                <count>1</count>
            
                <job>
                    <factoryEndpoint>
                        <wsa:Address>https://gt4-test.tacc.utexas.edu:8443/wsrf/serv
                        ices/ManagedJobFactoryService</wsa:Address>
                        <wsa:ReferenceProperties>
                            <gram:ResourceID>Condor</gram:ResourceID>
                        </wsa:ReferenceProperties>
                    </factoryEndpoint>
                    <executable>/home/mausolf/sh_loop</executable>
                    <argument>1100</argument>        
                    <stdout>${GLOBUS_USER_HOME}/stdoutM3.p1</stdout>
                    <stderr>${GLOBUS_USER_HOME}/stderrM3.p1</stderr>
                    <count>1</count>
                </job>
            
                <job>
                    <factoryEndpoint>
                        <wsa:Address>https://gt4-test.tacc.utexas.edu:8443/wsrf/serv
                        ices/ManagedJobFactoryService</wsa:Address>
                        <wsa:ReferenceProperties>
                            <gram:ResourceID>Condor</gram:ResourceID>
                        </wsa:ReferenceProperties>
                    </factoryEndpoint>
                    <executable>/home/mausolf/sh_loop</executable>
                    <argument>1200</argument>        
                    <stdout>${GLOBUS_USER_HOME}/stdoutM2.p2</stdout>
                    <stderr>${GLOBUS_USER_HOME}/stderrM2.p2</stderr>
                    <count>1</count>
                </job>
            
            </multiJob>
            
            												
            										







            結(jié)束語

            本文對(duì) Globus Toolkit 4.0 進(jìn)行了簡(jiǎn)要的介紹,并詳細(xì)介紹了 GRAM 和支持服務(wù)的內(nèi)容。文中還包括幾個(gè)網(wǎng)格作業(yè)提交的例子,用來提供通過 GRAM 來提交作業(yè)和監(jiān)視作業(yè)的經(jīng)驗(yàn)。在更復(fù)雜和實(shí)際的環(huán)境中,GRAM 還需要作出一個(gè)明智的決定,來確定將作業(yè)提交到哪一個(gè)資源和調(diào)度器上。這些信息可以通過 MDS(Monitoring and Discovery Service)獲得。

            posted on 2006-04-17 03:53 wsdfsdf 閱讀(397) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            99久久精品毛片免费播放| 久久精品国产亚洲av麻豆小说| 久久影视国产亚洲| 亚洲国产另类久久久精品 | 久久夜色精品国产网站| 香蕉99久久国产综合精品宅男自| 国产91色综合久久免费分享| 精品久久久久中文字幕一区| 99久久无色码中文字幕| 日日狠狠久久偷偷色综合免费| 狠狠88综合久久久久综合网| 久久精品桃花综合| 色偷偷91久久综合噜噜噜噜| 久久久久久亚洲Av无码精品专口 | 久久美女人爽女人爽| 色婷婷综合久久久久中文| 久久99精品国产99久久6| 久久久久99精品成人片直播| 伊人色综合九久久天天蜜桃| 久久久亚洲AV波多野结衣| 久久亚洲AV无码西西人体| 精品999久久久久久中文字幕| 久久精品国产只有精品2020| 久久人人爽人人爽人人片av麻烦 | 国内精品综合久久久40p| 久久精品国产2020| 伊人久久无码精品中文字幕| 99久久亚洲综合精品成人| 亚洲国产精品无码久久98| 日日狠狠久久偷偷色综合免费 | 久久久久夜夜夜精品国产| 久久人人爽人人爽人人片AV不| 99精品国产免费久久久久久下载 | 久久久精品午夜免费不卡| 无码专区久久综合久中文字幕| 一级A毛片免费观看久久精品| 久久国产精品一区| 国产aⅴ激情无码久久| 久久久久久久久66精品片| 亚洲欧洲中文日韩久久AV乱码| 国产精品热久久毛片|