Grid Ortamında İş Gönderme Feyza Eryol, Emrah Akkoyun,
22/10/2007TR-Grid Eğitimi2 İçerik İş 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 İnteraktif ve MPICH İşleri
22/10/2007TR-Grid Eğitimi3 Grid'e İş 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
22/10/2007TR-Grid Eğitimi4 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ı : egitim-ui.ulakbim.gov.tr Kullanıcı Adı: egitimxx Kullanıcı Şifresi: egitimxx Yetkilendirilmenin sağlanması .globus dizinin kontrol edilmesi: $ ls -laR.globus
22/10/2007TR-Grid Eğitimi5 Kullanıcı Arayüz Sunucularına Erişim-II $ ls -lrt $ tar -zxvf egitim.tar.gz
22/10/2007TR-Grid Eğitimi6 Geçici Sertifika Oluşturmak Grid ortamında yetkilendirilmeler X.509 standardındaki 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; 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: GMT Not Before: Feb 5 10:05: GMT Not After : Feb 5 10:05: GMT Not After : Feb 5 10:05: GMT Sertifika Otoritesi İmzası Açık Anahtar $ grid-cert-info
22/10/2007TR-Grid Eğitimi7 Geçici Sertifika Oluşturmak-II Geçici olarak yetkilendirilmek için sertifika oluşturulaması: $ voms-proxy-init –voms sgdemo Oluşturulan geçici sertifika hakkında bilgi edinilmesi: $ voms-proxy-info --all Oluşturulan geçici sertifikanın iptal edilmesi: $ voms-proxy-destroy
22/10/2007TR-Grid Eğitimi8 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 [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ı(ce) hakkında bilgi almak için: $ lcg-infosites --vo sgdemo se Sorgulanabilecek diğer özellikleri görmek için: $ lcg-info --list-attrs
22/10/2007TR-Grid Eğitimi9 İş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
22/10/2007TR-Grid Eğitimi10 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: = ; 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.
22/10/2007TR-Grid Eğitimi11 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: [ ] Her tanım satırı noktalı virgul ile ayrılmalıdır. JDL boşluk ve tab karakterlerine duyarlıdır.
22/10/2007TR-Grid Eğitimi12 JDL Nitelikleri-I 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ı
22/10/2007TR-Grid Eğitimi13 JDL Nitelikleri-II Executable = Ç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 = Çıktı, hata ve giriş dosyalarını göstermektedir. Aynı dosya isimleri OutputSandbox niteliğinde de belirtilmelidir. Bu nitelik, etkileşimli işler için (interactive jobs) gerekli değildir.
22/10/2007TR-Grid Eğitimi14 JDL Nitelikleri-III InputSandbox, OutputSandbox = 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.
22/10/2007TR-Grid Eğitimi15 JDL Nitelikleri-IV 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ı 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”;
22/10/2007TR-Grid Eğitimi16 JDL Nitelikleri-V Requirements Uygun kaynak koşullarının tanımlanmasını sağlar. Ö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;
22/10/2007TR-Grid Eğitimi17 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.
22/10/2007TR-Grid Eğitimi18 Ö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;
22/10/2007TR-Grid Eğitimi19 İş Göndermeden Önce... JDL dosyasında yer alan niteliklere göre, işin çalışabileceği siteleri görebilmek için: $ glite-job-list-match İşin belli bir sitede çalışması için Requirement satırı kullanılabilir: Requirements = other.GlueCEUniqueID == "ce.ulakbim.gov.tr:2119/jobmanager-lcgpbs-sgdemo"
22/10/2007TR-Grid Eğitimi20 Uygulama-I
22/10/2007TR-Grid Eğitimi21 İş Göndermek ve İşin Durumunu İzlemek İş göndermek için; glite-job-submit [--vo ] [-o ] --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-job-status –i (veya işNumarası) -i İş gönderilirken verilen dosya ismi burada kullanılabilir.
22/10/2007TR-Grid Eğitimi22 Uygulama-I
22/10/2007TR-Grid Eğitimi23 Uygulama-I
22/10/2007TR-Grid Eğitimi24 İş Durumları Submitted – İş UI makinası aracılı ğ ı ile yollandı.
22/10/2007TR-Grid Eğitimi25 İş Durumları Waiting – İş kabul edildi ve WMS sunucusunda beklemede
22/10/2007TR-Grid Eğitimi26 İş Durumları Ready – İş WMS tarafında incelendi ve uygun CE sunucusuna gönderilmek için hazır
22/10/2007TR-Grid Eğitimi27 İş Durumları Scheduled – İş CE sunucusuna gönderildi ve kuyrukta bekliyor
22/10/2007TR-Grid Eğitimi28 İş Durumları Running – İş çalı ş maya ba ş ladı
22/10/2007TR-Grid Eğitimi29 İş Durumları Done – İş tamamlandı
22/10/2007TR-Grid Eğitimi30 İş Durumları Cleared – İş için “Çıktı Torbası” UI sunucusuna alındı veya zaman a ş ımından dolayı silindi
22/10/2007TR-Grid Eğitimi31 Diğer İş Komutları glite-job-cancel Belirtilen işi iptal eder. glite-job-status İş hakkında bilgi verir. glite-job-output İşin çıktı torbasını getirir. glite-job-logging-info İş hakkında detaylı bilgi verir, hata gidermek için yararlı bir komuttur
22/10/2007TR-Grid Eğitimi32 Uygulama-I
22/10/2007TR-Grid Eğitimi33 Uygulama-I
22/10/2007TR-Grid Eğitimi34 Uygulama-II
22/10/2007TR-Grid Eğitimi35 Uygulama-II
22/10/2007TR-Grid Eğitimi36 Uygulama-II glite-job-submit -o id.txt HelloWorld.jdl glite-job-status -i id.txt glite-job-cancel -i id.txt glite-job-submit -o id.txt HelloWorld.jdl glite-job-status -i id.txt glite-job-status –all glite-job-output -i id.txt
22/10/2007TR-Grid Eğitimi37 Uygulama-III
22/10/2007TR-Grid Eğitimi38 İnteraktif İşler İnteraktif iş, standart girdi, çıktı, ve hataları iş gönderilen istemciye yönlendiren iş tipidir: Kullanıcı JobType niteliğini Interactive 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, ListenerPort niteliği ile değiştirilebilir. DISPLAY çevre değişkeni düzgün ayarlanmalı veya -nogui parametresi kullanılmalıdır. OutputSandbox niteliğini tanımlamaya gerek bulunmamaktadır. İnteraktif pencereye çıktılar gelecektir.
22/10/2007TR-Grid Eğitimi39 Uygulama-IV
22/10/2007TR-Grid Eğitimi40 Uygulama-IV glite-job-submit interactive.jdl *************************************** Interactive Job console started for Please press ^C to exit from the session *************************************** Welcome! Please tell me your name: Feyza That is all, Feyza. Bye,.
22/10/2007TR-Grid Eğitimi41 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 NodeNumber niteliğ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.
22/10/2007TR-Grid Eğitimi42 Uygulama-V
22/10/2007TR-Grid Eğitimi43 Uygulama-V $ cat MPItest.c $ cat MPItest.sh $ glite-job-submit -i id.txt MPItest.jdl $ glite-job-status -i id.txt $ glite-job-output -i id.txt
22/10/2007TR-Grid Eğitimi