Tito leto Spark lori YARAN

Habr, hello! Lana lori meetup igbẹhin si Apache Spark, lati ọdọ awọn eniyan lati Rambler&Co, ọpọlọpọ awọn ibeere wa lati ọdọ awọn olukopa ti o ni ibatan si tunto ọpa yii. A pinnu lati tẹle awọn ipasẹ rẹ ki a pin iriri wa. Koko naa ko rọrun - nitorinaa a pe ọ lati pin iriri rẹ ninu awọn asọye, boya a tun loye ati lo nkan ti ko tọ.

Ifihan diẹ si bi a ṣe lo Spark. A ni eto osu mẹta "Amọja data nla", ati jakejado module keji awọn olukopa wa ṣiṣẹ lori ohun elo yii. Nitorinaa, iṣẹ-ṣiṣe wa, gẹgẹbi awọn oluṣeto, ni lati ṣeto iṣupọ fun lilo laarin iru ọran kan.

Iyatọ ti lilo wa ni pe nọmba awọn eniyan nigbakanna ti n ṣiṣẹ lori Spark le jẹ dọgba si gbogbo ẹgbẹ. Fun apẹẹrẹ, ni apejọ kan, nigbati gbogbo eniyan ba gbiyanju nkan ni akoko kanna ti o tun ṣe lẹhin olukọ wa. Ati pe eyi kii ṣe pupọ - nigbakan to awọn eniyan 40. Boya kii ṣe ọpọlọpọ awọn ile-iṣẹ ni agbaye ti o dojukọ iru ọran lilo bẹ.

Nigbamii, Emi yoo sọ fun ọ bii ati idi ti a fi yan awọn aye atunto kan.

Jẹ ká bẹrẹ lati ibere pepe. Spark ni awọn aṣayan 3 lati ṣiṣẹ lori iṣupọ kan: imurasilẹ, lilo Mesos, ati lilo YARN. A pinnu lati yan aṣayan kẹta nitori pe o jẹ oye si wa. A ti ni iṣupọ hadoop tẹlẹ. Wa olukopa ti wa ni tẹlẹ daradara acquainted pẹlu awọn oniwe-faaji. E je ki a lo YARN.

spark.master=yarn

Siwaju diẹ awon. Ọkọọkan ninu awọn aṣayan imuṣiṣẹ mẹta wọnyi ni awọn aṣayan imuṣiṣẹ meji: alabara ati iṣupọ. Da iwe ati awọn ọna asopọ oriṣiriṣi lori Intanẹẹti, a le pinnu pe alabara dara fun iṣẹ ibaraenisepo - fun apẹẹrẹ, nipasẹ iwe ajako jupyter, ati iṣupọ dara julọ fun awọn solusan iṣelọpọ. Ninu ọran wa, a nifẹ si iṣẹ ibaraenisepo, nitorinaa:

spark.deploy-mode=client

Ni gbogbogbo, lati isisiyi lọ Spark yoo ṣiṣẹ bakan lori YARN, ṣugbọn eyi ko to fun wa. Niwọn igba ti a ni eto kan nipa data nla, nigbami awọn olukopa ko ni to ti ohun ti a gba laarin ilana ti gige awọn orisun paapaa. Ati lẹhinna a rii nkan ti o nifẹ - ipin awọn orisun agbara. Ni kukuru, aaye naa ni eyi: ti o ba ni iṣẹ-ṣiṣe ti o nira ati iṣupọ jẹ ọfẹ (fun apẹẹrẹ, ni owurọ), lẹhinna lilo aṣayan yii Spark le fun ọ ni afikun awọn ohun elo. Tianillati ṣe iṣiro nibẹ ni ibamu si agbekalẹ arekereke kan. A kii yoo lọ sinu awọn alaye - o ṣiṣẹ daradara.

spark.dynamicAllocation.enabled=true

A ṣeto paramita yii, ati nigbati o bẹrẹ Spark kọlu ko si bẹrẹ. Iyẹn tọ, nitori Mo ni lati ka iwe aṣẹ diẹ sii fara. O sọ pe ni ibere fun ohun gbogbo lati dara, o tun nilo lati mu paramita afikun ṣiṣẹ.

spark.shuffle.service.enabled=true

Kini idi ti o nilo? Nigbati iṣẹ wa ko ba nilo ọpọlọpọ awọn orisun mọ, Spark yẹ ki o da wọn pada si adagun-odo ti o wọpọ. Ipele ti n gba akoko pupọ julọ ni fere eyikeyi iṣẹ MapReduce jẹ ipele Daarapọmọra. Paramita yii n gba ọ laaye lati ṣafipamọ data ti o ti ipilẹṣẹ ni ipele yii ki o tu awọn alaṣẹ silẹ ni ibamu. Ati pe alaṣẹ jẹ ilana ti o ṣe iṣiro ohun gbogbo lori oṣiṣẹ. O ni nọmba kan ti awọn ohun kohun ero isise ati iye iranti kan.

A ti ṣafikun paramita yii. Ohun gbogbo dabi enipe o ṣiṣẹ. O di akiyesi pe awọn olukopa ni a fun ni awọn orisun diẹ sii nigba ti wọn nilo wọn. Ṣugbọn iṣoro miiran dide - ni aaye kan awọn olukopa miiran ji ati tun fẹ lati lo Spark, ṣugbọn ohun gbogbo n ṣiṣẹ nibẹ, wọn ko ni idunnu. Wọn le ni oye. A bẹrẹ si wo awọn iwe. O wa ni jade wipe o wa ni o wa nọmba kan ti miiran sile ti o le ṣee lo lati ni agba awọn ilana. Fun apẹẹrẹ, ti oluṣakoso ba wa ni ipo imurasilẹ, lẹhin akoko wo ni a le gba awọn orisun lati ọdọ rẹ?

spark.dynamicAllocation.executorIdleTimeout=120s

Ninu ọran wa, ti awọn alaṣẹ rẹ ko ba ṣe nkankan fun iṣẹju meji, lẹhinna jọwọ da wọn pada si adagun ti o wọpọ. Ṣugbọn paramita yii ko to nigbagbogbo. O han gbangba pe eniyan naa ko ti ṣe ohunkohun fun igba pipẹ, ati pe awọn ohun elo ko ni ominira. O wa jade pe paramita pataki tun wa - lẹhin akoko wo ni lati yan awọn alaṣẹ ti o ni data ti o ni ipamọ. Nipa aiyipada, paramita yii jẹ ailopin! A ṣe atunṣe.

spark.dynamicAllocation.cachedExecutorIdleTimeout=600s

Iyẹn ni, ti awọn alaṣẹ rẹ ko ba ṣe nkankan fun awọn iṣẹju 5, fun wọn ni adagun ti o wọpọ. Ni ipo yii, iyara ti idasilẹ ati ipinfunni awọn orisun fun nọmba nla ti awọn olumulo ti di bojumu. Iwọn aibanujẹ ti dinku. Ṣugbọn a pinnu lati lọ siwaju ati fi opin si nọmba ti o pọju ti awọn alaṣẹ fun ohun elo - pataki fun alabaṣe eto.

spark.dynamicAllocation.maxExecutors=19

Ni bayi, dajudaju, awọn eniyan ti ko ni itẹlọrun wa ni apa keji - “iṣupọ naa ko ṣiṣẹ, ati pe Mo ni awọn alaṣẹ 19 nikan,” ṣugbọn kini o le ṣe? A nilo iru iwọntunwọnsi to pe. O ko le ṣe gbogbo eniyan dun.

Ati itan kekere kan diẹ sii ti o ni ibatan si awọn pato ti ọran wa. Ni ọna kan, ọpọlọpọ eniyan ti pẹ fun ẹkọ ti o wulo, ati fun idi kan Spark ko bẹrẹ fun wọn. A wo iye awọn orisun ọfẹ - o dabi pe o wa nibẹ. Sipaki yẹ ki o bẹrẹ. O da, ni akoko yẹn iwe naa ti ti ṣafikun tẹlẹ si subcortex ni ibikan, ati pe a ranti pe nigba ifilọlẹ, Spark n wa ibudo lori eyiti yoo bẹrẹ. Ti o ba ti akọkọ ibudo ni ibiti o ti wa ni o nšišẹ, o gbe si awọn tókàn ọkan ni ibere. Ti o ba jẹ ọfẹ, o gba. Ati pe paramita kan wa ti o tọka nọmba ti o pọju awọn igbiyanju fun eyi. Aiyipada jẹ 16. Nọmba naa kere ju nọmba awọn eniyan ninu ẹgbẹ wa ni kilasi. Nitorinaa, lẹhin awọn igbiyanju 16, Spark fi silẹ o sọ pe Emi ko le bẹrẹ. A ti ṣe atunṣe eto yii.

spark.port.maxRetries=50

Nigbamii Emi yoo sọ fun ọ nipa diẹ ninu awọn eto ti ko ni ibatan pupọ si awọn pato ti ọran wa.

Lati bẹrẹ sipaki ni iyara, o gba ọ niyanju lati ṣajọ awọn folda pọn ti o wa ninu itọsọna ile SPARK_HOME ki o fi si HDFS. Lẹhinna kii yoo padanu akoko lati ṣajọpọ awọn jarniks wọnyi nipasẹ awọn oṣiṣẹ.

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

O tun ṣe iṣeduro lati lo kryo bi serializer fun ṣiṣe yiyara. O ti wa ni iṣapeye diẹ sii ju aiyipada lọ.

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

Ati pe iṣoro igba pipẹ tun wa pẹlu Spark ti o ma n ṣubu nigbagbogbo lati iranti. Nigbagbogbo eyi n ṣẹlẹ ni akoko ti awọn oṣiṣẹ ti ṣe iṣiro ohun gbogbo ati firanṣẹ esi si awakọ naa. A ṣe paramita yii tobi fun ara wa. Nipa aiyipada, o jẹ 1GB, a ṣe 3.

spark.driver.maxResultSize=3072

Ati nikẹhin, bi desaati. Bii o ṣe le ṣe imudojuiwọn Spark si ẹya 2.1 lori pinpin HortonWorks - HDP 2.5.3.0. Ẹya HDP yii ni ẹya ti a ti fi sii tẹlẹ 2.0, ṣugbọn a pinnu lẹẹkan fun ara wa pe Spark n dagbasoke ni itara, ati pe ẹya tuntun kọọkan ṣe atunṣe diẹ ninu awọn idun pẹlu pese awọn ẹya afikun, pẹlu fun Python API, nitorinaa a pinnu, kini o nilo lati ṣee ṣe ni imudojuiwọn.

Ṣe igbasilẹ ẹya lati oju opo wẹẹbu osise fun Hadoop 2.7. Ṣii silẹ ki o si fi sii ninu folda HDP. A fi sori ẹrọ awọn ọna asopọ bi o ṣe nilo. A ṣe ifilọlẹ - ko bẹrẹ. O kọ aṣiṣe ajeji pupọ.

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

Lẹhin ti googling, a ri wipe Spark pinnu ko lati duro titi Hadoop a bi, ati ki o pinnu a lilo titun ti ikede Jersey. Awon tikarawon lo n ba ara won jiyan nipa koko yi ni JIRA. Ojutu naa ni lati ṣe igbasilẹ Jersey version 1.17.1. Gbe eyi sinu folda idẹ ni SPARK_HOME, fi sii lẹẹkansi ki o gbe si HDFS.

A ni ayika aṣiṣe yii, ṣugbọn tuntun kan ati kuku ṣiṣan kan dide.

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

Ni akoko kanna, a gbiyanju lati ṣiṣẹ ẹya 2.0 - ohun gbogbo dara. Gbiyanju lati gboju le won ohun ti n ṣẹlẹ. A wo awọn akọọlẹ ohun elo yii a si rii nkan bii eyi:

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

Ni gbogbogbo, fun idi kan hdp.version ko yanju. Lẹhin ti googling, a wa ojutu kan. O nilo lati lọ si awọn eto YARN ni Ambari ki o fi paramita kan kun nibẹ si aaye-aṣa aṣa:

hdp.version=2.5.3.0-37

Idan yii ṣe iranlọwọ, Spark si mu kuro. A ṣe idanwo ọpọlọpọ awọn kọǹpútà alágbèéká jupyter wa. Ohun gbogbo n ṣiṣẹ. A ti ṣetan fun ẹkọ Spark akọkọ ni Ọjọ Satidee (ọla)!

DUP. Lakoko ẹkọ naa, iṣoro miiran wa si imọlẹ. Ni aaye kan, YARN duro lati pese awọn apoti fun Spark. Ni YARN o jẹ dandan lati ṣe atunṣe paramita, eyiti nipasẹ aiyipada jẹ 0.2:

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

Iyẹn ni, nikan 20% awọn ohun elo kopa ninu pinpin awọn orisun. Lẹhin iyipada awọn paramita, a tun gbe YARN pada. Iṣoro naa ti yanju ati pe iyoku awọn olukopa tun ni anfani lati ṣiṣẹ ipo ina.

orisun: www.habr.com

Fi ọrọìwòye kun