Fametrahana Spark amin'ny YARN

Habr, salama! Omaly tamin'ny fihaonana natokana ho an'i Apache Spark, avy amin'ireo lehilahy avy ao amin'ny Rambler&Co, be dia be ny fanontaniana avy amin'ireo mpandray anjara mifandraika amin'ny fanamboarana ity fitaovana ity. Nanapa-kevitra ny hanaraka ny diany izahay ary hizara ny traikefanay. Tsy mora ny lohahevitra - koa manasa anao izahay hizara ny traikefanao amin'ny fanehoan-kevitra, mety ho azonay sy ampiasainay koa ny tsy mety.

Fampidirana kely amin'ny fomba ampiasantsika Spark. Manana programa telo volana izahay "Specialiste Big Data", ary mandritra ny module faharoa dia miasa amin'ity fitaovana ity ny mpandray anjara. Araka izany, ny andraikitsika, amin'ny maha-mpikarakara, dia ny manomana ny cluster hampiasaina amin'ny tranga toy izany.

Ny mampiavaka ny fampiasanay dia ny isan'ny olona miasa miaraka amin'ny Spark dia mety hitovy amin'ny vondrona manontolo. Ohatra, amin'ny seminera iray, rehefa manandrana zavatra iray ny tsirairay ary mamerina manaraka ny mpampianatra antsika. Ary tsy dia betsaka izany - indraindray hatramin'ny olona 40. Tsy dia betsaka loatra ny orinasa eto amin'izao tontolo izao izay miatrika tranga fampiasana toy izany.

Manaraka izany dia holazaiko aminao ny fomba sy ny antony nisafidiananay ireo paramètres config sasany.

Andeha isika hanomboka hatrany am-piandohana. Spark dia manana safidy 3 hihazakazaka amin'ny cluster: mitokana, mampiasa Mesos ary mampiasa YARN. Nanapa-kevitra ny hisafidy ny safidy fahatelo izahay satria nisy dikany taminay izany. Efa manana cluster hadoop izahay. Efa mahafantatra tsara ny maritranony ny mpandray anjara eto amintsika. Andao hampiasa TENA.

spark.master=yarn

Mbola mahaliana kokoa. Ny tsirairay amin'ireo safidy fametrahana 3 ireo dia manana safidy fametrahana 2: mpanjifa sy cluster. mifototra tahirin-kevitra ary rohy isan-karazany ao amin'ny Internet, dia afaka manatsoaka hevitra fa ny mpanjifa dia mety amin'ny interactive asa - ohatra, amin'ny alalan'ny jupyter kahie, ary ny cluster dia mety kokoa amin'ny famokarana vahaolana. Raha ny momba anay dia liana tamin'ny asa ifanakalozan-kevitra izahay, noho izany:

spark.deploy-mode=client

Amin'ny ankapobeny, manomboka izao ny Spark dia hiasa amin'ny YARN, saingy tsy ampy ho anay izany. Koa satria manana programa momba ny angon-drakitra lehibe izahay, indraindray dia tsy ampy ny mpandray anjara tamin'ny zavatra azo tao anatin'ny rafitry ny fanaparitahana loharanon-karena. Ary avy eo dia nahita zavatra mahaliana izahay - fizarana loharano mavitrika. Raha fintinina, ny teboka dia izao: raha manana asa sarotra ianao ary maimaim-poana ny cluster (ohatra, amin'ny maraina), dia afaka manome loharano fanampiny ho anao ny fampiasana an'io safidy Spark io. Ny filana dia kajy ao araka ny fomba fetsy. Tsy hiditra amin'ny antsipiriany izahay - miasa tsara izany.

spark.dynamicAllocation.enabled=true

Nametraka ity parameter ity izahay, ary rehefa nanomboka ny Spark dia nianjera ary tsy nanomboka. Marina izany, satria tsy maintsy namaky azy io aho tahirin-kevitra amim-pitandremana kokoa. Lazainy fa raha te hilamina ny zava-drehetra dia mila manome paramètre fanampiny ianao.

spark.shuffle.service.enabled=true

Nahoana no ilaina izany? Rehefa tsy mitaky loharanon-karena maro intsony ny asantsika, dia tokony haverin'i Spark any amin'ny dobo iombonana izy ireo. Ny dingana mandany fotoana indrindra amin'ny asa rehetra MapReduce dia ny dingana Shuffle. Ity parameter ity dia ahafahanao mitahiry ny angon-drakitra izay novokarina amin'ity dingana ity ary mamoaka ireo mpanatanteraka mifanaraka amin'izany. Ary ny mpanatanteraka dia ny dingana izay manisa ny zava-drehetra amin'ny mpiasa. Izy io dia manana cores processeur maromaro sy fitadidiana sasany.

Nampiana ity parameter ity. Toa nandeha ny zava-drehetra. Nanjary tsikaritra fa nomena loharanom-bola bebe kokoa ireo mpandray anjara rehefa nila izany. Saingy nisy olana iray hafa - tamin'ny fotoana iray dia nifoha ny mpandray anjara hafa ary te hampiasa Spark ihany koa, saingy sahirana ny zava-drehetra tao, ary tsy faly izy ireo. Azo takarina izy ireo. Nanomboka nijery ny antontan-taratasy izahay. Hita fa misy masontsivana maromaro hafa azo ampiasaina amin'ny fitaomana ny dingana. Ohatra, raha ao anatin'ny mode standby ny mpanatanteraka, aorian'ny fotoana inona no azo alaina amin'izany?

spark.dynamicAllocation.executorIdleTimeout=120s

Aminay, raha tsy manao na inona na inona mandritra ny roa minitra ny mpanatanteraka anao, dia avereno any amin'ny dobo iombonana. Tsy ampy foana anefa io paramètre io. Niharihary fa efa ela no tsy nanao na inona na inona ilay olona, ​​ary tsy nisy fanafahana. Hita fa misy ihany koa ny mari-pamantarana manokana - aorian'ny fotoana hifidianana mpanatanteraka izay misy angon-drakitra voatahiry. Amin'ny alàlan'ny default, ity paramèter ity dia tsy manam-petra! Nahitsy izahay.

spark.dynamicAllocation.cachedExecutorIdleTimeout=600s

Izany hoe raha tsy manao na inona na inona mandritra ny 5 minitra ny mpanatanteraka anao dia omeo ny dobo iombonana. Amin'ity fomba ity dia lasa mendrika ny hafainganam-pandehan'ny famoahana sy famoahana loharano ho an'ny mpampiasa marobe. Nihena ny habetsahan'ny tsy fahafaliana. Saingy nanapa-kevitra ny handeha lavidavitra kokoa izahay ary hametra ny isan'ny mpanatanteraka isaky ny fampiharana - indrindra ho an'ny mpandray anjara amin'ny programa.

spark.dynamicAllocation.maxExecutors=19

Ankehitriny, mazava ho azy, misy olona tsy afa-po amin'ny lafiny iray - "tsy miasa ny cluster, ary 19 ihany no mpanatanteraka", fa inona no azonao atao? Mila fifandanjana marina isika. Tsy afaka mampifaly ny olona rehetra ianao.

Ary tantara kely iray hafa mifandraika amin'ny antsipiriany momba ny raharahanay. Na ahoana na ahoana, olona maromaro no tara tamin'ny lesona azo ampiharina, ary noho ny antony tsy nanombohan'i Spark azy ireo. Nijery ny habetsahan'ny loharano maimaim-poana izahay - toa misy izany. Tokony hanomboka ny spark. Soa ihany fa tamin'io fotoana io dia efa nampidirina tao amin'ny subcortex ny antontan-taratasy any ho any, ary tsaroanay fa rehefa natomboka, Spark dia mitady seranana hanombohana. Raha sahirana ny seranana voalohany ao amin'ny faritra, dia mifindra any amin'ny iray manaraka araka ny filaharany. Raha maimaim-poana izy dia misambotra. Ary misy paramètre izay manondro ny isan'ny andrana farany indrindra amin'izany. Ny default dia 16. Ny isa dia latsaky ny isan'ny olona ao amin'ny vondrona misy antsika ao an-dakilasy. Noho izany, taorian'ny fanandramana 16, nilavo lefona i Spark ary nilaza fa tsy afaka manomboka aho. Nahitsy io paramètre io izahay.

spark.port.maxRetries=50

Manaraka izany dia holazaiko aminao ny toe-javatra sasany izay tsy dia mifandray loatra amin'ny antsipiriany momba ny raharahantsika.

Mba hanombohana Spark haingana kokoa, dia asaina mitahiry ny lahatahiry jars hita ao amin'ny lahatahiry an-trano SPARK_HOME ary apetraho amin'ny HDFS. Avy eo izy dia tsy handany fotoana amin'ny fametrahana ireo jarnik ireo ataon'ny mpiasa.

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

Ampirisihina koa ny hampiasa kryo ho serializer ho an'ny asa haingana kokoa. Tsara kokoa noho ny default izy io.

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

Ary misy ihany koa ny olana efa hatry ny ela amin'ny Spark izay matetika mianjera amin'ny fahatsiarovana. Matetika no mitranga izany amin'ny fotoana kajy ny zava-drehetra ny mpiasa ary mandefa ny valiny amin'ny mpamily. Natao lehibe kokoa ho an'ny tenantsika io paramètre io. Amin'ny alàlan'ny default dia 1GB izany, nataontsika 3.

spark.driver.maxResultSize=3072

Ary farany, ho tsindrin-tsakafo. Ahoana ny fanavaozana ny Spark amin'ny version 2.1 amin'ny fizarana HortonWorks - HDP 2.5.3.0. Ity dikan-tenin'ny HDP ity dia misy dikan-teny 2.0 efa napetraka, saingy nanapa-kevitra ho an'ny tenanay izahay indray mandeha fa mivoatra mavitrika ny Spark, ary ny dikan-teny vaovao tsirairay dia manamboatra ny bug sasany ary manome endri-javatra fanampiny, anisan'izany ny API python, ka nanapa-kevitra izahay hoe inona no tokony hatao. atao dia fanavaozana.

Nalaina tao amin'ny tranokala ofisialin'ny Hadoop 2.7. Sokafy izany ary apetraho ao anaty lahatahiry HDP. Nametraka ny symlinks izahay raha ilaina. Manomboka izany izahay - tsy manomboka izany. Manoratra fahadisoana tena tsy mazava.

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

Taorian'ny googling dia fantatray fa nanapa-kevitra ny tsy hiandry mandra-pahaterahan'i Hadoop i Spark, ary nanapa-kevitra ny hampiasa ny kinova vaovao amin'ny akanjo. Izy ireo mihitsy no miady hevitra momba ity lohahevitra ao amin’ny JIRA ity. Ny vahaolana dia ny misintona Jersey version 1.17.1. Apetraho ao amin'ny lahatahiry siny ao amin'ny SPARK_HOME ity, avereno apetraka ary ampidiro ao amin'ny HDFS.

Nandalo ity hadisoana ity izahay, saingy nipoitra ny iray vaovao sy mirindra kokoa.

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

Amin'izay fotoana izay ihany, miezaka ny mampandeha ny version 2.0 izahay - tsara daholo ny zava-drehetra. Andramo maminavina ny zava-mitranga. Nijery ny diarin'ity fampiharana ity izahay ary nahita zavatra toy izao:

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

Amin'ny ankapobeny, noho ny antony tsy namaha ny hdp.version. Taorian'ny fikarohana dia nahita vahaolana izahay. Mila mandeha any amin'ny toe-javatra YARN ao Ambari ianao ary ampio paramètre any amin'ny tranokalan'ny yarn manokana:

hdp.version=2.5.3.0-37

Nanampy ity ody ity, ary niainga i Spark. Nanandrana ny solosaina finday jupyter maromaro izahay. Mandeha ny zava-drehetra. Vonona isika amin'ny lesona Spark voalohany amin'ny asabotsy (rahampitso)!

DUP. Nandritra ny lesona dia nisy olana hafa nipoitra. Tamin'ny fotoana iray dia nijanona tsy nanome fitoerana ho an'ny Spark i YARN. Ao amin'ny YARN dia ilaina ny manitsy ny parameter, izay amin'ny alàlan'ny default dia 0.2:

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

Izany hoe 20%-n’ny harena ihany no nandray anjara tamin’ny fitsinjarana ny harena. Rehefa avy nanova ny masontsivana dia namerina namerina ny YARN izahay. Voavaha ny olana ary afaka nihazakazaka ihany koa ireo mpandray anjara sisa.

Source: www.habr.com

Add a comment