Ku Habaynta Spark on YARN

Habr, hello! Shalay oo kale kulan u heellan Apache Spark, ragga ka socda Rambler&Co, waxaa jiray su'aalo aad u badan oo ka qaybgalayaasha ah oo la xidhiidha habaynta qalabkan. Waxaan go'aansannay inaan raacno wadadiisa oo aan wadaagno khibradeena. Mawduuca ma fududa - markaa waxaanu kugu martiqaadaynaa inaad la wadaagto khibradaada faallooyinka, laga yaabee inaan sidoo kale fahanno oo isticmaalno shay khaldan.

Hordhac yar oo ku saabsan sida aan u isticmaalno Spark. Waxaan leenahay barnaamij saddex bilood ah "Takhasusiyaha Xogta Weyn", iyo inta cutubka labaad oo dhan ka qaybgalayaashayadu waxay ku shaqeeyaan qalabkan. Sidaas awgeed, hawshayada, qabanqaabiyeyaasha ahaan, waa inaan diyaarino kooxda si loogu isticmaalo kiiskan oo kale.

Farqiga isticmaalkayaga ayaa ah in tirada dadka isku mar ka shaqeeya Spark ay la mid noqon karto kooxda oo dhan. Tusaale ahaan, siminaarka, marka qof kastaa isku mar isku dayo wax oo uu ku celceliyo ka dib macalinkeena. Oo tani maahan wax badan - mararka qaarkood ilaa 40 qof. Waxaa laga yaabaa inaysan jirin shirkado badan oo adduunka ah oo wajahaya kiis isticmaalka noocaas ah.

Marka xigta, waxaan kuu sheegi doonaa sida iyo sababta aan u dooranay xaddidaadaha qaabeynta qaarkood.

Aan ka bilowno bilowgii hore. Spark waxay leedahay 3 ikhtiyaar oo ay ku shaqeyso koox: kaligeed, adeegsiga Mesos, iyo isticmaalka YARN. Waxaan go'aansanay inaan doorano ikhtiyaarka saddexaad sababtoo ah macno ayay noo samaysay. Waxaan horey u haysanay koox hadoop ah. Ka qaybgalayaashayadu waxay horeba si fiican u yaqaaneen qaab-dhismeedkeeda. Aynu isticmaalno YARN

spark.master=yarn

Intaa ka sii xiiso badan. Mid kasta oo ka mid ah 3-daan doorasho ee la kala dooranayo wuxuu leeyahay 2 doorasho oo la kala dooran karo: macmiil iyo koox. Ku salaysan dukumentiyo iyo isku xirka kala duwan ee internetka, waxaan ku soo gabagabeyn karnaa in macmiilku ku haboon yahay shaqada isdhexgalka - tusaale ahaan, iyada oo loo marayo jupyter notebook, iyo kooxdu waxay ku habboon tahay xalalka wax soo saarka. Xaaladeena, waxaan xiisaynay shaqada isdhexgalka, sidaas darteed:

spark.deploy-mode=client

Guud ahaan, hadda laga bilaabo Spark waxay si uun uga shaqayn doontaa YARN, laakiin tani naguma filna. Maadaama aan hayno barnaamij ku saabsan xog weyn, mararka qaarkood ka-qaybgalayaashu kuma filna waxa laga helay qaab-dhismeedka xitaa qaybinta kheyraadka. Kadibna waxaan helnay wax xiiso leh - qoondaynta kheyraadka firfircoon. Marka la soo koobo, ujeedadu waa tan: haddii aad haysatid hawl adag oo kooxdu ay xor tahay (tusaale ahaan, subaxdii), ka dib isticmaalka doorashadan Spark waxay ku siin kartaa ilo dheeraad ah. Baahida meeshaas waxaa loo xisaabiyaa iyadoo loo eegayo qaacidada dhagarta. Ma geli doono faahfaahin - si fiican ayay u shaqeysaa.

spark.dynamicAllocation.enabled=true

Waxa aanu dejinay halbeeg-gan, oo markii uu bilaabay Spark waa burburtay oo ma aanu bilaabin. Taasi waa sax, sababtoo ah waxay ahayd inaan akhriyo dukumeenti si taxadar leh. Waxa ay sheegaysaa in si wax walba ay u hagaagaan, aad sidoo kale u baahan tahay in aad awood dheeraad ah.

spark.shuffle.service.enabled=true

Waa maxay sababta loogu baahan yahay? Marka shaqadeenu aysan u baahnayn ilo badan, Spark waa in ay ku celisaa barkada caadiga ah. Marxaladda ugu wakhtiga badan ee hawl kasta oo MapReduce ah waa marxaladda Isku-shaandhaynta. Halbeeggani wuxuu kuu ogolaanayaa inaad kaydiso xogta la soo saaray marxaladan oo aad u sii dayso fulinta si waafaqsan. Fuliyuhuna waa habka xisaabiya wax kasta oo shaqaalaha saaran. Waxa ay leedahay tiro cayiman oo ah kombuyuutarrada processor-ka iyo qaddar cayiman oo xusuusta ah.

Halbeeggaan waa lagu daray Wax walba waxay u muuqdeen inay shaqaynayeen. Waxa ay noqotay mid la dareemo in ka qaybgalayaasha runtii la siiyay agab badan marka ay u baahdaan. Laakiin dhibaato kale ayaa kacday - mar ka mid ah ka qaybgalayaasha kale way tooseen oo sidoo kale waxay rabeen inay isticmaalaan Spark, laakiin wax walbaa way mashquuleen, wayna ku faraxsanayn. Waa la fahmi karaa. Waxaan bilownay inaan eegno dukumentiyada. Waxaa soo baxday in ay jiraan tiro calaamado kale ah oo loo isticmaali karo in lagu saameeyo habka. Tusaale ahaan, haddii fuliyuhu uu ku jiro qaab heegan ah, wakhti intee le'eg ayaa agabka laga qaadan karaa?

spark.dynamicAllocation.executorIdleTimeout=120s

Xaaladeena, haddii fuliyeyaashaadu aysan waxba samaynin laba daqiiqo, ka dibna fadlan ku soo celi barkada caadiga ah. Laakiin halbeeggani had iyo jeer kuma filna. Waxa caddaatay in aanu qofku muddo dheer waxba qabanayn, oo agabkiina aan la xorayn. Waxaa soo baxday in sidoo kale ay jirto halbeeg gaar ah - ka dib wakhtiga lagu dooranayo fuliyeyaasha oo ay ku jiraan xogta la kaydiyay. Sida caadiga ah, cabbirkaani wuxuu ahaa mid aan dhammaad lahayn! Waanu saxnay.

spark.dynamicAllocation.cachedExecutorIdleTimeout=600s

Taasi waa, haddii fuliyeyaashaadu aysan waxba sameynin 5 daqiiqo, sii barkada caadiga ah. Habkan, xawaaraha sii deynta iyo soo saarista agabka tiro badan oo isticmaalayaasha ah ayaa noqday mid hufan. Qadarka niyad jabka ayaa hoos u dhacay. Laakiin waxaan go'aansanay inaan sii wadno oo aan xaddidno tirada ugu badan ee fulinta codsi kasta - asal ahaan ka qaybgalayaasha barnaamijka.

spark.dynamicAllocation.maxExecutors=19

Hadda, dabcan, waxaa jira dad aan ku qanacsanayn dhinaca kale - "Kooxdu waa shaqo-la'aan, waxaana kaliya oo aan haystaa 19 fulinta," laakiin maxaad samayn kartaa? Waxaan u baahanahay nooc ka mid ah dheelitirnaanta saxda ah. Qof walba kama farxin kartid.

Iyo hal sheeko yar oo kale oo la xidhiidha waxyaabaha gaarka ah ee kiiskeena. Si kastaba ha ahaatee, dhowr qof ayaa ka daahday cashar wax ku ool ah, iyo sabab qaar ka mid ah Spark ma aysan bilaabin iyaga. Waxaan eegnay qaddarka kheyraadka bilaashka ah - waxay u muuqataa inay halkaas jirto. Spark waa inuu bilaabmaa. Nasiib wanaag, wakhtigaas dukumeentigu mar hore ayaa lagu daray kortex-hoosaadka meel, waxaanan xasuusanay in markii la bilaabayo Spark, ay raadinayso deked ay ku bilowdo. Haddii dekedda ugu horreysa ee xadka ay mashquul tahay, waxay u guurtaa midda xigta siday u kala horreeyaan. Haddii ay xor tahay, way qabtaa. Oo waxaa jira halbeeg tilmaamaya tirada ugu badan ee isku dayga tan. Kharashku waa 16. Tirada waa ka yar tahay tirada dadka ee kooxdayada ee fasalka. Sidaa awgeed, 16 isku day ka dib, Spark wuu quustay oo wuxuu yidhi ma bilaabi karo. Waanu saxnay cabbirkan.

spark.port.maxRetries=50

Marka xigta waxaan kuu sheegi doonaa wax ku saabsan goobaha qaarkood oo aan aad ula xiriirin waxyaabaha gaarka ah ee kiiskeena.

Si aad dhakhso ugu bilowdo Spark, waxa lagu talinayaa in aad kaydiso galka dhalooyinka ee ku yaal SPARK_HOME tusaha guriga oo aad dul saarto HDFS. Markaa wakhti kuma lumin doono rarista jarninadan ay shaqaaluhu wadaan.

spark.yarn.archive=hdfs:///tmp/spark-archive.zip

Waxa kale oo lagu talinayaa in loo isticmaalo kryo siyaale ahaan hawl-qabad degdeg ah. Way ka sii wanagsan tahay kan caadiga ah.

spark.serializer=org.apache.spark.serializer.KryoSerializer

Waxa kale oo jirta dhibaato muddo dheer soo jirtay oo Spark ah oo ay inta badan ku burburto xusuusta. Inta badan tani waxay dhacdaa wakhtigan ay shaqaaluhu xisaabiyeen wax walba oo ay natiijada u diraan darawalka. Halbeeggaan waanu ka dhignay nafteena. Sida caadiga ah, waa 1GB, waxaanu ka dhignay 3.

spark.driver.maxResultSize=3072

Iyo ugu dambeyntii, sida macmacaan. Sida loo cusboonaysiiyo Spark nooca 2.1 ee qaybinta HortonWorks - HDP 2.5.3.0. Noocan HDP wuxuu ka kooban yahay nooca horay loo sii rakibay ee 2.0, laakiin waxaan mar go'aansanay nafteena in Spark ay si firfircoon u horumarinayso, nooc kasta oo cusubna wuxuu hagaajiyaa qaar ka mid ah dhiqlaha oo lagu daray astaamo dheeri ah, oo ay ku jiraan Python API, markaa waxaan go'aansanay, waxa loo baahan yahay in la sameeyo waa update.

Waxaa laga soo dejiyay nooca degelka rasmiga ah ee Hadoop 2.7. Ka fur oo ku rid galka HDP. Waxaan rakibnay calaamadaha sida loo baahdo. Waxaan bilownay - ma bilaabato. Wuxuu qoraa qalad aad u yaab badan.

java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

Googling ka dib, waxaan ogaanay in Spark uu go'aansaday inuusan sugin ilaa uu ka dhasho Hadoop, oo uu go'aansaday inuu isticmaalo nooca cusub ee maaliyada. Iyaga laftooda ayaa isku haysta mawduucan JIRA. Xalku wuxuu ahaa in la soo dejiyo nooca maaliyada 1.17.1. Geli tan gal-galka dhalooyinka ee SPARK_HOME, sib marlabaad oo u soo rar HDFS.

Waxaan ku soo wareegnay qaladkan, laakiin mid cusub oo la hagaajiyay ayaa kacay.

org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master

Isla mar ahaantaana, waxaan isku dayeynaa inaan ku shaqeyno nooca 2.0 - wax walba waa caadi. Isku day inaad qiyaasto waxa dhacaya. Waxaan eegnay diiwaanka codsigan waxaanan aragnay wax sidan oo kale ah:

/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar

Guud ahaan, sababaha qaar hdp.version ma xallin. Gogling ka dib, waxaan helnay xal. Waxaad u baahan tahay inaad tagto goobaha YARN-ka ee Ambari oo aad ku darto halbeeg halkaas ku yaal goobta suufka caadiga ah:

hdp.version=2.5.3.0-37

Sixirkani wuu caawiyay, Spark ayaana meesha ka baxday. Waxaan tijaabinay dhowr ka mid ah laptop-yadayada jupyter-ka ah. Wax walba way shaqaynayaan. Waxaan diyaar u nahay casharka ugu horreeya ee Spark Sabtida (berri)!

DUP. Intii casharku socday, dhibaato kale ayaa soo shaac baxday. Mar uun, YARN waxay joojisay bixinta weelasha Spark. Gudaha YARN waxay ahayd lagama maarmaan in la saxo cabbirka, kaas oo asal ahaan ahaa 0.2:

yarn.scheduler.capacity.maximum-am-resource-percent=0.8

Taasi waa, kaliya 20% khayraadka ayaa ka qaybqaatay qaybinta kheyraadka. Ka dib markii aan beddelnay cabbirrada, waxaan dib u rarnay YARN. Dhibaatadii waa la xalliyay inta kale ee ka qaybgalayaasha waxay sidoo kale awoodeen inay socodsiiyaan macnaha dhimbi.

Source: www.habr.com

Add a comment