Grid Ortamında İş Gönderme I. Ulusal Yüksek Başarım ve Grid Konferansı 15-18 Nisan 2009, ODTÜ, Ankara http://www.grid.org.tr/basarim09/ www.grid.org.tr
İÇERİK İş gönderme yöntemleri Kullanıcı arayüz sunucularına bağlanma Kullanıcı yetkilendirme İşi tanımlama Grid Dili: JDL JDL Nitelikleri Örnek JDL Dosyası İş Gönderme
Gride İş Gönderme Yöntemleri Konsol aracılığı ile; Linux/Windows masaüstü bilgisayarlarınızdan SSH istemci programı Kullanıcı arayüz sunucularına erişim Web portalı yardımı ile: P-Grade uygulaması Tarayıcı bir program Java plug-in
Kullanıcı Arayüz Sunucularına Erişim Kullanıcı arayüz sunucusuna SSH istemci programı ile bağlantının sağlanması: Linux: Terminal, Windows: SSH istemcisi (putty, v.b.) Sunucu Adı : lufer.ulakbim.gov.tr Kullanıcı Adı: egitimxx Kullanıcı Şifresi: xxxxxxxxx.p12 uzantılı açık/kapalı anahtar ikilisinin ayrıştırılması
Kullanıcı Arayüz Sunucularına Erişim - II
Kullanıcı Arayüz Sunucularına Erişim - III.globus dizinin kontrol edilmesi: $ ls -lar ~egitimxx/.globus
Kullanıcı Arayüz Sunucularına Erişim - IV $ ls la is-gonderme
Geçici Sertifika Oluşturmak Grid ortamında yetkilendirilmeler X.509 standardında sayısal sertifikalar ile yapılmaktadır. X.509 sertifikaları aşağıdaki bilgileri içerir: Kullanıcı açık anahtarı, Kullanıcı hakkında bilgi, Sertifika otoritesi bilgisi, Geçerlilik süresi, Sertifika otoritesinin imzası Sertifikanızı incelemek için; $ grid-cert-info
Geçici Sertifika Oluşturmak - II
Geçici Sertifika Oluşturmak - III Geçici olarak yetkilendirilmek için sertifika oluşturulması: $ voms-proxy-init voms sgdemo
Geçici Sertifika Oluşturmak - IV Oluşturulan geçici sertifika hakkında bilgi edinilmesi: $ voms-proxy-info all Oluşturulan geçici sertifikanın iptal edilmesi: $ voms-proxy-destroy
Kullanılabilen Kaynakların Listelenmesi Herhangi bir sanal organizasyon için o an geçerli çalışılabilir kaynakları görüntülemek için: $ lcg-infosites --vo <VO> [option(s)] sgdemo/trgridb sanal organizasyonuna bağlı sitelerdeki hesaplama elemanı(ce) hakkında bilgi almak için: $ lcg-infosites --vo sgdemo ce sgdemo/trgridb sanal organizasyonuna bağlı sitelerdeki depolama elemanı(ce) hakkında bilgi almak için: $ lcg-infosites --vo sgdemo se Sorgulanabilecek diğer özellikleri görmek için: $ lcg-info --list-attrs
İşin Gereksinimlerini Belirlemek Bilmemiz gerekenler: Hangi programlar gönderilecek? Hangi veriye erişilecek? Veri programla birlikte mi gönderilecek? Herhangi bir işletim sistemi bağımlılığı var mı? Herhangi bir kütüphane bağımlılığı var mı? Gönderdiğimiz uygulama: Bilinmeyen bir sistemde çalışabilmeli Çalışma dizini dışında yer alacak şekilde sabit olarak belirlenmiş dizinler ve dosyalar içermemeli
Grid Dünyasının Dili: JDL Job Description Language (JDL) Condor ClassAd dili standardında geliştirilmiştir. Bir JDL dosyası niteliklerle oluşturulur: <nitelik> = <anahtar>; Nitelikler temel olarak ikiye ayrılabilir: İş nitelikleri: işin kendini tanımlar. Kaynak nitelikleri: işe uygun kaynakları bulunmasını sağlar. #, // veya /* */ ile JDL içine açıklama satırları yazılabilir.
JDL Dosyası JDL parçalayıcının(parser) hatasız bir şekilde çözümleme yapması için gerekli nitelikler: Tüm iş tanımlar köşeli parantezler içinde olmalıdır. Örnek: [ <iş tanımı>] Her tanım satırı noktalı virgül ile ayrılmalıdır. JDL boşluk ve tab karakterlerine duyarlıdır.
JDL Nitelikleri JobType Normal (basit, seri iş), Interactive, MPICH, Checkpointable Executable Çalıştırılacak komut Arguments Komuta verilecek argümanlar StdInput, StdOutput, StdError Standart girdi, çıktı ve hata dosyaları Environment Çevre değişkenleri InputSandbox Kullanıcı arayüzünden çalışacağı siteye gönderilecek dosyalar OutputSandbox İş bitiminde alınacak dosyalar Requirements Gerekli kaynak nitelikleri Rank Bulunan kaynakların sıralanması
JDL Nitelikleri - II Executable = < string > Çalıştırılacak programı göstermektedir. Aynı dosya ismi InputSandbox niteliğinde de belirtilmelidir. Özel karakterlere izin verilmez. Örnek: Executable = { /opt/sw/sgdemo/test.sh }; StdOutput, StdError, StdInput = < string > Çıktı, hata ve giriş dosyalarını göstermektedir. Aynı dosya isimleri OutputSandbox niteliğinde de belirtilmelidir.
JDL Nitelikleri - III InputSandbox, OutputSandbox = < string string listesi > InputSandbox, çalıştırılacak işin ihtiyacı olan giriş dosyalarını göstermektedir. UI (User Interface) -> WN (Worker Node) OutputSandbox, çalıştırılan işin çıktı dosyalarını göstermektedir. WN (Worker Node) -> UI (User Interface) InputSandbox'da gösterilen dosyaların toplam boyutu 20 MB'ı geçmemelidir.
JDL Nitelikleri - IV Job Type Normal (simple, sequential job), Interactive, MPICH, Checkpointable Arguments Komut satırı parametrelerini vermek için kullanılır. Örnek: Executable = /bin/sh ; Örnek: Arguments = Merhaba Grid Dünyası ; Environment Çevre değişkenlerinin tanımlanmasını sağlar. Örnek: Environment = JAVABIN=/usr/local/java ;
JDL Nitelikleri - V Requirements Uygun kaynak koşullarının tanımlanmasını sağlar. Örnek: Requirements=other.GlueCEUniqueID == se.ulakbim.gov.tr:2119/jobmanager-lcgpbs-sgdemo Rank Requirements niteliğindeki koşullara uygun CE ler sıralanır. Örnek: Rank = other.gluecestatefreecpus;
JDL Nitelikleri - VI InputData Giriş (input) dosyalarını gösteren (LFN) Logical File Name veya (GUID) Global Unique Identifier belirtilir. Örnek: InputData = { lfn:cmstestfile, guid:135b7b23-4a6a-11d7-87e7-9d101f8c8b70 }; DataAccessProtocol SE (Storage Element) ulaşmak için kullanılacak protokol ya da protokoller belirlenir. Örnek: DataAccessProtocol = { file, gsiftp }; StorageElement Çıkış (output) dosyalarını tutmak için depolama elemanı belirlenir.
Örnek JDL Dosyası Executable = "/bin/sh"; Arguments = "HelloWorld.sh"; Stdoutput = "stdoutput.txt"; StdError = "stderror.txt"; InputSandbox = {"HelloWorld.c","HelloWorld.sh"}; OutputSandbox = {"stdoutput.txt","stderror.txt"}; Requirements = (other.gluehostoperatingsystemname == linux"); Rank = other.gluecestatefreecpus;
İş Göndermeden Önce... JDL dosyasında yer alan niteliklere göre, işin çalışabileceği siteleri görebilmek için: $ glite-wms-job-list-match a <job.jdl> İşin belli bir sitede çalışması için Requirement satırı kullanılabilir: Requirements = other.glueceuniqueid == "ce.ulakbim.gov.tr:2119/jobmanager-lcgpbs-sgdemo"
İş Göndermeden Önce - II
İş Göndermek ve İşin Durumunu İzlemek İş göndermek için; glite-wms-job-submit a [--vo <VO>] [-o <dosya_ismi>] <job.jdl> --vo Sanal organizasyon, geçici sertifika oluşturulurken sanal organizasyon tanımı yapıldı ise, kullanılmasına gerek yoktur. -o Oluşacak işnumarası'nın yazılması istenilen dosya ismi İşin durumunu öğrenmek için; glite-wms-job-status i <dosya_ismi> (veya işnumarası) -i İş gönderilirken verilen dosya ismi burada kullanılabilir.
Uygulama-I
Uygulama-I
İş Durumları Submitted İş UI makinası aracılığı ile yollandı.
İş Durumları Waiting İş kabul edildi ve WMS sunucusunda beklemede
İş Durumları Ready İş WMS tarafında incelendi ve uygun CE sunucusuna gönderilmek için hazır
İş Durumları Scheduled İş CE sunucusuna gönderildi ve kuyrukta bekliyor
İş Durumları Running İş çalışmaya başladı
İş Durumları Done İş tamamlandı
İş Durumları Cleared İş için Çıktı Torbası UI sunucusuna alındı veya zaman aşımından dolayı silindi
Diğer İş Komutları glite-wms-job-cancel <işnumarası> Belirtilen işi iptal eder. glite-wms-job-status <işnumarası> İş hakkında bilgi verir. glite-wms-job-output <işnumarası> İşin çıktı torbasını getirir. glite-wms-job-logging-info <işnumarası> İş hakkında detaylı bilgi verir, hata gidermek için yararlı bir komuttur.
Uygulama-I
Uygulama-I
Uygulama-II
Uygulama-II
Uygulama-II glite-wms-job-submit a -o id.txt HelloWorld.jdl glite-wms-job-status -i id.txt glite-wms-job-cancel -i id.txt glite-wms-job-submit -o id.txt HelloWorld.jdl glite-wms-job-status -i id.txt glite-wms-job-status all. glite-wms-job-output -i id.txt
Uygulama-III
http://www.grid.org.tr http://wiki.grid.org.tr grid-teknik@ulakbim.gov.tr