Кластер рачунари

Из Википедије, слободне енциклопедије
Техничар који ради на великом Linux кластеру на Chemnitz University of Technology, Germany
Sun Microsystems Solaris Cluster

Кластер рачунари се састоје од скупа слабо или чврсто повезаних рачунара који раде заједно, тако да се у многим аспектима они могу посматрати као један систем.

Компененте кластера су обично међусобно повезане брзим локалним мрежама ("LAN"), са сваким чвором (рачунар коришћен као сервер) који извршава своју инстанцу оперативног система. Кластер рачунари су настали као резултат конвенције бројних рачунарских трендова, укључујући доступност јефтиних микропроцесора.

Кластери су обично распоређени да побољшају перформансе и доступност преко једног рачунара, и обично су много исплативији него појединачни рачунари упоредиве брзине и доступности.[1]

Кластер рачунари имају широки спектар примене и развоја, у распону од малих пословних кластера са неколицином чворова до неких најбржих суперкомјутера на свету, као што је IBM-ов Sequoia.[2]

Једноставан, направљен код куће Beowulf кластер.

Основни концепти[уреди]

Жеља да се добије више рачунарске снаге и боља поузданост помоћу организовања бројних јефтиних комерцијалних, из продавнице, рачунара, довела је до разних архитектура у конфигурација.

Приступ рачунарском груписању обично (али не увек) повезује више лако доступних рачунарских чворова (нпр. персонални рачунари се користе као сервери) путем брзе локалне мреже.[3] Активности компјутерских чворова су организовани од стране "clustering middleware", софтверског слоја који се налази на врху чворова и омогућава корисницима да третирају кластер као једану велику кохензивну рачунарску јединицу, нпр. преко једног концепта система слика.[3]

Груписање рачунара ослања се на централизовани управљачки приступ који чини чворове доступним као усаглашени дељени сервери. То се разликује од других приступа, као што су peer to peer или grid рачунари који такође користе доста чворова, али са много више дистрибутивне природе.[3]

Кластер рачунар може бити једноставни дво-чворни систем који само повезује два персонална рачунара, или може бити веома брз суперкомпјутер. Основни приступ изградњи кластера је да од Beowulf кластера, који може бити изграђен са неколико персоналних рачунара, да се произведе исплатива алтернатива за традиционалне рачунаре високих перформанси. Рани пројекат који је показао одрживост концепта био је 133 nodes Stone Soupercomputer.[4] Поризвођачи су користили Linux, the Parallel Virtual Machine скуп алата и Message Passing Interface библиотеку за постизање високих перформанси за релативно ниску цену.[5]

Иако се кластер може састојати од само неколико персоналних рачунара повезаних простом мрежом, кластер архитектура се такође може користити за постизање веома високих перформанси. TOP500 организациони полугодишњи лист од 500 најбржих [Суперрачунар|суперрачунара]] често укључује многе кластере, нпр. најбржа машина на свету у 2011. години је био К рачунар који има дистрибутивну меморију, кластер архитектуру.[6][7]

Историја[уреди]

VAX 11/780, c. 1977

Greg Pfister је изјавио да кластере није измислио ниједан конкретан произвођач, него купци који нису могли да сместе сав свој рад на један рачунар, или им је била потребна резервна копија.[8] Pfister-ове процене датирају негде 1960. године. Формалну инжињерску основу кластер рачунара као средства које ради паралелан рад било које врсте је вероватно измислио Gene Amdahl из IBM-а, који је 1967. године објавио, посматрајући оно што је дошло, као исконски папир паралелног процесирања: Amdahl's закон.

Историја раних компјутерских кластера је више или мање директно повезана са историјом раних мрежа, како је један од примарних мотива за развој мреже био повезивање рачунарских ресурса, и стварање de facto кластер рачунара.

Први комерцијални кластер производ био је ARCnet, развијен од Datapoint 1977. године. Груписање само по себи није баш кренуло док Digital Equipment Corporation није представио свој VAXcluster производ 1984. године за VAX/VMS оперативни систем. ARCnet и VAXcluster производи не само да су подржавали паралелно рачунање, већ и поделили системе датотека и периферне уређаје. Идеја је била да се обезбеди предност паралелног процесирања, задржавајући поузданост и јединственост података. Два друга вредна пажње рана комерцијална кластера су били Tandem Himalayan (око 1994 високо-доступан производ) и IBM S/390 Parallel Sysplex (такође око 1994, пре свега за пословну употребу).

У истом временском оквиру, док су кластер рачунари користили паралелизам изван рачунара на робној мрежи, суперкомпјутери су почели да их користе у оквиру истог рачунара. Након успеха CDC 6600 1964, Cray 1 је био испоручен 1976. године, и увео је интерни паралелизам преко вектора обраде.[9] Док рани суперкомпјутери искључују кластере и ослањају се на дељену меморију, у исто време неки од најбржих суперкомпјутера (нпр. К компјутер) су се ослањали на архитектуру кластера.

Атрибути кластера[уреди]

Кластер рачунари могу бити конфигурисани за различите намене, од општих пословних намена, као што је подршка веб-сервера, до нумеричко интензивних научних прорачуна. У сваком случају, кластер може да користи високо-доступан приступ. Треба имати на уму да атрибути описани у наставку нису ексклузивни и „кластер рачунар“ може користити високо-доступан приступ, итд.

Кластер са балансираним оптерећењем са два сервера и 4 корисничке станице

"Баланс-учитавања“ кластера су конфигурације у којима кластер-чворови деле рачунарски посао да би се обезбедиле свеукупне перформансе. На пример, веб-сервер кластер може доделити различите упите на различите чворове, тако да укупно време одзива буде оптимизовано.[10] Међутим, приступ оптерећења-балансирања може значајно варирати међу апликацијама, на пример кластер високих перформанси коришћен за научне прорачуне би био другачије уравнотежен са другим алгоритмима од веб-сервер кластера, који можда користи једноставан round-robin метод додељивањем сваког новог захтева другом чвору.[10]

"Кластер рачунари“ се користе за интензивно израчунавање, пре него за руковања УИ-оријентисаним операцијама, као што су веб сервиси или базе података.[11] На пример, кластер рачунари могу подржавати компјутерску симулацију судара аутомобила или времена. Врло чврсто повезани кластер рачунари су дизајнирани за рад који може да приђе "суперрачунарима“.

"Високо-доступни кластери“ (познати и као failover кластери, или HA кластери) побољшавају доступност кластер приступа. Они раде тако што имају сувишне чворове, који се користе за пружање услуга када компоненте система откажу. HA кластер имплементира покушај да се користи редудантност кластер компененти за елиминацију квара једног чвора. Постоје комерцијалне имплементације Високо-Доступних кластера за многе оперативне системе. Linux-HA пројекат је један који је користио бесплатни софтвер HA пакета за Linux оперативни систем.

Предности[уреди]

Ниска цена: Купци могу елиминисати трошкове и сложеност набавке, подешавањем и руковањем HPC кластера са ниском, pay-as-you-go ценом, Даље, трошкови могу да се оптимизују усклаћивањем једним од неколико ценовних модела: On Demand, Reserved or Spot Instances.

Еластичност: Могу да се додају или уклоне рачунарски ресурси да би се задовољила величина и временски захтеви за дати обим посла.

Покретање послова било када и било где: Може се покренути рачунање послова који користе једноставни APIs или управљање алатима и аутоматизација токова посла за максималну ефикасност и скалабилност. Може да се повећа брзина иновације приступањем рачунарских ресурса у минуту уместо трошења времена у редовима.

Дизајн и конфигурација[уреди]

Једно од појединости у дизајнирању кластера је колико чврсто могу бити повезани индивидуални чворови. На пример, посао за један рачунар може захтевати честе комуникације међу чворовима: ово подразумева да кластер дели наменску мрежу, густо лоцирану, а вероватно има хомогене чворове. Друга крајност је где рачунарски посао користи један или више чворова, и треба мало или нимало комуникације међу чворовима, што је приближавање grid-а рачунару.

Типична Beowulf конфигурација

У Beowulf систему, програми апликација никаде не виде рачунарске чворове (зову се и рачунарски робови), већ су у интеракцији само са „Мастером“ који је одређени рачунар који руководи распоређивањем и управљањем робовима.[11] У типичној имплементацији Мастер има два мрежна интерфојса, један који комуницира са приватном Beowulf мрежом за робове, и други за општу намену мреже организације.[11] Роб рачунари обично имају своју верзију истог оперативног система, и локалну меморију и простор на диску. Међутим, приватне роб мреже могу имати велику и подељену серверску датотеку која складишти глобално постојане податке, приступањем робова када је потребно.[11]

Насупрот томе, посебна намена 144 чворног DEGIMA кластера је подешеност да ради астрофизичне N-body симулације коришћењем Multiple-Walk паралелног treecode-а, пре него општа намена научних израчунавања.[12]

Због све веће снаге рачунања у свкој новој генерацији играчких конзола, нова употреба се појавила где су оне промениле сврху у High-performance computing (HPC) кластере. Неки примери играчке конзоле кластера су Sony PlayStation кластери и Microsoft Xbox кластери. Други пример потрошачких играчких производа је Nvidia Tesla Personal Supercomputer радна станица, која користи више процесорских чипова са графичким акцелераторима.

Рачунарски кластери су се кроз историју кретали на физички одвојеним рачунарима са истим оперативним системом. Са појавом виртуализације, кластер чворови могу радити на физички одвојеним рачунарима са различитим оперативним системима, који су горе обојени са виртуелним слојем, да изгледају слично. Кластер такође може бити виртуелизован на различите конфигурације како се одвија одржавање. Пример имплементације је Xen као виртуелизација управљања са Linux-HA.[13]

Дељење података и комуникација[уреди]

Дељење података[уреди]

Nehalem кластер

Како су се кластер рачунари појавили током 1980. година, тако су се појавили и суперкомпјутери. Један од елемената који је разликовао три класе у то време био је тај да су се рани суперкомпјуери ослањали на дељену меморију. Данас кластери обично не користе физички подељену меморију, док су их многе суперкомпјутерске архитектуре такође напустиле. Међутим, употреба система кластер датотека је неопходна у савременим рачунарским кластерима. Пример укључује IBM General Parallel File System, Microsoft's Cluster Shared Volumes или the Oracle Cluster File System.

Преношење порука и комуникација[уреди]

Два широко коришћена приступа за комуникацију измећу кластер чворава су MPI, Message Passing Interface и PVM, Parallel Virtual Machine.[14]

PVM је развијен у Oak Ridge National Laboratory око 1999. године пре него што је MPI био доступан. PVM мора бити директно инсталиран на сваком чвору кластера и обезбећује скуп софтверских библиотека које боје чвор као „паралелну виртуелну машину ". PVM обезбећује run-time окружење за преношење порука, задатке и управљање ресурсима, и обавештавање о грешкама. PVM може да се користи од стране корисничког програма написаног у C, C++, или Fortran-у, итд.[14][15]

MPI се појавио у раним 1990. годинама из дискусије између 40 организација. Почетни напори били су подржани од стране ARPA-а и National Science Foundation. Уместо новог почетка, дизајн MPI нацртан је на различитим доступним функцијама у комерцијалним системима тог времена. MPI спецификације су довеле до конкретних имплементација. MPI имплементације обично користе TCP/IP и сокет конекције.[14] MPI је сада широко доступан комуникациони модел који омогућава, да паралелни програми буду написани у језицима као што су C, Fortran, Python, итд.[15] Тако, за разлику од PVM-а који пружа конкретну имплементацију, MPI је спецификација која се имплементира у системе као што су PICH и Open MPI.[15][16]

Управљање кластера[уреди]

Јефтини и мали кластер од Cubieboard, који користи Apache Hadoop на Lubuntu

Један од изазова у коришћењу кластер рачунара је цена администрирања која може понекад бити висока као и цена администрирања N независних машина, ако кластер има N чворова. У неким случајевима то даје предност архитектури дељене меморије са мањим трошковима администрације. Због лакше администрације направљене виртуелне машине постале су популарне.

Распоређивање задатака[уреди]

Када велики више-кориснички кластер треба да приступи веома великој количини података, распоређивање задатака постаје изазов. У хетерогеним CPU-GPU кластерима, који имају сложено апликативно окружење, перформанса сваког посла зависи од карактеристика основног кластера, а мапирање задатака на CPU језгру и GPU уређаја обезбећује значајне изазове.[17] Ово је област текућих истраживања и алгоритама који комбинују и проширују MapReduce и Hadoop су били предложени и студирани.[17]

Управљање квара чвора[уреди]

Кад чвор у кластеру откаже, стратегије као што су "fencing" могу се користити да би остатак система остао оперативан.[18][19] Fencing је процес изоловања чвора или заштите дељених ресурса када се појављује покварен чвор. Постоје две класе fencing методе; једна онемогућава сам чвор, а друга онемогућава приступ ресурсима као што је дељени диск.[18]

STONITH метод, је скраћеница за "Shoot The Other Node In The Head", што значи да се сумњиви чвор онемогућава или искључује. На пример, power fencing користи контролер напајања да искључи неизлечиви чвор.[18]

Ресурси fencing приступа не дозвољавају приступ ресурсима без искључивања чвора. Ово може укључити трајну резервацију fencing преко SCSI3, влакнастог Channel fencing да онемогући порт влакнастог канала или глобална мрежа блок уређаја (GNBD) fencing да онемогући приступ GNBD серверу.

Развој софтвера и администрација[уреди]

Паралелно програмирање[уреди]

Балансирање оптерећења кластера, као што су веб севери користе кластер архитектуру за подршку великог броја корисника и обично сваки кориснички захтев је усмерен на одређени чвор, постизањем паралелизма задатка без више-чворне сарадње, с обзиром да је главни циљ система омогућавање брзог приступа корисника дељеним подацима. Међутим, „кластер рачунари“ који обављају сложене прорачуне за мали број корисника траба да искористе предност могућих паралелних обрада и подела „истога рачунања " између неколико чворова.[20]

Аутоматски паралелизам програма и даље остаје технички изазов, али паралелни модели програмирања могу бити коришћени како би се извршила виши степен паралелизма путем истовременог извршавања одвојених делова програма на различитим процесорима.[20][21]

Дибаговање и мониторинг[уреди]

Развој и дибаговење паралелних програма на кластеру захтевају паралелне језичке примитиве као одговарајуће погодне алате као што су они расправљали у High Performance Debugging Forum (HPDF) што је резултовало HPD спецификацијама.[15][22] Алати као што су TotalView су тада развијени у циљу дибаговања паралелних имплементација на кластер рачунарима који користе MPI или PVM за пренос порука.

Берклијев NOW (Network of Workstations) систем прикупља кластер податке и складишти их у бази података, док системи као PARMON, развијени у Индији, омогћавају визуелни преглед и управљање великим кластерима.[15]

Application checkpointing може да се користи за враћање датог стања система када чвор откаже током за време више-чворног рачунања.[23] Ово је од суштинског значаја у великим кластерима, с обзиром да се број чворова повећава, па тако расте вероватноћа квара чвора под тешким рачунарским операцијама. Checkpointing може вратити систем у стабилно стање тако да обрада може да се настави без потребе за прерачунавењем резултата.[23]

Цена перформансе[уреди]

Кластери могу да обезбеде значајне предности перформанси наспрам цене. Систем X суперкомпјутер на Virginia Tech, 28. најмоћнији суперкомпјуер на Земљи, до јуна 2006. године,[24] је 12.25 Tflops кластер рачунар од 1100 Apple XServe G5 2.3 GHz дво-процесорске машине (4 GB RAM, 80 GB SATA HD) која извршава Mac OS X и користи InfiniBand повезивање.

Неке имплементације[уреди]

GNU/Linux свет подржава различите кластер софтвере; за апликације кластера, постоји distcc, и MPICH. Linux Virtual Server, Linux-HA директор на бази кластера који омогућава да долазни захтеви за услуге буду подељени на више кластер чворова. MOSIX, openMosix, Kerrighed, OpenSSI су потпуно кластер интегрисани у кернел да обезбеде аутоматску миграцију процеса међу хомогеним чворовима. OpenSSI, openMosix and Kerrighed су један-систем сликовних имплементација.

Microsoft Windows Compute Cluster Server 2003 заснован на Windows Server платформи обезбеђује делова за High Performance Computing као Job Scheduler, MSMPI библиотека и алати за управљање.

gLite је скуп посредничкх технологија креираних од пројекта Enabling Grids за E-sciencE (EGEE).

Slurm се такође користи за распоређивање и управљање неким од највећих суперкомпјутера клатера (види top500 листу).

Остали приступи[уреди]

Иако је већина кластер рачунара стално распоређена, направљени су покушаји flash mob рачунарства да се изграде краткотрајни кластери за одређено израчунавање. Међутим, веће размере волонтерских рачунарских система, као што је BOINC-заснован систем имају више следбеника.

Види још[уреди]

Референце[уреди]

  1. ^ Bader, David; Robert Pennington (June 1996). „Cluster Computing: Applications“. Georgia Tech College of Computing Приступљено 13. 7. 2007.. 
  2. ^ „Nuclear weapons supercomputer reclaims world speed record for US“. The Telegraph. 18 Jun 2012 Приступљено 18 Jun 2012. 
  3. ^ а б в Network-Based Information Systems: First International Conference, NBIS 2007 ISBN 3-540-74572-6, pp. 375
  4. ^ William W. Hargrove, Forrest M. Hoffman and Thomas Sterling (16. 8. 2001.). „The Do-It-Yourself Supercomputer“. Scientific American 265 (2): pp. 72-79 Приступљено 18. 10. 2011.. 
  5. ^ William W. Hargrove and Forrest M. Hoffman (1999). „Cluster Computing: Linux Taken to the Extreme“. Linux magazine Приступљено 18. 10. 2011.. 
  6. ^ TOP500 list To view all clusters on the TOP500 select "cluster" as architecture from the sublist menu.
  7. ^ M. Yokokawa et al The K Computer, in "International Symposium on Low Power Electronics and Design" (ISLPED) 1-3 Aug. 2011. ISBN . pp. 371-372
  8. ^ Pfister (1998), стр. 36.
  9. ^ Readings in computer architecture by Mark Donald Hill, Norman Paul Jouppi, Gurindar Sohi 1999. ISBN 978-1-55860-539-8. page 41-48
  10. ^ а б High Performance Linux Clusters by Joseph D. Sloan 2004 ISBN 0-596-00570-9 page
  11. ^ а б в г High Performance Computing for Computational Science - VECPAR 2004 by Michel Daydé, Jack Dongarra 2005 ISBN 3-540-25424-2 pages 120-121
  12. ^ Hamada T. et al. (2009) A novel multiple-walk parallel algorithm for the Barnes–Hut treecode on GPUs – towards cost effective, high performance N-body simulation. Comput. Sci. Res. Development 24:21-31. doi:10.1007/s00450-009-0089-1
  13. ^ Maurer, Ryan: Xen Virtualization and Linux Clustering
  14. ^ а б в Milicchio, Franco; Gehrke, Wolfgang Alexander (2007). Distributed Services with OpenAFS: for Enterprise and Education. Springer. стр. 339-341. ISBN 978-3-540-36634-8. 
  15. ^ а б в г д PRABHU 2008, стране 112
  16. ^ Gropp, William; Lusk, Ewing; Skjellum, Anthony (1996). „A High-Performance, Portable Implementation of the MPI Message Passing Interface“. Parallel Computing. Шаблон:Cite seerx. 
  17. ^ а б K. Shirahata, et al Hybrid Map Task Scheduling for GPU-Based Heterogeneous Clusters in: Cloud Computing Technology and Science (CloudCom), 2010 Nov. 30 2010-Dec. 3 2010. . ISBN 978-1-4244-9405-7. pp. 733-740. [1]
  18. ^ а б в Alan Robertson Resource fencing using STONITH. IBM Linux Research Center, 2010 [2]
  19. ^ Vargas, Bianco & Deeths 2001, стране 58
  20. ^ а б Blum & Aho 2011, стране 156
  21. ^ Rauber & Rünger (2010), стр. 94.
  22. ^ A debugging standard for high-performance computing by Joan M. Francioni and Cherri Pancake, in the "Journal of Scientific Programming" Volume 8 Issue 2, April 2000 [3]
  23. ^ а б Computational Science-- ICCS 2003: International Conference edited by Peter Sloot 2003 ISBN 3-540-40195-4 pages 291-292
  24. ^ TOP500 List - June 2006 (1-100) | TOP500 Supercomputing Sites

Литература[уреди]