TORQUE a MAUI - farma na distribuované počítanie - ľahko a rýchlo

22.09.2009 11:26 | k0fein

Rád by som Vás - aspoň tých, čo o tom ešte nevedia - zoznámil s dvoma open source produktami, ktoré Vám umožnia rýchlo, ľahko a jednoducho vykonávať "úlohy" na počítačoch. Úlohy môžete chápať akokoľvek - od rátania parciálnych diferenciálnych rovníc metódou monte carlo až po Johna rozparovača. Čo executable file s definovanými vstupmi a výstupmi, to úloha. V tomto článku mi pôjde skôr o také navnadenie než o "how to".

Projekt, presnejšie firma, ktorá sa vývojom zaoberá sa volá Cluster Resources. Prvý produkt nesie názov TORQUE Resource Manager (hovorí sa mu tiež PBS - Portable Batch System) a druhý nesie názov MAUI Cluster Scheduler.
Obe bežia len pod linuxom (zatiaľ)

O čo ide:

Ide o princíp "master-slaves" štruktúry, kde master je server z ktorého "púšťate" úlohy, ktoré sú následne dopravené na počítač "slave" a spracované. Každý slave má práve jedného mastera. Po vykonaní úlohy na slave-ovi, je výstup z obrazovky a chybový prúd automaticky presunutý naspäť na mastera. Treba podotknúť, že tieto programové produkty neriešia paralelizáciu, t.j. "hlúpo" pošlú čosi na node, vykonajú to a stdout a stderr po skončení príde naspäť. Ak úloha vytvorila súbor na slave-ovi, tak ten tam ostane (preto sa to obvykle rieši s NFS /home alebo s certificate-based scp bez nutnosti hesla, alebo s hostbased autentifikáciou v smere slave->master, ale o tom trochu nižšie).

Trochu viac detailov:
Ako som spomínal v úvode, máme dva produkty - resource manager a scheduler. Aký je medzi nimi rozdiel a čo robia ? Úlohy, ktoré majú byť spracované - t.j. submitnuté používateľom - sa dávajú do fronty (niečo ako náboje v zásobníku pištole). To, kde vo fronte sa práve nachádzajú a či sa neprepadnú hlbšie, alebo naopak nedostanú skôr na rad, je úlohou schedulera - stará sa o ukladanie úloh do fronty na základe ich priority (ktorá sa definuje v configu schedulera, okrem iného) a ich hardwareových požiadaviek na slave-a. Keď úloha príde na rad, resource manager ju prenesie na vhodného slave-a a prenechá riadenie slave-ovi (výstrel z pištole). Úloha sa vykoná a výstup z nej (stdout a stderr) sa prenesie naspäť na mastra. Resource manager potom pokračuje s ďalšou úlohou v rade.

Používateľ, ktorý úlohu spustí, samozrejme nemusí čakať a byť nalogovaný na masterovi (dokonca mám taký pocit, že je/môže byť ukončenie úlohy spriahnuté s poslaním emailu). Čo väčšinou robí je, že sa naloguje, pustí pár príkazov, aby videl, či sa úloha ráta (a mal príjemný pocit), aby videl ako dlho sa už ráta a pod.

V prípade, že master na čas vypadne (výpadok prúdu, reštart,...), tak to slaveom nevadí. Tí šrotia ďalej. Keď sa master najbližšie zapne, tak uvidí ich posledný stav.

TORQUE dokáže manageovať niekoľko front naraz. Každá fronta môže mať priradené "charakteristiky" (napr. GID ľudí, čo do nej môžu submitovať, koľko môže mať naraz user k dispozícii počítačov, aké to majú byť počítače (veľkosť pamäte, počet procesorov, maximálny čas, ktorý môže úloha bežať kým ju TORQUE killne, a pod.)).

A ešte aby som nezabudol:
- UID a GID usera, čo submituje job z mastera, musí byť na každom slave-ovi ako na masterovi
- ak je výsledkom úlohy súbor (a teda nie iba obyčajný výpis na obrazovku), ten nie je nikam prenášaný; rieši sa to väčšinou zdieľanými home-adresármi cez NFS, prípadne použitím scp (a autentifikácie cez certifikát) pre daného usera, alebo hostbased autentifikáciou pre celý slave
- systém nijako nekotroluje to, čo job stvára, takže ak si job prepíše to čo urobil, tak má smolu
- to čo sa submituje je skript (#!/...), ktorý sa vykonáva na slave-ovi, takže je plne v moci usera, ako sa bude job chovať
- TORQUE nijako nesleduje to, čo job robil, takže ak príkaz v skripte hodí segfault a potom skončí, tak to TORQUE chápe ako splnenie úlohy (jeho úlohou je len dopraviť a spustiť, nie starať sa o to, ako to skončilo)
- Je na administrátorovi, aby zabezpečil (ak je to žiadúce) homogénne prostredie na slaveoch, pretože TORQUE nekontroluje, čo všetko skript potrebuje
- MAUI nie je default scheduler pre TORQUE. Ten čo TORQUE používa defaultne je dosť blbý, preto sa väčšinou používa MAUI, ktorý pozná finty ako priority a pod.
- akonáhle máme kopec strojov, ktoré sa vidia navzájom (nemusia byť na tej istej sieti, môže to byť aj cez net), tak TORQUE bude fungovať (treba mať len otvorené príslušné porty a UID a GID nastavený)
- ak použijete TORQUE upravený CERNom, tak musíte mať hostbased autentifikáciu na slaveoch

Linky:
TORQUE sources
MAUI, potrebná je bezplatná registrácia
TORQUE admin manual
MAUI admin manual