320 likes | 630 Views
Grid İş Gönderme Emrah Akkoyun, emrah@ulakbim.gov.tr Feyza Eryol, feyza@ulakbim.gov.tr. Grid'e İş Gönderme Yöntemleri. Konsol Aracılığıyla iş gönderebilirsiniz.
E N D
Grid İş Gönderme Emrah Akkoyun, emrah@ulakbim.gov.tr Feyza Eryol, feyza@ulakbim.gov.tr
Grid'e İş Gönderme Yöntemleri • Konsol Aracılığıyla iş gönderebilirsiniz. • Linux işletim sistemlerinden açtığınız terminalden işlerinizi gönderebileceğiniz gibi, Windows gibi işletim sistemlerinde Putty gibi araçlar kullanarak da işlerinizi gönderebilirsiniz. • Kullanıcı ara yüzüne ssh ile bağlantı yapılır. • Web portalı aracılığıyla işlerinizi gönderebilirsiniz. • P- Grade portalı bu araçlardandır.
Kullanıcı Arayüzüne Erişim • Kullanıcı arayüzüne ssh ile bağlanın • - Terminal, Putty, ... • - Kullanıcılar: egitim(1-20) • - Sunucu: egitim-ui.ulakbim.gov.tr (193.140.99.19) • ssh -l egitim20 egitim-ui.ulakbim.gov.tr • globus dizininin varlığını kontrol edin • ls –laR .globus • drwxr-xr-x 2 root root 4096 Aug 15 13:57 . • drwx------ 31 root root 4096 Feb 10 15:32 .. • -rw-r--r-- 1 root root 5577 Mar 14 2006 usercert.pem • -rw------- 1 root root 963 Mar 14 2006 userkey.pem • Pratik eğitim için gerekli örnek dosyaları kullanıcı dizininize açın: • cd ~ • tar -xzvf egitim.tar.gz
Geçici Sertifika Oluşturmak • Bir X.509 sertifikası şu 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 Açık Anahtar Subject: C=TR, O=TRGrid, OU=TUBITAK-ULAKBIM, CN=Onur Temizsoylu Issuer: C=TR, O=TRGrid, CN=TR-Grid CA Validity Not Before: Feb 5 10:05:58 2007 GMT Not After : Feb 5 10:05:58 2008 GMT Sertifika Otoritesi İmzası
Çalışabileceğiniz Kaynakları Görüntülemek • Herhangi bir sanal organizasyon için o an geçerli çalışabileceğiniz kaynakları görüntülemek için: • lcg-infosites --vo <VO> [option(s)] • sgdemo sanal organizasyonuna bağlı sitelerde ki hesaplama elemanı(ce) hakkında bilgi almak için: • lcg-infosites --vo sgdemo ce • sgdemo sanal organizasyonuna bağlı sitelerde ki depolama elemanı(se) hakkında bilgi almak için:: • lcg-infosites --vo sgdemo se • lcg-infosites --vo sgdemo closeSE • Sorgulanabilecek diğer özellikleri görmek için: • lcg-info –list-attrs
Proxy Oluşturmak • Çalışmak için geçici sertifika oluşturun: • voms-proxy-init --voms sgdemo • Oluşturduğunuz geçici sertifika hakkında bilgi edinin: • voms-proxy-info –all • Oluşturduğunuz geçici sertifikyı yok etmek için: • voms-proxy-destroy
İşinizi Çalıştırmadan Önce • Bilmeniz gerekenler: • Hangi programlar gönderilecek? • Hangi veriye erişilecek, veri program ile birlikte mi gidecek? • Herhangi bir işletim sistemi, kütüphane bağımlılığı var mı? • Gönderdiğiniz uygulama: • Bilinmeyen bir sistemde çalışabilmeli • Çalışma dizini dışında yer alacak şekilde sabit olarak belirlenmiş dizinler ve dosyalar içermemelidir.
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ı virgul ile ayrılmalıdır. • JDL boşluk karakteri ve tablara duyarlıdır.
JDL Nitelikleri(1) • 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(2) • Executable = < string > • • Çalıştırılacak programı göstermektedir. • - Aynı dosya ismi InputSandbox da da belirtilmelidir. • • Özel karakterler izin verilmez. • . (Örnek: Executable = {“/opt/sw/sgdemo/test.sh”}; ) • StdOutput, StdError, StdInput = < string > • • Çıktı, hata ve giriş dosyaları • - Aynı dosya isimleri OutputSandbox da da belirtilmelidir. • • Bu nitelik, etkileşimli işler için (interactive jobs) gerekli değildir.
JDL Nitelikleri(3) • InputSandbox, OutputSandbox = < string | string listesi > • • InputSandbox, çalıştırılacak işin ihtiyacı olan giriş dosyaları • - UI (User Interface) den WN (Worker Node) • •OutputSandbox, Sonuç dosyaları • - WN (Worker Node) dan UI (User Interface) • InputSandbox da gösterilen dosyaların toplam boyutu • 20 MB dan az olmalıdır.
JDL Nitelikleri(4) Job Type • Normal (simple, sequential job), Interactive, MPICH, Checkpointable, – Checkpointable, Interactive – Checkppointable, MPI • MPICH ve NodeNumber - RB (Resource Broker) uygun CE leri seçmek için kullanır. Örnek: NodeNumber = 5; Arguments • Komut satırı parametreleri vermek için kullanılır. Örnek: Executable = “/bin/sh”; Arguments = “Merhaba Grid Dünyası”; Environment • Çevre ayarları listesini. Örnek: Environment = “JAVABIN=/usr/local/java”;)
JDL Nitelikleri(5) Requirements • Uygun kaynak koşulları Örnek: Requirements=other.GlueCEUniqueID == “adc006.cern.ch:2119/jobmanager-pbs-infinite” Rank • Requirements niteliğindeki koşullara uygun CE ler sıralanır. Örnek: Rank = other.GlueCEStateFreeCPUs;
JDL Nitelikleri(6) 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 yada protokoller Örnek: DataAccessProtocol = {“file”,“gsiftp”}; StorageElement • Çıkış(output) dosyalarını tutmak için depolama elemanı
Örnek JDL Dosyası ornek.jdl 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örebilirsiniz. • glite-job-list-match <job.jdl> • İşinizin belli bir sitede çalışması için Requirement satırı • ekliyebilirsiniz. • Requirements = other.GlueCEUniqueID == • "ce.ulakbim.gov.tr:2119/jobmanager-lcgpbs-sgdemo";
İş Göndermek • JDL dosyasında yer alan niteliklere göre işin çalışabileceği siteleri görebilirsiniz. • glite-job-list-match <job.jdl> • İş göndermek için; • glite-job-submit [--vo <VO>] [-o <dosya_ismi>] <job.jdl> --vo Sanal organizasyon, geçici oluşturulurken tanımlandı ise gerek yoktur -o Oluşacak işNumarası bu dosyaya yazılır • glite-job-status –i <dosya_ismi> (veya işNumarası) -i İş gönderilirken verilen dosya ismi burada kullanılabilir
İş Göndermek glite-job-submit HelloWorld.jdl **** Warning: UI_VOMS_OVERRIDE **** The Virtual Organisation name "dteam" you have specified with the UI conf file will be overriden by the default VO in your proxy credentials: "sgdemo" Selected Virtual Organisation name (from proxy certificate extension): sgdemo Connecting to host wms.ulakbim.gov.tr, port 7772 Logging to host wms.ulakbim.gov.tr, port 9002 ********************************************************************************************* JOB SUBMIT OUTCOME The job has been successfully submitted to the Network Server. Use glite-job-status command to check job current status. Your job identifier is: - https://wms.ulakbim.gov.tr:9000/2n33HIg63quJXLKgHG2m-A JobID *********************************************************************************************
Diğer İş Komutları • glite-job-cancel <işNumarası> • Belirtilen işi iptal eder • glite-job-status <işNumarası> • İş hakkında bilgi verir • glite-job-output <işNumarası> • İşin çıktı torbasını getirir • glite-job-logging-info <işNumarası> • İş hakkında detaylı bilgi verir, hata gidermek için yararlı bir komuttur
İş 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
İnteraktif İşler • İnteraktif iş, standart girdi, çıktı ve hataları iş gönderilen istemciye yönlendiren iş tipidir: • KullanıcıJobTypeniteliğiniinteractive olarak ayarlamalıdır. • Bir interaktif iş gönderildiğinde glite-job-submit komutu arka planda bir gölge konsol işi başlatır. • Konsolun kullanacağı port,ListenerPortniteliği ile değiştirilebilir. • DISPLAYçevre değişkeni düzgün ayarlanmalı veya –nogui parametresi kullanılmalıdır. • OutputSandboxniteliğini tanımlamaya gerek yoktur. İnteraktif pencereye çıktılar gelecektir.
MPICH İşleri • Paralel iş koşturmak için birçok kütüphane vardır. gLite orta katmanında MPICH tercih edilmiştir. • Kullanıcı JobType niteliğini MPICH olarak ayarlamalı ve NodeNumberniteliği ile gerekli işlemci sayısını ayarlamalıdır. • Bir sitede MPICH işi çalışması için sitenin uygun şekilde düzenlenmesi dışında: • Sitenin MPICH desteklediğinin işaretlenmesi gerekmektedir. • İstenen işlemci miktarı sitedeki mevcut işlemci sayısından az olmalıdır.
MPICH İşleri [ JobType = “MPICH"; Executable = "cpi"; NodeNumber = 2; StdOutput = "test.out"; StdError = "test.err"; InputSandbox = {"cpi"}; OutputSandbox = {"test.out","test.err"}; ] • NodeNumberişin çalışacağı işlemci sayısını belirtir. • İşlemci sayısı arttıkça işin kuyrukta bekleme süresi de artacaktır.
http://www.grid.org.tr http://wiki.grid.org.tr grid-teknik@ulakbim.gov.tr