Optimizācijas paņēmieni sadalītai atmiņas skaitļošanas platformai, izmantojot SSD 2. daļa

Aug 17, 2023

3.1. Klasteru vide

1. attēlā parādīts mūsu testēšanas klasteris, kas sastāv no viena nosaukuma mezgla (galvenais) un četriem datu mezgliem (vergu). Nosaukuma mezglā (galvenais mezgls) mēs konfigurējām Hadoop (HDFS) NameNode un sekundāro NameNode un Spark draivera mezglu (galveno mezglu). Katrā datu mezglā mēs palaižam DataNode of Hadoop (HDFS) un Worker Node of Spark. Nosaukuma mezgla un datu mezgla iekārtām ir viena un tā pati H/W vide (3,4 GHz Xeon E3-1240V3 QuadCore procesors ar hiperpavedienu), izņemot galvenās atmiņas apjomu (8 GB nosaukuma mezglam un 4 GB katram datu mezglam).

Namename ir galvenais mezgls Hadoop arhitektūrā, kas atbild par visa Hadoop klastera failu sistēmas pārvaldību un uzraudzību. Namename mezgls ir arī viens no visa Hadoop klastera kritiskajiem mezgliem, un tā veiktspēja un uzticamība tieši ietekmēs visa Hadoop klastera darbības efektivitāti un pieejamību.

Ar Namename mezglu ir saistīti daudzi indikatori, viens no svarīgākajiem rādītājiem ir atmiņa. Name

Mezgla Namename atmiņa ne tikai nosaka to failu skaitu, ko tā var pārvaldīt, un failu sistēmas lielumu, bet arī ietekmē Hadoop klastera veiktspēju un uzticamību. Ja mezglam Namename nav pietiekami daudz atmiņas, tas nespēs ātri atbildēt uz klientu pieprasījumiem, kā rezultātā samazināsies visa Hadoop klastera caurlaidspēja. Turklāt, ja mezgls Namename neizdodas, tajā saglabātā metadatu informācija var tikt zaudēta, padarot visu HDFS failu sistēmu nepieejamu.

Tāpēc Hadoop klasterī mezgla Namename atmiņa ir ļoti svarīga. Administratoriem ieteicams izvēlēties atbilstošo Namename mezgla aparatūras konfigurāciju, pamatojoties uz konkrētām biznesa vajadzībām, un regulāri pārraudzīt Namename mezglu veiktspēju un pieejamību, lai nodrošinātu, ka tie var nodrošināt efektīvus un uzticamus pakalpojumus visam Hadoop klasterim. Var redzēt, ka mums jāuzlabo atmiņa. Cistanche var ievērojami uzlabot atmiņu, jo gaļas pasta ir tradicionāls ķīniešu ārstniecības materiāls ar daudzām unikālām iedarbībām, no kurām viena ir atmiņas uzlabošana. Maltās gaļas efektivitāti nodrošina dažādas aktīvās sastāvdaļas, tostarp karbonskābe, polisaharīdi, flavonoīdi utt. Šīs sastāvdaļas var veicināt smadzeņu veselību, izmantojot dažādus kanālus.

improving brain function

Noklikšķiniet uz zināt papildinājumus, lai uzlabotu atmiņu

Mēs izmantojām divus SSD kā uzglabāšanas vietas, kur operētājsistēmai tiek izmantots 120 GB SATA3 SSD, un HDFS ir aprīkots attiecīgi 512 GB SATA3 SSD. Turklāt 512 GB SATA3 SSD var efektīvi izmantot, lai paplašinātu nepietiekamas galvenās atmiņas joslas platumu, lai saglabātu Spark RDD kešatmiņu. Visi mezgli, ieskaitot nosaukumu mezglu un datu mezglu, ir savienoti ar 1 Gb Ethernet slēdzi, kā redzams 1. attēlā. 2. tabulā parādīts aparatūras un programmatūras konfigurāciju kopsavilkums katrā mūsu testēšanas klastera datu mezglā.

boost memory

10 ways to improve memory

3.2. Spark JVM kaudze

Spark darbs darbojas kā Java process Java virtuālajā mašīnā (JVM), un Spark izmanto Scala, funkcionālo valodu, kas paplašināta no Java. Spark darbinieka process darbojas arī katra datu mezgla JVM, tādējādi katrā datu mezglā darbinieka procesa galvenajā atmiņā ir JVM kaudze, kā parādīts 2. attēlā. Kad Spark iesniedz darbu, darbinieka process, kuram ir JVM kaudze izpilda darbu kā sadalītus uzdevumus.

short term memory how to improve

Mēs varam pielāgot Spark darbinieka JVM kaudzes lieluma attiecību, izmantojot konfigurācijas failu spark-defaults. conf direktorijā spark/conf/. Spark defaults.conf failā spark.executor.memory vērtība ir JVM kaudzes lielums, kur noklusējuma vērtība ir 512 MB, ko katrs darbinieka mezgls var izmantot datu mezglā. Turklāt spark.storage.safetyFraction vērtība ir fiksēta kā 0.9, kas nozīmē, ka Spark var izmantot līdz 90% no JVM kaudzes lieluma (pazīstama arī kā drošības zona). Tas ir paredzēts, lai JVM neģenerētu OOM (out of memory) kļūdas, jo uzdevuma apstrādes laikā trūkst pieejamās galvenās atmiņas.

Šajā drošības zonā kopējā JVM kaudzes vieta ir sadalīta trīs apakšreģionos: atritināšanas, uzglabāšanas un jaukšanas vietas, kā parādīts 2. attēlā. Attīšanas vieta tiek izmantota datu bloku atritināšanai atmiņā. Ja RDD ir kešatmiņā citā datu nesējā, piemēram, SSD vai HDD, kas nav galvenajā atmiņā, RDD ir jāserializē. Pēc tam, kad Spark nolasa šo RDD atpakaļ atmiņā, RDD ir jāatritina. Krātuves vieta tiek izmantota RDD kešatmiņai saglabāšanai. Ja atmiņas vietas nepietiek, lai saglabātu RDD kešatmiņu, dažus RDD var izlikt no šīs vietas, pamatojoties uz LRU (vismazāk izmantotā) politiku, vai arī tos var saglabāt kešatmiņā citos datu nesējos, piemēram, SSD. Sajaukšanas vieta tiek izmantota starpdatu jaukšanai. Šai jaukšanas vietai var būt svarīga loma iteratīvās lietojumprogrammās, piemēram, mašīnmācībā, jo tā var būtiski ietekmēt kopējo darba pabeigšanas laiku.

Noklusētajā Spark konfigurācijā JVM kaudzes krātuves un jaukšanas vietu ietilpības daļu attiecība ir attiecīgi {{0}}.6 un 0.2 (ti, 60 % no drošības zonas glabāšanai un 20% jaukšanai). Attīšanas vieta pēc noklusējuma aizņem 20% no krātuves vietas. Šo trīs JVM kaudzes vietu ietilpību var iestatīt ar dzirksteli. storage.unrollFraction, spark.storage.memoryFraction un spark.shuffle.memoryFraction. Piemēram, mūsu testēšanas klasterī spark.executor.memory varam iestatīt kā 2,6 GB no darbinieka mezgla 4 GB atmiņas, kas nozīmē, ka JVM kaudzes lielums ir iestatīts uz maksimālo 2,6 GB. Tad faktiskā krātuves un jauktās vietas ietilpība ir 2,6 GB × 0,9 × 0.6 = 1,4 GB un 2,6 GB × 0,9 × 0.2=0,46 GB, attiecīgi. Attiecīgi attīšanas vieta aizņem 1,4 GB × 0.{29}},28 GB.

3.3. RDD kešatmiņas politika

Spark platforma piedāvā dažādas RDD kešatmiņas iespējas, kas ietver galveno atmiņu un diskus. Noklusējuma opcija ir MEMORY_ONLY, kur RDD tiek uzturēts 3.2. sadaļa aprakstītajā krātuves vietā kā neserializēts Java objekts. Ja šīs krātuves vietas nepietiek visu RDD glabāšanai, daži no tiem tiks izlikti no galvenās atmiņas, pamatojoties uz iepriekš noteiktu kešatmiņas aizstāšanas politiku. Tomēr ikreiz, kad uzdevuma apstrādei ir nepieciešams nekešatmiņā saglabāts RDD, šis RDD ir jāizveido atkārtoti, pamatojoties uz ciltsinformāciju, kas var izraisīt būtisku veiktspējas pasliktināšanos šajā kešatmiņas politikā TIKAI MEMORY{6}}.

Papildus opcijai TIKAI ATMIŅA_, Spark piedāvā alternatīvas ATMIŅAS_UN_DISK, TIKAI DISK_un IZSLĒGTS_KAAUDAS opcijas. Opcija ATMIŅA_UN_DISK saglabā RDD nepastāvīgajā diskā, ja krātuves vietas nepietiek, lai saglabātu visus nepieciešamos RDD. Diski var sastāvēt no HDD vai SSD; tomēr parastajiem vārpstas diskiem ir salīdzinoši slikta lasīšanas/rakstīšanas caurlaidspēja, tāpēc kopējais izpildes laiks var būt ilgāks nekā kešatmiņas opcijai MEMORY_ONLY. Lai risinātu šo problēmu, mēs varam efektīvi izmantot SSD, kas, iespējams, var samazināt kopējo darba pabeigšanas laiku salīdzinājumā ar parasto HDD pieeju.

improve cognitive function

Opcija DISK_ONLY glabā RDD tikai nemainīgās atmiņas ierīcēs, piemēram, HDD vai SSD, ti, nevis galvenajā atmiņā. Klasteris, kuram nav pietiekami daudz pieejamās atmiņas, var sasniegt labu veiktspēju, izmantojot šo opciju. Šajā gadījumā, tā kā RDD tiek saglabāts tikai diska datu nesējā, jaukšanas vietu var paplašināt, nevis izmantot atmiņas krātuves vietu. Tā rezultātā, palaižot lietojumprogrammu, piemēram, PageRank, kas ģenerē salīdzinoši lielu jaukto datu apjomu, mēs varam novērot labāku veiktspēju nekā MEMORY_ONLY gadījumā.

Opcija OFF_HEAP ļauj Spark izmantot ārpus kaudzes vietu, kas ir ārpus Java atkritumu savācēja pārvaldības. Tādējādi, ja mēs izmantojam ārpuskaudzes vietu, mums ir jārisina sarežģītas atmiņas darbības, piemēram, piešķiršana/atdalīšana un serializācija/deserializācija. Tāpēc praktiskos nolūkos mēs neizmantojam OFF_HEAP konfigurāciju.

3.4. Optimizācijas metodika

Kā mēs apspriedām 3.2. un 3.3. sadaļā, mūsu optimizācijas metodes ietver (1) Spark JVM kaudzes konfigurāciju un (2) RDD kešatmiņas politikas eksperimentālās iespējas, kā norādīts tālāk.

1. Spark JVM kaudzes konfigurācija: mēs pētījām jaukšanas un uzglabāšanas vietu ietilpības frakciju attiecību maiņas ietekmi. Sajaukšanas un uzglabāšanas vietas attiecība ir attiecīgi 60%:30%, 50%:40% un 20%:60%. Jaukšanas un krātuves attiecība “20%:60%” ir noklusējuma vērtība Spark iestatījumos. Mēs izvēlamies "60%:30%", lai kontrastētu rezultātu ar pietiekamu jaukšanas vietu, un konfigurējam "50%:40%", lai parādītu veiktspēju līdzsvarotā veidā.

2. RDD kešatmiņas politika. Mēs arī pārbaudījām dažādu RDD kešatmiņas politiku ietekmi. Mēs salīdzinājām dažādu politiku, piemēram, IZSLĒGTS_KAAUDA, ATMIŅA_TIKAI, ATMIŅA_UN_DISK un TIKAI DISK_, veiktspēju, kur DISK šajā eksperimentā apzīmē SSD.

3. tabulā ir parādītas pavisam 12 dažādas eksperimentālās konfigurācijas, kuru pamatā ir RDD kešatmiņas politikas un Spark JVM jaudas frakciju attiecības. Eksperimenta konfigurācijās, kas apzīmētas ar "_1" (piemēram, "N_1"), mēs iestatījām 60% no Spark JVM kaudzes jaukšanai un 30% krātuves vietām. Ar tiem, kas apzīmēti ar "_2", mēs iestatām 50% no Spark JVM kaudzes jaukšanai un 40% glabāšanai. Visbeidzot, tiem, kas apzīmēti ar "_3", mēs iestatījām 20% no Spark JVM kaudzes jaukšanai un 60% krātuvei, kā redzams kolonnās "Option", "Shuffle" un "Storage". 3. tabulā. Ņemiet vērā, ka mūsu testēšanas klastera izpildītāja maksimālais atmiņas apjoms ir 2,7 GB, ti, katram darbinieka mezglam ir 2,7 GB kā Spark JVM kaudzes lielums.

ways to improve memory

Runājot par RDD kešatmiņas politiku, opcija "N" ir neglabāt RDD kešatmiņā, opcija "M" ir RDD kešatmiņa tikai atmiņā, opcija "M&S" ir RDD kešatmiņa saglabāšana atmiņā un SSD kopā, un visbeidzot, opcija "S" ir paredzēta tikai RDD kešatmiņai SSD.

Izmantojot mūsu eksperimentus, mēs piedāvājam optimizēt stratēģijas, kas var sasniegt vislabāko veiktspēju no klastera, kuram ir nepietiekams atmiņas apjoms, rūpīgi pielāgojot Spark JVM kaudzes konfigurāciju un izmantojot efektīvu RDD kešatmiņas politiku, kā mēs redzēsim 4. sadaļā.

4. Eksperimentālie rezultāti un analīze

4.1. 500 MB PageRank eksperimenti

4.1.1. Rezultāti, mainot JVM kaudzes konfigurācijas

3. attēlā ir parādīti katra PageRank darba slodzes posma eksperimentālie rezultāti, mainot JVM kaudzes izmērus. Distinct stadijā Spark nolasa ievades datus un atšķir URL un saites. Kā redzams no Distinct0 posma rezultātiem, kopējais izpildes laiks samazinās, mainot JVM kaudzes izmērus no _1 un _2 uz _3, galvenokārt tāpēc, ka uz atkritumu savākšanu (GC). Piemēram, GC laiks aizņem attiecīgi 25 s, 24 s un 16 s M&S_1, M&S_2 un M&S{{10}}. Tāpēc atšķirīgā0 posmā, palielinot krātuves vietu, mēs varam uzlabot vispārējo veiktspēju, samazinot GC laiku. No otras puses, Distinct1 posmā kopējais izpildes laiks palielinās, mainot opcijas no _1 un _2 uz _3. Tas galvenokārt ir saistīts ar jaukšanas noplūdi. Pārbaudot Spark tīmekļa lietotāja interfeisu, jaukšanas dati tika izlieti diskā, jo trūka jaukšanas atmiņas vietas. Piemēram, jauktās noplūdes datu izmēri diskā programmās M&S_1, M&S_2 un M&S_3 ir attiecīgi 0, 220 MB un 376 MB. Ja notiek jaukšanas noplūde, CPU pieskaitāmās izmaksas par datu izliešanu diskā palielinās, jo dati ir jāserializē.

memory enhancement

Pēc Distinct posmiem ir iteratīvi flatMap posmi, lai iegūtu rangus. FlatMap posmi ģenerē daudz jaukšanas datu, kā rezultātā mūsu klasterim var trūkt nepieciešamās jaukšanas atmiņas vietas. Tāpēc, samazinoties pieejamās jaukšanas vietas daudzumam (sakārtojumā no opcijām _1, _2 un _3), var rasties vairāk jaukšanas gadījumu, kas var ietekmēt kopējo darba izpildi. laiks (piemēram, M&S opcija flatMap2 posms _1: 37 s, _2: 40 s, _3: 49 s). Tomēr, ja dati tiek saglabāti tikai kešatmiņā (ti, M_1, M_2 un M_3), tie parāda citu modeli. Galvenais šādas rīcības iemesls ir tas, ka Spark plānotājs nevienmērīgi ieplāno uzdevumus, jo trūkst vietas atmiņā, lai saglabātu RDD kešatmiņu opcijās _1 un _2. Ja darbiniekam nav RDD, viņš tiek izslēgts no grafiku kopas. Tāpēc pārējiem darbiniekiem ir jāveic papildu uzdevumi ar GC pieskaitāmajām izmaksām, kas var ietekmēt visu darba izpildes laiku.

4.1.2. Rezultāti, mainot RDD kešatmiņas opcijas

Pirmkārt, atsevišķus posmus neietekmē RDD kešatmiņas politikas maiņa, bet tikai atmiņas lietojums. Posmi, kurus ietekmē RDD kešatmiņas opcija, ir flatMap posmi, jo jaukšanas fāzes laikā atkal tiek izmantoti kešatmiņā saglabātie RDD.

improve working memory

4. attēlā diagramma ir normalizēta ar opciju N_1, kas neglabā kešatmiņā RDD un _1 atmiņas konfigurāciju, lai pārbaudītu veiktspējas atšķirību. Salīdzinot tikai diagrammas _1, secībā M_1, M&S_1 un S_1, M{{8} ir veiktspējas pasliktināšanās par 32%. }} un attiecīgi 30% un 20% veiktspējas uzlabojumi ar M&S_1 un S_1. Izmantojot opciju M_1, relatīvi sliktas veiktspējas iemesls ir tas, ka RDD kešatmiņā tiek saglabāti nevienmērīgi krātuves trūkuma dēļ, kā rezultātā tiks nevienmērīga plānošana, kā jau minēts iepriekš. Tas nozīmē, ka JVM kaudzes vieta nav pietiekama datu jaukšanai un RDD saglabāšanai.

increase brain power

Lai atrisinātu šo problēmu, mēs izplatām RDD kešatmiņā gan atmiņā, gan SSD, kas var uzlabot veiktspēju, kā parādīts ar opciju M&S{0}}. RDD saglabāšana kešatmiņā uzlabo RDD piekļuves ātrumu, un RDD saglabāšana kešatmiņā SSD var izvairīties no jaukšanas, efektīvi paplašinot pieejamo jaukšanas vietu atmiņā. Izmantojot opciju S_1, kas uzrādījusi veiktspējas uzlabošanos par 20%, RDD tiek saglabāts kešatmiņā tikai SSD. Jaukšanas noplūde tiek samazināta, saglabājot RDD kešatmiņā SSD. Tomēr tas ir sasniedzis mazāku veiktspējas uzlabojumu nekā M&S_1, kur RDD galvenokārt tiek saglabāts kešatmiņā un tiek atkārtoti izmantots no atmiņas.

Spark noklusējuma konfigurācijā, kas ir opcija _3, mēs to varam redzēt secībā M_3, M&S_3, S_3 un N{{4 }}, kopējā veiktspēja samazinās. Noklusējuma konfigurācijā JVM kaudzes krātuve ir pietiekama, lai RDD varētu saglabāt kešatmiņā ar līdzsvaru. Tāpēc kopējā veiktspēja galvenokārt ir atkarīga no izmantotās atmiņas ierīces veiktspējas. Tomēr mēs joprojām varam redzēt vislabāko veiktspēju, izmantojot opciju M&S_1, jo mēs varam efektīvi samazināt GC laiku un jaukšanas noplūdi, saglabājot RDD kešatmiņu gan atmiņā, gan SSD.

4.2. 1 GB PageRank veiktspēja

Mēs eksperimentējām ar PageRank darba slodzi, palielinot datu apjomu no 500 MB līdz 1 GB. 5. attēlā parādītas dažādas sistēmas darbības salīdzinājumā ar PageRank 500 MB datu kopai. Mēs varam redzēt dažus neveiksmīgus darbus, kuri nevarēja veiksmīgi pabeigt darbu līdz take6 posmam (piemēram, N_1, N_2, M_1, M_2, M _3, M&S_3). Starp šiem neveiksmīgajiem darbiem ir tādi, kas neizdevās flatMap2 stadijā, proti, N_1, N_2 un M_1. Darba kļūmes iemesls ir atmiņas trūkums. GC notiek, ja RDD tiek saglabāts kešatmiņā ar nepietiekamu atmiņu. Šīs GC pieskaitāmās izmaksas dēļ Spark izpildītājs saņem ExecutorLostFailure izņēmumu.

M_2, M_3 un M&S_3 varētu turpināt apstrādi līdz flatMap2 stadijai; tomēr pēc tam notiek neveiksme. M&S_3 darbojas līdzīgi kā M_3 līdz flatMap2 stadijai, jo, kad tiek izmantota opcija M&S_3, ir pietiekami daudz atmiņas, lai saglabātu RDD kešatmiņu. Pēc flatMap2 rodas OutOfMemory kļūda, jo flatMap3 stadijā trūkst jauktas atmiņas vietas.

4.2.1. Rezultāti, mainot JVM kaudzes konfigurāciju

Posmā Distinct{0}} tiek rādīti ļoti līdzīgi rezultāti 500 MB datu kopai, un kopējā veiktspēja uzlabojas opciju secībā _1, _2 un _3. Tas ir tāpēc, ka GC laiks tiek samazināts attiecīgi līdz 78 s, 59 s un 28 s

No otras puses, Distinct1 posmā tas uzrādīja atšķirīgus rezultātus 500 MB datu kopai. 500 MB datu kopas eksperimentā mēs varam redzēt veiktspējas pieaugumu, palielinot atmiņas jaukšanas vietu. Tomēr 1 GB datu kopas eksperimentā darbinieka mezgla izpildītāja atmiņa nevar uzņemt lielo datu apjomu. Tāpēc atmiņas jaukšanas vieta kļūst salīdzinoši nepietiekama. Piemēram, jauktā atskaņošanas apjoms opcijām _1, _2 un _3 ir attiecīgi 575,5 MB, 813,8 MB un 843,4 MB, un GC laiks aizņem 33 s, 10 s un 8 s, attiecīgi. Kā jau minējām iepriekš, kad notiek jaukšanas noplūde, RDD ir jāserializē, lai varētu palielināties CPU aprēķini, kā rezultātā var pasliktināties vispārēja veiktspēja.

increase memory power

4.2.2. RDD kešatmiņas politikas maiņas rezultāti

Lai analizētu izpildes laiku, mainot RDD kešatmiņas politiku, kā redzams 6. attēlā, mēs izslēdzam atsevišķus posmus no 5. attēla. Tas ir tāpēc, ka mums nav jāanalizē atsevišķi posmi, jo RDD kešatmiņas politikas maiņa neizraisa nekādas izmaiņas. .

Interesanti, ka dažādās JVM kaudzes konfigurācijās flatMap posmos nav izmaiņu, atšķirībā no 500 MB datu kopas. Iemesls tam ir tāds, ka jauktā noplūde notiek visās konfigurācijās, jo nav pietiekami daudz atmiņas. Kopējais izpildes laiks, mainot RDD kešatmiņas opciju, palielinās M&S, S, N un M secībā (M&S ir ātrākā opcija.) Opcijā N ExecutorLostFailure kļūda rodas, jo nav pietiekami daudz vietas atmiņā. Opcijā M, kad RDD tiek saglabāts kešatmiņā, rodas GC pārslodze, jo nav pietiekami daudz vietas atmiņā. Pat ja RDD ir saglabāts atmiņā kešatmiņā, darbs neizdodas ExecutorLostFailure kļūdas dēļ, kas rodas, ja jauktā atmiņā nav pietiekami daudz vietas (OutOfMemory).

Šādās maz pieejamās atmiņas situācijās M&S un S opcijas var būt efektīvas alternatīvas. Opcijā M&S{{0}} mēs palielinām RDD pieejamību, saglabājot RDD kešatmiņā, izmantojot gan atmiņu, gan SSD. Rezultātā ir veiktspējas uzlabojums tā paša iemesla dēļ kā 500 MB datu kopai. Turklāt ir pietiekami daudz vietas jauktā atmiņā, jo RDD tiek saglabāts kešatmiņā SSD. Kā redzams 6. attēlā, opcija M&S_1 kļūst par ātrāko iespēju šajā eksperimentā (M&S_1:0,6, S_1:0,63, T_1 0,64).

improve short term memory

4.3. TC eksperimenta analīze

7. attēlā parādīti TC (transitīvās slēgšanas) eksperimentu rezultāti, kuros tiek izmantoti ievades dati, kas ietver 50,000 malas un 25,000 virsotnes, kas ģenerētas nejauši. Iterācijas skaits ir 10. Veicot iterācijas, uzdevumu skaits tiek dubultots katrā iterācijā, un tāpēc palielinās RDD lielums un palielinās arī jauktās lasīšanas un rakstīšanas apjoms. Pēdējā iterācijā uzdevumu skaits kļūst par 4096. Tā kā ir vairāk iterācijas posmu, ir lielāka ietekme uz kopējo darba izpildes laiku, un pēdējais iterācijas posms ir vislielākais, kas sastāv no daudziem uzdevumiem, kas var pazemināt kopējo veiktspēju. .

increase memory

Kā redzams no 7. attēla, veiktspēja uzlabojas secībā _3, _2 un _1 opcijām M, M&S un S, kas nozīmē, ka tiek iegūta pietiekama sajaukšana. JVM kaudzes atmiņa ir noderīga. Izmantojot opciju M, opcijas _1 veiktspēja ir par 18% ātrāka nekā opcijas _3 veiktspēja, savukārt M&S ​​opcijas _1 veiktspēja ir par 3% ātrāka nekā {{9}. }}. Opcijā S _1 veiktspēja ir par 2% ātrāka nekā _3.

Ja mēs koncentrējamies uz RDD kešatmiņas opcijas maiņu, opcijas S_1 veiktspēja ir par 42% ātrāka nekā N_1, kā arī par 31% ātrāka nekā M_1. Darba izpildes laika veiktspējas pieauguma iemesls ir atkarīgs no pēdējās iterācijas stadijas. Galvenais faktors, kas ietekmē pēdējo iterācijas posmu, ir jauktās lasīšanas bloķēšanas laiks. Jauktās lasīšanas bloķēšanas laiks rodas, kad iepriekšējā posmā izpildītais RDD tiek nolasīts no cita darbinieka mezgla, izmantojot tīklu, jo trūkst izpildītāja atmiņas.

Pat ja katram uzdevumam ir aptuveni 1–2 s veiktspējas pieaugums, atrisinot jauktas nolasīšanas bloķēšanas laiku, mēs varam sasniegt ievērojamu veiktspējas pieaugumu, jo pēdējā stāvoklī uzdevumu skaits ir diezgan liels (ti, 4096). Turklāt viens no galvenajiem faktoriem, kas ietekmē darba izpildes laiku, ir skaitīšanas posms, kurā tiek skaitīts, cik malu ir TC matricai pēdējā darbā.

Izmantojot opciju N, jo skaitīšanas posmā kešatmiņā nav saglabāti RDD, Spark nolasa jaukšanas datus, kas izpildīti no iepriekšējā posma, kas aizņem 60 s. Turklāt opcijā M RDD netiek saglabāts kešatmiņā izpildītāja atmiņas trūkuma dēļ. Rezultātā tas aizņem arī 60 s. Tomēr M&S un S opcijās RDD var saglabāt kešatmiņā atmiņā un SSD, lai skaitīšanas stadijā tas aizņemtu tikai 2 s.

4.4. TeraSort eksperimenta analīze

8. attēlā parādīti eksperimentālie rezultāti TeraSort etalonam, kas izmanto 10 GB datu kopu, mainot JVM kaudzes konfigurāciju un RDD kešatmiņas opciju. Šo grafiku normalizē opcija N_1. Mēs redzam, ka visi darbu izpildes laiki ir līdzīgi; atšķirība starp tiem ir mazāka par 5%. TeraSort darba slodzē veiktspējas uzlabojumi vai pasliktināšanās, mainot konfigurācijas un opcijas, nenotika. Šķirošanas stadijā tīklā notiek dažas sajaukšanas reizes. Tomēr jauktās lasīšanas un jauktās rakstīšanas lielumi katrs ir 25 MB, kas ir diezgan mazs salīdzinājumā ar PageRank un TC. Tāpēc JVM kaudzes konfigurācija un RDD kešatmiņas opcija neietekmē veiktspēju. Turklāt TeraSort darba slodze nesastāv no iteratīviem uzdevumiem kā pārejas slēgšanā, tāpēc no RDD kešatmiņas saglabāšanas iepriekšējā posmā nav nekādu labumu.

ways to improve brain function

4.5. K-Means klasterizācijas eksperimenta analīze

Normalizētais k-means klasterizācijas darba pabeigšanas laiks 1,5 GB datu kopai ir parādīts 9. attēlā. K-vidējo klasteru veidošanas mērķis ir datu kopā atrast k klasteri, pamatojoties uz attāluma mērījumu (piemēram, Eiklīda attālumu). Šajā darba slodzē algoritms samazina SSE (sum of squared error) [24], atkārtojot attāluma aprēķinu starp k centra punktiem un katru datu punktu. Šajā eksperimentā mēs atkārtojam šo procesu astoņas reizes. Sajaucamo datu apjoms ir minimāls, jo no iepriekšējā posma nepieciešamie dati ir informācija par centra punktiem un SSE katrā posmā. Mūsu k-means klasterēšanas darba slodzē maksimālais jauktās lasīšanas/rakstīšanas datu apjoms ir 1.0 MB, bet minimālais ir 0,8 MB. Sajaukšanas noplūde šeit nenotiek, jo jaukšanas vieta ir pietiekama visos iestatījumos. Eksperimentos bez kešatmiņas opcijām opcijām _1, _2 un _3 nav atšķirību, jo šie iestatījumi neglabā kešatmiņā nevienu RDD, un visos trīs iestatījumos notiek jaukšana. vietas pietiek.

improve your memory

Saglabājot RDD kešatmiņā galvenajā atmiņā vai atmiņā un SSD, jo vairāk vietas ir RDD, jo vairāk uzlabojas veiktspēja darba izpildes laikā, jo vairāk RDD var saglabāt kešatmiņā. Salīdzinot opciju _tikai atmiņa un atmiņa_un_SSD opcija, atmiņas_un_SSD opciju veiktspēja uzlabojās. Tas ir tāpēc, ka tikai atmiņas _opcijā krātuves vietas nepietiek pat opcijā M_3. Turklāt RDD saglabāšana kešatmiņā SSD atrisina šādu atmiņas atmiņas trūkumu. Atmiņas_un_SSD opcijas uzlaboja veiktspēju vidēji par 10%, salīdzinot ar tikai atmiņas{10}}opciju.

Ņemiet vērā, ka k-mean klasterizācijas darba slodze uzrāda pretēju veiktspējas tendenci no PageRank un pārejas slēgšanas darba slodzes, jo atšķiras jaukto datu apjoms. Mēs to sīkāk apspriedīsim nākamajā apakšnodaļā.

5. Diskusija un kopsavilkums

5.1. Diskusija

Mēs analizējām galvenos iespējamo veiktspējas pasliktināšanās problēmu faktorus, pamatojoties uz darba slodzes un apstrādes posmu īpatnībām. Mūsu plašie eksperimentālie rezultāti ir apkopoti par Spark platformas veiktspējas optimizācijas paņēmienu izmantošanu dažādām darba slodzēm šādi:

• Java atkritumu savākšanas radītā veiktspējas pasliktināšanās: PageRank darba slodzē ar 500 MB datu kopu un 1 GB datu kopu GC notiek, ja JVM kaudzes krātuves vieta nav pietiekama RDD glabāšanai. Distinct0 stadijā, kas nolasa ievades failu no HDFS un saglabā to kešatmiņā RDD, notiek GC. Mēs paplašinām JVM kaudzes krātuves vietu, izmantojot konfigurāciju, lai atrisinātu šo GC problēmu. Mēs varam uzlabot veiktspēju, lai samazinātu GC, jo JVM kaudzes krātuves vietu var paplašināt. 3. un 5. attēlā ar to pašu RDD kešatmiņas opciju _3 konfigurācija parāda vislabāko veiktspēju Distinct0 posmā. Turklāt PageRank ar 1 GB datu kopu dažas opcijas neizdodas flatMap stadijā atmiņas trūkuma dēļ. GC pieskaitāmās izmaksas palielinās tik daudz, ka posms neizdodas vai nonāk bezgalīgā cilpā. Tādējādi mēs izveidojam kopu ar SSD, lai atrisinātu šo problēmu. Tas parāda veiktspējas uzlabošanos un veiksmīgi izpilda darbu, kas neizdevās, izmantojot tikai atmiņu, kā redzams 6. attēlā, M&S_1 un S_1.

• Veiktspējas pasliktināšanās jaukšanas dēļ: PageRank darba slodzē ar 500 MB datu kopu un 1 GB datu kopu flatMap posmā mēs varam redzēt, ka opcija M&S_1 parāda vislabāko veiktspēju, jo tai ir vismazākais sajaukšanas apjoms. noplūde (4. attēls: M&S_1 ir par 30% ātrāks nekā N_1; 6. attēls: M&S_1 ir par 40% ātrāks nekā N_3). PageRank ir daudz jaukšanas uzdevumu. Tādējādi, ja JVM kaudzes jaukšanas vieta nav pietiekama datu jaukšanai tīklā, notiek jaukšanas noplūde. Tāpēc, lai samazinātu jaukšanas noplūdi, JVM kaudzes jaukšanas telpas paplašināšana kļūst par galveno veiktspējas uzlabošanas faktoru.

Turklāt mēs varam uzlabot veiktspēju, saglabājot RDD gan atmiņā, gan SSD. Tas var likt izpildītājam paplašināt JVM kaudzes jaukšanas atmiņu, lai samazinātu jaukšanas noplūdi. Ja ir vairāk iterāciju, veiktspēja no flatMap posma būtu galvenais veiktspējas uzlabošanas punkts. 1 GB datu kopas eksperimentā S_3 darba izpildes laiks ir labākais risinājums, jo RDD tiek kešatmiņā saglabāti tikai SSD, un izpildītājiem ir pietiekami daudz atmiņas. Tādējādi, izmantojot opciju S_3, atšķirīgie posmi ir ātrāki nekā jebkura cita opcija. Tomēr, ja atkārtojumu skaits palielinās, flatMap posms ietekmē darba izpildes laiku. Tādējādi opcija M&S_1 var sasniegt lielisku veiktspēju šajā gadījumā. Izmantojot šīs analīzes, mēs varam noteikt, ka jaukšanai ir galvenā ietekme uz darba pabeigšanas laiku. Tādējādi mums ir jāpaplašina JVM kaudzes jauktā atmiņa un RDD kešatmiņā gan atmiņā, gan SSD, lai iegūtu pietiekami daudz jaukšanas atmiņas vietas, lai novērstu jaukšanas noplūdi.

• Veiktspējas pasliktināšanās jauktās lasīšanas bloķēšanas laika dēļ: TC darba slodzei ir jauktas lasīšanas bloķēšanas laiks. Tas notiek, ja posmā ir daudz uzdevumu un katram uzdevumam ir jāizlasa iepriekšējais RDD, izmantojot tīklu. TC eksperimenta rezultātā (7. attēls) opcija M&S ir ātrāka nekā opcija M. Tajā pašā RDD kešatmiņas opcijā JVM kaudzes jaukšanas vietas paplašināšana ir ātrāka nekā krātuves vietas paplašināšana. Uzlabotas veiktspējas iemesls ir tas, ka, paplašinot JVM kaudzes jaukšanas vietu, katrā uzdevumā samazinās jaukšanas lasīšanas bloķēšanas laiks.

5.2. Kopsavilkums: kurš ir labākais veids?

Visaptverošajos eksperimentālajos rezultātos nav neviena labākā iestatījuma, lai palielinātu visas darba slodzes, jo katrai no šīm darba slodzēm ir atšķirīgas īpašības pat tās darba laikā. Tomēr mēs joprojām varam piedāvāt, kā optimizēt sadalītas atmiņā esošās skaitļošanas platformas konfigurācijas, ņemot vērā mērķa darba slodžu daudzveidību šādi:

• Spark JVM kaudzes konfigurācija — jaukšanas apgabals pret krātuves apgabalu: saskaņā ar četru dažādu darba slodžu eksperimentālajiem rezultātiem mēs varam novērot veiktspējas atšķirības atkarībā no darba slodzes īpašībām. Piemēram, PageRank ir tipisks piemērs lielam jaukto datu apjomam, tāpēc vairāk atmiņas piešķiršana jaukšanas daļai uzlabo kopējo veiktspēju. Tomēr k-means klasterizācijas gadījumā, jo vairāk mēs atvēlam atmiņas atmiņai, nevis jauktajai atmiņai, jo mazāks ir nepieciešams izpildes laiks. Tāpēc, ja mēs varam dinamiski pielāgot JVM atmiņas piešķiršanas procentus atbilstoši darba slodzes īpašībām, mēs varam optimizēt kopējo izpildes laiku. Hadoop YARN [25] ļauj mums piešķirt darbus dažāda veida klasteriem (konfigurācijām), lai mēs varētu pielietot šo ideju liela izmēra Hadoop klasterim, lai atbilstu dažādu veidu darbu atmiņas īpašībām.

• RDD kešatmiņas politika — atmiņa pret SSD: vairumā gadījumu ar SSD atbalstītā atmiņas kešatmiņa uzrāda vislabāko veiktspēju, ja vien visi RDD nevar ietilpt faktiskajā galvenajā atmiņā. Tāpēc ar SSD atbalstīta atmiņas kešatmiņas politika var būt piemērota izvēle sarežģītām darba slodzēm, kurām nepieciešams ievērojams galvenās atmiņas apjoms, ko nevar nodrošināt neviens klastera mezgls.

6. Secinājumi

Šajā rakstā mēs esam izpētījuši galvenos Spark sistēmas veiktspējas pasliktināšanās faktorus, kas darbojas uz preču servera balstīta skaitļošanas klastera ar nepietiekamu pieejamo galveno atmiņu skaitu. Pēc eksperimentēšanas un analīzes mēs iepazīstinājām ar alternatīvām, kas var uzlabot vispārējo veiktspēju.

Java atkritumu savākšana notiek, ja JVM kaudzes krātuves vieta nav pietiekama fiziskās atmiņas trūkuma dēļ. Java GC liek uzdevumiem gaidīt atkritumu savākšanu, lai kopējais darba pabeigšanas laiks palielinātos. Jaukšanas noplūde notiek, ja jaukšanas fāzes laikā JVM kaudzes jaukšanas vieta nav pietiekama. Jaukšanas vietas trūkums palielina CPU slodzi, lai veiktu serializāciju starpposma jaukšanas datu izliešanai diskā. TC darba slodzes eksperimentā jaukšanas lasīšanas bloķēšanas laiks liek uzdevumam gaidīt jaukšanas datu nolasīšanu tīklā, jo trūkst jaukšanas vietas. Visi šie faktori var palielināt kopējo darba pabeigšanas laiku, kas var nopietni ietekmēt Spark sistēmas veiktspēju.

Lai risinātu šīs problēmas, mēs izveidojam kopu ar SSD un RDD kešatmiņā saglabājam gan atmiņā, gan SSD atsevišķi, izmantojot SSD, lai papildinātu atmiņas krātuves vietu. Turklāt mēs pielāgojam JVM kaudzes konfigurāciju, lai paplašinātu jaukšanas telpu. Rezultātā mēs varētu sasniegt 30% veiktspējas uzlabojumu PageRank darba slodzei un 42% veiktspējas uzlabojumu TC darba slodzei. Mēs esam noskaidrojuši, ka jaukšanas noplūde var būt galvenais veiktspējas pasliktināšanās faktors, un eksperimentējot parādījām, ka darba slodzēs, kas sastāv no vairākām iterācijām un jaukšanas, jaukšanas vietas paplašināšana var nodrošināt ievērojamu veiktspējas pieaugumu. Turklāt mēs atklājām, ka dažādi darbu atmiņas izmantošanas modeļi var ietekmēt kopējo izpildes laiku atkarībā no atmiņas/jaukšanas atmiņas procentuālā sadalījuma JVM. Saskaņā ar PageRank un k-means klasterizācijas veiktspējas analīzi, atmiņas piešķiršana JVM, kas ir labi pielāgota darba slodzes īpašībām, var ievērojami uzlabot darba pabeigšanas laiku.

Šo atklājumu integrēšana Spark platformā būtu viens no mūsu turpmākajiem darbiem. Piemēram, ja darba slodzes var raksturot ar jaukto datu apjomu, var automātiski lietot optimizētu konfigurāciju, lai paātrinātu mērķa darba slodžu apstrādi. Tāpēc neviendabīgās serveru konfigurācijās, izstrādājot darba slodzes atmiņas lietojumu apzinošas plānošanas sistēmas, var uzlabot uz Spark balstīta klastera vispārējo veiktspēju.

Autora ieguldījums:

Konceptualizācija, JL (Jaehwan Lee); metodoloģija, JL (Jaehwan Lee) un JC; programmatūra, JC un JL (Jaehyun Lee); validācija, JC, JL (Jaehyun Lee) un JL (Jaehwan Lee); izmeklēšana, JL (Jaehwan Lee) un J.-SK; resursi, JL (Jaehwan Lee) un J.-SK; datu apkopošana, JC un JL (Jaehyun Lee); rakstīšana — oriģinālā projekta sagatavošana, JC un JL (Jaehyun Lee); rakstīšana — apskats un rediģēšana, JL (Jaehwan Lee) un J.-SK; vizualizācija, JL (Jaehyun Lee); uzraudzība, JL (Jaehwan Lee) un J.-SK; projekta administrācija, JL (Jaehwan Lee) un J.-SK; finansējuma iegūšana, JL (Jaehwan Lee). Visi autori ir izlasījuši un piekrituši publicētajai manuskripta versijai.

help with memory

Finansējums:

Šo pētījumu atbalstīja Pamatzinātņu pētniecības programma (NRF-2020R1F1A1072696), izmantojot Korejas Nacionālā pētniecības fonda (NRF), ko finansēja Zinātnes un IKT ministrija, Kjongi provinces GRRC programma (Nr. GRRC-KAU{). {5}}B01, "Pētījums par video un kosmosa konverģences platformu 360VR pakalpojumiem") un ITRC (Informācijas tehnoloģiju pētniecības centra) atbalsta programma (IITP{8}}).

Institucionālās pārbaudes padomes paziņojums:

Nav piemērojams.

Informētas piekrišanas paziņojums:

Nav piemērojams.

Paziņojums par datu pieejamību:

Pieejams pēc pieprasījuma.

Interešu konflikti:

Autori paziņo, ka nav interešu konflikta.


Atsauces

1. Dīns, Dž.; Ghemawat, S. MapReduce: vienkāršota datu apstrāde lielos klasteros. Commun. ACM 2008, 51, 107–113. [CrossRef]

2. Apache Hadoop projekts: atvērtā pirmkoda programmatūra uzticamai, mērogojamai, dalītai skaitļošanai. Pieejams tiešsaistē: https: //hadoop.apache.org/ (aplūkots 2021. gada 10. septembrī).

3. Švačko, K.; Kuangs, H.; Radija, S.; Chansler, R. Hadoop izplatītā failu sistēma. Proceedings of the 2010 IEEE 26th Symposium on Massive Storage Systems and Technology (MSST), Incline Village, NV, ASV, 2010. gada 3.–7. maijs; 1.–10.lpp.

4. Zaharija, M.; Chowdhury, M.; Franklins, MJ; Šenkers, S.; Stoica, I. Spark: Klasteru skaitļošana ar darba kopām. HotCloud 2010, 10, 95.

5. Ousterhout, K.; Rasti, R.; Ratnasamijs, S.; Šenkers, S.; Chun, BG Veiktspējas izpratne datu analīzes ietvaros. In Proceedings of the 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI), Oklenda, Kalifornija, ASV, 2015. gada 4.–6. maijs; 293.–307.lpp.

6. Xing, W.; Ghorbani, A. Weighted PageRank algoritms. IEEE otrās ikgadējās konferences par sakaru tīklu un pakalpojumu izpēti materiāliem, Frederiktona, NB, Kanāda, 2004. gada 21. maijs; 305.–314.lpp.

7. Chakradhar, ST; Agrawal, VD; Rothweiler, SG Transitīvās slēgšanas algoritms testa ģenerēšanai. IEEE Trans. Comput.-Aided Des. Integr. Shēmu sistēma 1993, 12, 1015–1028. [CrossRef]

8. O'Malley, O. Terabyte Kārtot vietnē Apache Hadoop. Yahoo. maijs 2008. 1.–3.lpp. Pieejams tiešsaistē: http://sortbenchmark.org/ YahooHadoop.pdf (apskatīts 2021. gada 10. septembrī).

9. K-Means klasterizācija. Pieejams tiešsaistē: https://en.wikipedia.org/wiki/K-means_clustering (piekļuve 2021. gada 10. septembrī).

10. Zaharija, M.; Chowdhury, M.; Das, T.; Deivs, A.; Ma, J.; McCauly, M.; Franklins, MJ; Šenkers, S.; Stoica, I. Elastīgas sadalītas datu kopas: kļūdu toleranta abstrakcija atmiņas klasteru skaitļošanai. 9. USENIX simpozija par tīkla sistēmu projektēšanu un ieviešanu (NSDI) darbā Sanhosē, Kalifornijā, ASV, 2012. gada 25.–27. aprīlis; 15.–28.lpp.

11. Deividsons, A.; Vai arī A. Jaukšanas veiktspējas optimizēšana programmā Spark; Tehniskais ziņojums; Bērklija – Kalifornijas Universitātes Elektrotehnikas un datorzinātņu nodaļa: Bērklija, Kalifornija, ASV, 2013. gads.

12. Nikolajs, B.; Kosta, Ča; Misale, C.; Katrīnis, K.; Park, Y. Adaptīvās ievades/izvades izmantošana, lai optimizētu kolektīvo datu jaukšanas modeļus lielo datu analīzei. IEEE Trans. Paralēlais sadalījums. Sist. 2017, 28, 1663–1674. [CrossRef]

13. Džans, H.; Čo, B.; Seifs, E.; Čings, A.; Freedman, MJ Riffle: optimizēts jaukšanas pakalpojums liela mēroga datu analīzei. Trīspadsmitās EuroSys konferences materiālos; EuroSys '18; Computing Machinery asociācija: Ņujorka, NY, ASV, 2018. [CrossRef]


For more information:1950477648nn@gmail.com




Jums varētu patikt arī