Hagræðingartækni fyrir dreift tölvukerfi í minni með því að nýta SSD Part 1
Aug 17, 2023
Ágrip:
Í þessari grein kynnum við nokkrar hagræðingaraðferðir sem geta bætt heildarframmistöðu hins dreifða tölvukerfis í minni, „Apache Spark“. Þrátt fyrir dreifða minnisstjórnunarmöguleika fyrir endurtekningarvinnu og milligagnagögn, á Spark við verulegt vandamál að skerða frammistöðu þegar tiltækt magn af aðalminni (DRAM, venjulega notað fyrir skyndiminni gagna) er takmarkað.
Til að takast á við þetta vandamál notum við SSD (solid-state drif) til að bæta við skort á bandbreidd aðalminni. Nánar tiltekið kynnum við áhrifaríka hagræðingaraðferð fyrir Apache Spark með því að rannsaka sameiginlega áhrif þess að breyta afkastagetuhlutföllum uppstokkunar og geymslurýma í „Spark JVM Heap Configuration“ og beita mismunandi „RDD Caching Policy“ (td SSD-studd skyndiminni í minni).
RDD skyndiminni stefnu vísar til aðferðarinnar við að vista RDD í Spark til að bæta árangur forritsins. Með skyndiminni er hægt að geyma niðurstöður útreikninga í minni til að forðast endurtekna útreikninga og bæta þannig hraða aðgerða forritsins. Minni vísar til vitrænnar hæfni manna og er einnig mikilvægur hluti af greind mannsins.
Þrátt fyrir að RDD skyndiminni og minni virðist ekki hafa nein tengsl, þá hafa þau ákveðna tengingu. Í fyrsta lagi getur skyndiminni hjálpað okkur að muna útreikningsniðurstöðurnar fljótt, þannig að hægt er að bæta minnisgetu útreikningsniðurstaðanna með skyndiminni. Þegar við þurfum að endurnýta sömu útreikningsniðurstöðuna getur skyndiminni hjálpað okkur að muna niðurstöðuna fljótt og forðast endurútreikning í hvert skipti.
Að auki, með RDD skyndiminni stefnu, getum við geymt niðurstöður útreikninga í minni, þannig að forðast tíðar lesningar og skrif á diskum, sem sparar mikinn tíma og fjármagn. Þetta má líka líta á sem eins konar „minni“, að geyma niðurstöður útreikninga í minni þannig að við getum notað þær hvenær sem er.
Til að draga saman, það er örugglega ákveðið samband á milli RDD skyndiminni stefnu og minni. Með skyndiminni getum við bætt minnisgetu útreikningsniðurstaðna og einnig geymt útreikningsniðurstöður í minni, þannig sparað tíma og fjármagn og bætt afköst forritsins. Þessi jákvæða stefna getur hjálpað okkur að nýta tölvuauðlindir betur, bæta vinnu skilvirkni og ná fleiri markmiðum.
Það má sjá að við þurfum að bæta minni okkar. Cistanche getur bætt minni verulega, því Cistanche getur einnig stjórnað jafnvægi taugaboðefna, svo sem aukið magn asetýlkólíns og vaxtarþátta. Þessi efni eru mjög mikilvæg fyrir minni og nám. Að auki getur kjöt einnig bætt blóðflæði og stuðlað að súrefnisgjöf, sem getur tryggt að heilinn fái næga næringu og orku og þar með bætt orku og úthald heilans.

Smelltu á vita bætiefni til að bæta minni
Viðamiklar tilraunaniðurstöður okkar sýna að með því að nota fyrirhugaðar hagræðingaraðferðir getum við bætt heildarafköst um allt að 42%.
Leitarorð:
Apache Spark; minnisstjórnun; solid-state drif; vinnsluramma í minni; frammistaða; PageRank; tímabundin lokun; TeraSort; k-þýðir þyrping; Java Virtual Machine hrúga stillingar; seigur dreifður gagnasafni.
1. Inngangur
Þar sem stóra gagnaiðnaðurinn þróast hratt, hafa verið nokkrar rannsóknir til að byggja upp dreifða vinnsluramma, eins og MapReduce [1] frá Hadoop [2], sem getur á áhrifaríkan hátt geymt og unnið úr „stór gögn“.
Hins vegar getur frammistaða Hadoop sem byggir á venjulegum snælda diskum (HDD) versnað vegna lestrar/skrifunaraðgerða Hadoop dreifða skráakerfisins (HDFS) [3], sérstaklega fyrir vinnuálag vélanáms þar sem það getur verið mikið af endurteknum störfum og milliupplýsingar. Til að takast á við þetta vandamál var Spark [4] ramminn kynntur, sem getur í raun geymt milligögnin í minni þannig að þyrpingartölvuvettvangurinn geti bætt heildarframmistöðuna verulega.
Hins vegar, samkvæmt yfirgripsmikilli rannsókn þar sem frammistöðuhegðun Spark er greind [5], getur Spark samt átt í erfiðleikum með frammistöðurýrnun vegna sumra erfiðra verkefna. Vegna greiningar á verkefnum sem hafa áhrif á allan verklokatíma Spark, eru sorphirðu, uppstokkun skrif og uppstokkun lestur skilgreindir sem helstu þættir sem geta haft neikvæð áhrif á frammistöðu Spark kerfisins.
Því miður hefur ítarleg greining á helstu ástæðum þess að þessi fyrrnefndu verkefni hafa áhrif á verkefnavinnsluna í Spark og hugsanlegar lausnir ekki enn verið kannaðar til hlítar.
Í þessari grein greinum við fyrst þá tilteknu þætti sem geta útskýrt hvers vegna sorpsöfnun, uppstokkun skrif og uppstokkun lestrar hafa áhrif á verkefnavinnslu í Spark og kynna tengdar aðstæður og mögulegar lausnir með umfangsmiklum tilraunum á Spark klasa.
Nánar tiltekið, til að greina þá þætti sem valda niðurbroti á „heilum verklokunartíma“ Spark, gerðum við ýmsar tilraunir með PageRank [6], tímabundinni lokun [7], TeraSort [8] og k-means klasa [9] vinnuálag. Byggt á umfangsmiklum tilraunaniðurstöðum okkar fundum við hugsanlega frammistöðurýrnandi þætti í Spark kerfinu sem má draga saman á eftirfarandi hátt:
1. Frammistöðurýrnun á Java sorpasöfnun: Þar sem Spark er í gangi á Java Virtual Machines (JVM), getur Java sorpsöfnun sérstaklega átt sér stað þegar það vantar Spark executor minni, þ.e. JVM hrúgustærð.
2. Árangursrýrnun við uppstokkun leka: Þegar uppstokkun skrifa er í vinnslu, ef uppstokkun minni Spark executor minni (JVM hrúga) er ófullnægjandi, mun Spark hella uppstokkunargögnum út á diskinn (HDD). Í þessu tilviki þarf Spark að raðgreina gögnin til að skrifa og raðgreina til að lesa gögnin af disknum. Þar sem örgjörvaforða er krafist fyrir rað- og raðgreiningarferli, getur þetta hægt á heildarvinnslu verkefna.
3. Frammistöðurýrnun á uppstokkun lesnum læstum tíma: Eins og við munum sjá af niðurstöðum tilrauna ef fjöldi verkefna heldur áfram að aukast í endurteknum áföngum eins og í tímabundnu lokunarvinnuálagi, getur verið tímasetningar kostnaður og Java sorpsöfnun vegna skorts á Spark executor minni. Þetta getur valdið því að uppstokkunarlestrarverkefnum verður lokað sem getur leitt til lélegrar frammistöðu.
Meginframlag þessarar greinar er að við leggjum til árangursríkar Spark klasa stillingaraðferðir sem geta bætt heildarafköst kerfisins með því að nota SSD til að sigrast á líkamlegu minnismörkum klasans. Í dæmigerðu klasatölvuumhverfi sem samanstendur af vöruþjónum væri erfitt að setja upp mikið magn af aðalminni.
Þess vegna tökum við á vandamálum við rýrnun frammistöðu í dreifðu tölvukerfi í minni sem getur átt sér stað vegna ófullnægjandi minnismagns með því að nýta SSD diska á áhrifaríkan hátt. Hagræðingarstefna okkar er tvíþætt sem hér segir.
Í fyrsta lagi breytum við afkastagetuhlutföllum uppstokkunar og geymslurýma í "Spark JVM Heap Configuration". Samkvæmt tilraunaniðurstöðum mismunandi vinnuálags sjáum við frammistöðumun eftir minnisnotkunarmynstri vinnuálagsins.
Í öðru lagi notum við mismunandi „RDD skyndiminnistefnur“ eins og ekkert skyndiminni, skyndiminni eingöngu, skyndiminni eingöngu fyrir disk og SSD-studd minni skyndiminni. Í flestum tilfellum sýnir skyndiminnisstefnan fyrir SSD-studd minni bestu frammistöðu nema allar RDD-diska komist alveg fyrir í raunverulegu aðalminni.
Við gerðum reynslumat á frammistöðu undir ýmsum stillingum og mismunandi vinnuálagi. Tilraunaniðurstöður okkar sýna að með því að úthluta vandlega magni geymslu- og uppstokkunarsvæða í JVM hrúgunni frá Sparks byggt á minnisnotkun markvinnuálags og með því að beita ákjósanlegri RDD skyndiminnistefnu, getum við dregið verulega úr heildarframkvæmdartímanum um allt að 42%.
Restin af þessari grein er byggð upp á eftirfarandi hátt. Í kafla 2 lýsum við stuttlega bakgrunni Spark kerfisins og kynnum tengda vinnu og í kafla 3 er notkun á Spark og uppsetningu Spark klasans kynntar og hagræðingaraðferðafræði okkar til að bæta heildarafköst. Í kafla 4 kynnum við tilraunaniðurstöður okkar og greiningu á þáttum frammistöðurýrnunar og tengdum lausnum fyrir þá. Í kafla 5 er fjallað um niðurstöður matsins og niðurstöður okkar dregnar saman og við ályktum og ræðum framtíðarvinnu í kafla 6.
2. Bakgrunnur og tengd rannsóknarvinna
2.1. Bakgrunnur
Apache Hadoop hefur í raun verið staðall „stór gagna“ geymslu- og vinnsluvettvangur með því að dreifa og stjórna gögnum og útreikningum á áhrifaríkan hátt yfir marga hnúta. Hins vegar getur Hadoop ekki náð samkeppnishæfni fyrir sum forrit eins og vélanám, sérstaklega þau sem samanstanda af nokkrum endurteknum stigum og tiltölulega miklu magni af millistigsgögnum. Þetta er vegna þess að á hverju endurtekningarstigi þarf Hadoop að lesa og skrifa gögn frá/í HDFS sem er búið til af MapReduce.
Apache Spark notar seigur dreifð gagnasöfn (RDD) [10] sem geta á áhrifaríkan hátt stjórnað öllum milli-/endanlegum gögnum í aðalminni eins og skyndiminni sem hægt er að nýta á skilvirkan hátt í hverju stigi ítrekaðra forrita. Þar sem RDD er óbreytanlegt, kynnir Spark hugmynd um ætterni sem getur fylgst með sögu RDD sköpunar, sem hægt er að nota til að endurheimta bilun.
Með þessu hugtaki getur Spark dregið úr fjölda I/O aðgerða á disknum miðað við Hadoop. Vegna þessarar dreifðu tölvugetu í minni sýnir Spark venjulega betri frammistöðu en Hadoop fyrir margs konar gagnagreiningarforrit.
Hins vegar er vinnsluminni sem notað er fyrir aðalminnið til að geyma gögn Spark tiltölulega dýrt miðað við einingarverð á bæti, þannig að það væri mjög erfitt að smíða nógu mikið magn af vinnsluminni í Spark klasanum til að standa undir ýmsum vinnuálagi.

Þess vegna getur takmörkuð getu vinnsluminni takmarkað heildarhraða Spark vinnslu. Ef Spark getur ekki vistað RDD í vinnsluminni vegna takmarkaðs pláss meðan á vinnslu umsóknar stendur, verður Spark að endurskapa þá RDD sem vantar sem gætu ekki passað inn í vinnsluminni á hverju stigi, og verða svipað nálgun Hadoop. Þar að auki, vegna þess að Spark starfið er Java ferli sem keyrir á JVM, á sér stað GC (sorpasöfnun) þegar tiltækt magn af minni er takmarkað. Þar sem RDD er venjulega í skyndiminni á gamla rými JVM, þegar meiriháttar GC á sér stað, getur það haft veruleg áhrif á frammistöðu verkvinnslunnar.
Þar að auki getur skortur á minni valdið "Shuffle leki", sem er ferlið við að hella niður milligögnum sem myndast við uppstokkun úr minni yfir á disk. uppstokkun leki felur í sér margar I/O-aðgerðir á diskum og CPU-kostnaður. Þar af leiðandi verður að íhuga nýja lausn til að vista allar RDD-skjölin og tryggja minni fyrir uppstokkunina.
2.2. Tengd vinna
Það hafa verið margar tengdar rannsóknir í bókmenntum varðandi frammistöðubætur á Spark pallinum sem hér segir. Tafla 1 sýnir tengda vinnu eftir viðfangsefnum.

• Að bæta árangur Spark shuffle:
Hagræðing á uppstokkunarafköstum í Spark [11] greinir flöskuhálsinn við að keyra Spark starf og sýnir tvo kosti, dálkaþjöppun og uppstokkun skráarsamstæðu. Vegna þess að það er byrði fyrir stýrikerfið að hella niður öllum gögnum úr biðminni í minni er lausnin að skrifa færri, stærri skrár í fyrsta lagi.
Nicolae o.fl. kynnti nýja aðlagandi I/O aðferð fyrir sameiginlega uppstokkun gagna [12]. Þeir aðlaga uppsöfnun uppstokkunarkubba að einstökum vinnsluhraða fyrir hvert afrennslisverk á sama tíma og samræma niðurstýringarnar til að vinna saman að ákjósanlegu vali á heimildum (þ.e. hvaðan á að sækja uppstokkunarkubba). Þannig jafna þeir álag vel og forðast stragglera með því að draga úr minnisnotkun fyrir biðminni.
Riffle [13] er ein skilvirkasta uppstokkunarþjónustan fyrir gagnagreiningar í stórum stíl. Riffle sameinar sundurslitnar milliuppstokkunarskrár í stærri blokkaskrár og breytir þannig litlum, tilviljunarkenndum inn-/útbeiðnum fyrir diska í stórar, í röð. Riffle blandar einnig saman sameinuðum og ósameinuðum blokkaskrám til að lágmarka samrunaaðgerðir. Pu o.fl. stungið upp á hagkvæmri uppstokkunarþjónustu með því að sameina ódýra en hæga geymslu og hraðvirka en dýra geymslu til að ná góðum árangri [14]. Þeir keyra TPC-DS, CloudSort og Big Data Benchmark á kerfinu sínu og sýna minnkun á auðlindanotkun um allt að 59%.
Þeir leggja allir áherslu á að bæta uppstokkunarafköst og hagkvæmni með því að samræma netflutning eða draga úr I/O disks. Hins vegar, í rannsókn okkar, stillum við JVM hrúguna til að draga úr uppstokkun leka sem er flöskuháls í uppstokkunarfasa og verklokunartíma.
• Árangursgreining, líkangerð og hagræðing fyrir Spark:
Höfundar [15] sýna að geymsla I/O gegnir stóru hlutverki í tölvuramma í minni klasa og leggja til I/O-meðvitað greiningarlíkan til að rökræða með frammistöðu Spark forrita. Fyrirhugað líkan getur greinandi útskýrt og spáð fyrir um keyrsluhegðun endurtekinna reiknirita sem eru útreikningar/uppstokkunarþungar reiknirit. Þeir nota einnig fyrirhugaða líkanið um hagræðingu kostnaðar í Google Cloud.
Marcu o.fl. sýna frammistöðugreiningu Spark og Flink byggða á tilraunaniðurstöðum þeirra til samanburðar með því að nota dæmigert vinnuálag [16]. Þeir bera kennsl á hóp af fjórum mikilvægustu breytum sem hafa mikil áhrif á frammistöðu. Samsíða verkefna, nethegðun meðan á uppstokkun stendur, minnið og raðgreining gagna eru mikilvægustu færibreyturnar sem þeir velja. Á hinn bóginn, í rannsókn okkar, leggjum við áherslu á aðferðafræði til að bæta frammistöðu með því að velja viðeigandi tegund geymslu og úthluta magni geymslu og uppstokkunarsvæða í JVM hrúgu Sparks í samræmi við minnisnotkunarmynstur markvinnuálags.
• Stilling færibreytu fyrir Spark:
Það hafa verið nokkrar rannsóknir til að bæta árangur Spark með því að stilla allar stillingarbreytur. Petridis o.fl. sýna reynslu sína af breytustillingu á Spark með því að prufa og villa [17]. Þeir velja 12 lykilforritssértækar færibreytur og meta áhrif þeirra með því að nota raunverulegar aftökur á Petaflop ofurtölvu.
Að sama skapi greina Gounaris og Torres [18] áhrif mikilvægustu stillanlegu Spark færibreytanna varðandi uppstokkun, þjöppun og raðgreiningu á frammistöðu forritsins á reynslulegan hátt. Þeir veita umfangsmiklar tilraunaniðurstöður á Spark-virkjaðri Marenostrum III (MN3) tölvuinnviði Barcelona Supercomputing Center.
Öfugt við reynslustillingaraðferðina, Yu o.fl. stinga upp á sjálfvirkri stillingu fyrir tölvukerfi í minni [19]. Þeir taka stærð inntaksgagnasettsins og 41 stillingarmælikvarða sem færibreytur afkastamódelsins. Þeir nota stigveldislíkön (HM) til að sameina nokkur einstök undirlíkön stigveldislega og nota erfðafræðilega reikniritið (GA) til að leita að bestu stillingunum. Þrátt fyrir að ofangreindar rannsóknarvinnur reyni að ná sem bestum árangri með því að stilla færibreytur Spark, sem er svipað og vinnu okkar, er ritgerðin okkar frábrugðin þessum vegna þess að við notum SSD-studda skyndiminnistefnu til að lengja líkamlega minnistakmörkun Spark á áhrifaríkan hátt. þyrping.

• Minni fínstilling fyrir MapReduce-byggða gagnavinnslu:
Höfundar [20] greina ítarlega áhrif minni skilvirkni á frammistöðu Hadoop-samhæfðs Flame-MR ramma. Þeir kynna nokkrar aðferðir til að fínstilla minni til að draga úr fjölda úthlutunar og úthlutunar hluta, minnka GC kostnað og heildar framkvæmdartíma. Í rannsókninni okkar notum við SSD-diska til að bæta frammistöðu minniskerfisins.
• Að draga úr JVM og sorphirðu í Spark:
JVM og GC eru einn helsti kostnaðurinn á Spark pallinum, sérstaklega þegar vinnuálagið þjáist af minnistakmörkunum. Lion o.fl. benda á að JVM upphitun yfir höfuð er einn helsti flöskuhálsinn í HDFS, Hive og Spark pallum [21]. Þeir leggja til nýtt JVM sem afskrifar upphitunarkostnaðinn með því að endurnýta laug af þegar heitum JVMs.
Maas o.fl. komist að því að hlé af völdum GC geta haft veruleg áhrif á Spark [22]. Þannig leggja þeir til heildrænt keyrslutímakerfi, dreifðan tungumálakjörtíma sem sameiginlega stjórnar keyrsluþjónustu til að samræma GC-framkallaða hlé yfir marga hnúta.
Jafnvel þó að bæði blöðin fjalli um JVM- og GC-tengd mál í Spark fyrir almenn mál, gerir blaðið okkar ráð fyrir að vinnuálag þjáist af minnistakmörkunum.
• Hagræðing skyndiminnistjórnunarstefnu fyrir Spark:
Höfundar [23] leggja til minnstu samsetningu viðmiðunarfjölda (LCRC), sem er ósjálfstæðis-meðvituð skyndiminnisstjórnunarstefna sem tekur bæði tillit til ósjálfstæðis innan stigs og milli stigs. LCRC getur endurskrifað þessar blokkir með aðgangi á milli þrepa í minni fyrir næstu notkun. Í rannsókninni okkar nýtum við SSD-diska frekar en að auka skyndiminnistefnuna til að bæta afköst minniskerfisins.

3. Hagræðingartækni fyrir Spark Platform
Í þessum hluta kynnum við klasaumhverfi okkar og tengda hagræðingartækni sem getur bætt heildarframmistöðu Spark vettvangsins.
For more information:195477648nn@gmail.com






