{"id":30548,"date":"2019-10-31T21:36:08","date_gmt":"2019-10-31T18:36:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/konfigurirovanie-spark-na-yarn\/"},"modified":"2019-10-31T21:36:08","modified_gmt":"2019-10-31T18:36:08","slug":"konfigurirovanie-spark-na-yarn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/konfigurirovanie-spark-na-yarn","title":{"rendered":"Konfigurace Spark na YARN","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr! V\u010dera na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/events\/1825957590998380\/\">meetupu v\u011bnovan\u00e9m Apache Spark<\/a><\/noindex>, od kluk\u016f z Rambler&#038;Co, bylo pom\u011brn\u011b hodn\u011b dotaz\u016f od \u00fa\u010dastn\u00edk\u016f t\u00fdkaj\u00edc\u00edch se konfigurace tohoto n\u00e1stroje. Rozhodli jsme se sd\u00edlet na\u0161e zku\u0161enosti. T\u00e9ma nen\u00ed jednoduch\u00e9 \u2014 proto navrhujeme, abyste tak\u00e9 sd\u00edleli sv\u00e9 zku\u0161enosti v koment\u00e1\u0159\u00edch, mo\u017en\u00e1, \u017ee i my n\u011bco \u0161patn\u011b ch\u00e1peme a pou\u017e\u00edv\u00e1me.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMal\u00e9 \u00favodn\u00ed slovo \u2014 jak pou\u017e\u00edv\u00e1me Spark. M\u00e1me t\u0159\u00ed m\u011bs\u00ed\u010dn\u00ed program <noindex><a rel=\"nofollow\" href=\"http:\/\/newprolab.com\/ru\/bigdata?utm_source=habr&amp;utm_campaign=spark\">\u201eSpecialista na velk\u00e1 data\u201c<\/a><\/noindex>, a v druh\u00e9m modulu na\u0161i \u00fa\u010dastn\u00edci pracuj\u00ed s t\u00edmto n\u00e1strojem. Na\u0161\u00edm \u00fakolem jako organiz\u00e1tor\u016f je p\u0159ipravit cluster pro pou\u017eit\u00ed v r\u00e1mci tohoto p\u0159\u00edpadu.<\/p>\n<p>Specifikum na\u0161eho vyu\u017eit\u00ed spo\u010d\u00edv\u00e1 v tom, \u017ee po\u010det lid\u00ed, kte\u0159\u00ed pracuj\u00ed na Sparku sou\u010dasn\u011b, m\u016f\u017ee odpov\u00eddat cel\u00e9 skupin\u011b. Nap\u0159\u00edklad na semin\u00e1\u0159i, kdy v\u0161ichni sou\u010dasn\u011b n\u011bco zkou\u0161\u00ed a opakuj\u00ed za na\u0161\u00edm lektorem. A to nen\u00ed m\u00e1lo \u2014 n\u011bkdy a\u017e 40 lid\u00ed. Pravd\u011bpodobn\u011b nen\u00ed mnoho firem na sv\u011bt\u011b, kter\u00e9 \u010del\u00ed takov\u00e9mu sc\u00e9n\u00e1\u0159i vyu\u017eit\u00ed.<\/p>\n<p>D\u00e1le v\u00e1m pov\u00edm, jak a pro\u010d jsme vyb\u00edrali ur\u010dit\u00e9 parametry konfigurace.<\/p>\n<p>Za\u010dn\u011bme od za\u010d\u00e1tku. Spark m\u00e1 3 mo\u017enosti pr\u00e1ce na clusterech: standalone, s vyu\u017eit\u00edm Mesos a s vyu\u017eit\u00edm YARN. Rozhodli jsme se zvolit t\u0159et\u00ed variantu, proto\u017ee n\u00e1m p\u0159i\u0161la logick\u00e1. Ji\u017e m\u00e1me hadoop cluster. Na\u0161i \u00fa\u010dastn\u00edci jsou dob\u0159e obezn\u00e1meni s jeho architekturou. Poj\u010fme pou\u017e\u00edvat YARN.<\/p>\n<pre><code class=\"apache\">spark.master=yarn<\/code><\/pre>\n<p>\nA te\u010f to za\u010d\u00edn\u00e1 b\u00fdt zaj\u00edmav\u011bj\u0161\u00ed. Ka\u017ed\u00e1 z t\u011bchto 3 variant nasazen\u00ed m\u00e1 2 mo\u017enosti nasazen\u00ed: client a cluster. Na z\u00e1klad\u011b <noindex><a rel=\"nofollow\" href=\"http:\/\/spark.apache.org\/docs\/latest\/running-on-yarn.html\">dokumentaci<\/a><\/noindex> a r\u016fzn\u00fdch odkaz\u016f na internetu lze \u0159\u00edci, \u017ee client je vhodn\u00fd pro interaktivn\u00ed pr\u00e1ci \u2014 nap\u0159\u00edklad p\u0159es jupyter notebook, zat\u00edmco cluster je v\u00edce vhodn\u00fd pro produk\u010dn\u00ed \u0159e\u0161en\u00ed. V na\u0161em p\u0159\u00edpad\u011b n\u00e1s zaj\u00edmala interaktivn\u00ed pr\u00e1ce, proto:<\/p>\n<pre><code class=\"apache\">spark.deploy-mode=client<\/code><\/pre>\n<p>\nOd tohoto okam\u017eiku bude Spark n\u011bjak fungovat na YARN, ale to n\u00e1m nesta\u010dilo. Proto\u017ee m\u00e1me program o velk\u00fdch datech, n\u011bkdy \u00fa\u010dastn\u00edk\u016fm chyb\u011blo to, co dost\u00e1vali z rovnom\u011brn\u00e9ho rozd\u011blen\u00ed zdroj\u016f. A zde jsme na\u0161li zaj\u00edmavou v\u011bc \u2014 dynamickou alokaci zdroj\u016f. Jin\u00fdmi slovy, pokud m\u00e1te n\u00e1ro\u010dn\u00fd \u00fakol a cluster je voln\u00fd (nap\u0159\u00edklad r\u00e1no), pak pomoc\u00ed t\u00e9to mo\u017enosti v\u00e1m Spark m\u016f\u017ee poskytnout dodate\u010dn\u00e9 zdroje. Pot\u0159eba se vypo\u010d\u00edt\u00e1v\u00e1 podle chytr\u00e9 formule. Nejde do podrobnost\u00ed \u2014 funguje to dob\u0159e.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.enabled=true<\/code><\/pre>\n<p>\nNastavili jsme tento parametr a p\u0159i spu\u0161t\u011bn\u00ed Spark zahl\u00e1sil chybu a nespustil se. To bylo spr\u00e1vn\u011b, proto\u017ee jsme m\u011bli \u010d\u00edst <noindex><a rel=\"nofollow\" href=\"http:\/\/spark.apache.org\/docs\/latest\/configuration.html\">dokumentaci<\/a><\/noindex> pozorn\u011bji. Je tam uvedeno, \u017ee pro to, aby v\u0161e bylo v po\u0159\u00e1dku, je pot\u0159eba tak\u00e9 aktivovat dal\u0161\u00ed parametr.<\/p>\n<pre><code class=\"apache\">spark.shuffle.service.enabled=true<\/code><\/pre>\n<p>\nK \u010demu je to pot\u0159eba? Kdy\u017e n\u00e1\u0161 job u\u017e nepot\u0159ebuje tolik zdroj\u016f, Spark by m\u011bl vr\u00e1tit tyto zdroje do spole\u010dn\u00e9ho poolu. Nejdra\u017e\u0161\u00ed f\u00e1ze t\u00e9m\u011b\u0159 v jak\u00e9mkoliv \u00fakolu MapReduce je f\u00e1ze Shuffle. Tento parametr umo\u017e\u0148uje uchov\u00e1vat data, kter\u00e1 vznikaj\u00ed v t\u00e9to f\u00e1zi, a t\u00edm uvol\u0148ovat executory. A executor je proces, kter\u00fd na workeru v\u0161echno po\u010d\u00edt\u00e1. M\u00e1 ur\u010dit\u00e9 mno\u017estv\u00ed procesorov\u00fdch jader a ur\u010dit\u00e9 mno\u017estv\u00ed pam\u011bti.<\/p>\n<p>P\u0159idali jsme tento parametr. V\u0161echno se zd\u00e1lo fungovat. Bylo znateln\u00e9, \u017ee \u00fa\u010dastn\u00edk\u016fm se skute\u010dn\u011b za\u010dalo poskytovat v\u00edce zdroj\u016f, kdy\u017e je pot\u0159ebovali. Ale objevila se jin\u00e1 probl\u00e9m \u2014 v ur\u010dit\u00e9m okam\u017eiku se jin\u00ed \u00fa\u010dastn\u00edci probudili a tak\u00e9 cht\u011bli pou\u017e\u00edvat Spark, ale v\u0161echno bylo obsazen\u00e9, a byli nespokojeni. M\u016f\u017eeme je pochopit. Za\u010dali jsme se d\u00edvat do dokumentace. Uk\u00e1zalo se, \u017ee existuje je\u0161t\u011b ur\u010dit\u00e9 mno\u017estv\u00ed parametr\u016f, kter\u00fdmi lze ovlivnit proces. Nap\u0159\u00edklad, pokud je executor v re\u017eimu \u010dek\u00e1n\u00ed \u2014 jak dlouho lze \u010dekat, ne\u017e si vezmete zdroje zp\u011bt?<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.executorIdleTimeout=120s<\/code><\/pre>\n<p>\nV na\u0161em p\u0159\u00edpad\u011b \u2014 pokud va\u0161e executors nic ned\u011blaj\u00ed po dobu dvou minut, vra\u0165te je, pros\u00edm, zp\u011bt do spole\u010dn\u00e9ho poolu. Ale ani tento parametr \u010dasto nesta\u010dil. Bylo vid\u011bt, \u017ee \u010dlov\u011bk u\u017e dlouho nic ned\u011bl\u00e1, a zdroje se neuvol\u0148uj\u00ed. Uk\u00e1zalo se, \u017ee existuje je\u0161t\u011b speci\u00e1ln\u00ed parametr \u2014 po uplynut\u00ed ur\u010dit\u00e9 doby vyb\u00edrat executors, kter\u00e9 obsahuj\u00ed vyrovn\u00e1vac\u00ed data. Ve v\u00fdchoz\u00edm nastaven\u00ed byl tento parametr nastaven na \u2014 nekone\u010dno! Opraveno.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.cachedExecutorIdleTimeout=600s<\/code><\/pre>\n<p>\nTo znamen\u00e1, \u017ee pokud va\u0161e executors nic ned\u011blaj\u00ed po dobu 5 minut, vra\u0165te je do spole\u010dn\u00e9ho poolu. V tomto re\u017eimu se rychlost uvol\u0148ov\u00e1n\u00ed a poskytov\u00e1n\u00ed zdroj\u016f pro velk\u00e9 mno\u017estv\u00ed u\u017eivatel\u016f stala p\u0159ijatelnou. Po\u010det nespokojen\u00fdch se sn\u00ed\u017eil. Ale rozhodli jsme se j\u00edt d\u00e1l a omezit maxim\u00e1ln\u00ed po\u010det executors pro jednu aplikaci \u2014 v podstat\u011b pro jednoho \u00fa\u010dastn\u00edka programu.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.maxExecutors=19<\/code><\/pre>\n<p>\nTe\u010f se samoz\u0159ejm\u011b objevili nespokojen\u00ed z druh\u00e9 strany \u2014 \u201eklastr stoj\u00ed, a j\u00e1 m\u00e1m jen 19 executors\u201d, ale co d\u011blat \u2014 je pot\u0159eba n\u011bjak\u00fd spr\u00e1vn\u00fd balanc. Nen\u00ed mo\u017en\u00e9, aby byli v\u0161ichni \u0161\u0165astn\u00ed.<\/p>\n<p>A je\u0161t\u011b jeden mal\u00fd p\u0159\u00edb\u011bh, kter\u00fd souvis\u00ed se specifikou na\u0161eho p\u0159\u00edpadu. Na jedno praktick\u00e9 cvi\u010den\u00ed p\u0159i\u0161lo n\u011bkolik lid\u00ed pozd\u011b, a jejich Spark z n\u011bjak\u00e9ho d\u016fvodu nenab\u011bhl. Pod\u00edvali jsme se na po\u010det voln\u00fdch zdroj\u016f \u2014 vypadalo to, \u017ee je jich dost. Spark by m\u011bl nab\u011bhnout. Na\u0161t\u011bst\u00ed, \u017ee v t\u00e9 dob\u011b se n\u00e1m u\u017e dokumentace zapsala do pam\u011bti, a vzpomn\u011bli jsme si, \u017ee p\u0159i spu\u0161t\u011bn\u00ed Spark hled\u00e1 port, na kter\u00e9m by m\u011bl nab\u011bhnout. Pokud je prvn\u00ed port z rozsahu obsazen\u00fd, p\u0159ech\u00e1z\u00ed na dal\u0161\u00ed v po\u0159ad\u00ed. Pokud je voln\u00fd, tak ho uko\u0159ist\u00ed. A existuje parametr, kter\u00fd uv\u00e1d\u00ed maxim\u00e1ln\u00ed po\u010det pokus\u016f pro toto. Ve v\u00fdchoz\u00edm nastaven\u00ed \u2014 je to 16. \u010c\u00edslo men\u0161\u00ed ne\u017e po\u010det lid\u00ed ve na\u0161\u00ed skupin\u011b na cvi\u010den\u00ed. Podle toho, po 16 pokusech Spark to vzdal a \u0159\u00edkal, \u017ee nemohu nab\u011bhnout. Tento parametr jsme opravili.<\/p>\n<pre><code class=\"apache\">spark.port.maxRetries=50<\/code><\/pre>\n<p>\nD\u00e1le pov\u00edm o n\u011bkter\u00fdch nastaven\u00edch, kter\u00e9 ji\u017e nejsou p\u0159\u00edli\u0161 spojeny se specifikou na\u0161eho p\u0159\u00edpadu.<\/p>\n<p>Pro rychlej\u0161\u00ed spu\u0161t\u011bn\u00ed Sparku je doporu\u010deno zarchivovat slo\u017eku jars, kter\u00e1 se nach\u00e1z\u00ed v dom\u00e1c\u00edm adres\u00e1\u0159i SPARK_HOME, a um\u00edstit ji na HDFS. Pak nebude tr\u00e1vit \u010das na\u010d\u00edt\u00e1n\u00edm t\u011bchto jar soubor\u016f po workerech.<\/p>\n<pre><code class=\"apache\">spark.yarn.archive=hdfs:\/\/\/tmp\/spark-archive.zip<\/code><\/pre>\n<p>\nTak\u00e9 pro rychlej\u0161\u00ed provoz se doporu\u010duje jako serializ\u00e1tor pou\u017e\u00edvat kryo. Je l\u00e9pe optimalizovan\u00fd ne\u017e ten, kter\u00fd je nastaven jako v\u00fdchoz\u00ed.<\/p>\n<pre><code class=\"apache\">spark.serializer=org.apache.spark.serializer.KryoSerializer<\/code><\/pre>\n<p>\nA je zde tak\u00e9 dlouhodob\u00fd probl\u00e9m Spark, \u017ee \u010dasto pad\u00e1 z d\u016fvodu nedostatku pam\u011bti. To se \u010dasto st\u00e1v\u00e1 pr\u00e1v\u011b ve chv\u00edli, kdy pracovn\u00edci v\u0161echno vypo\u010d\u00edtali a pos\u00edlaj\u00ed v\u00fdsledek na \u0159idi\u010de. Tento parametr jsme si nastavili v\u011bt\u0161\u00ed. Ve v\u00fdchoz\u00edm nastaven\u00ed je 1 GB, my jsme to dali na 3.<\/p>\n<pre><code class=\"apache\">spark.driver.maxResultSize=3072<\/code><\/pre>\n<p>\nA nakonec, jako dezert. Jak aktualizovat Spark na verzi 2.1 na distribuci HortonWorks \u2013 HDP 2.5.3.0. Tato verze HDP obsahuje p\u0159edinstalovanou verzi 2.0, ale jednou jsme se rozhodli, \u017ee Spark se vyv\u00edj\u00ed docela aktivn\u011b a ka\u017ed\u00e1 nov\u00e1 verze opravuje r\u016fzn\u00e9 chyby a tak\u00e9 p\u0159in\u00e1\u0161\u00ed nov\u00e9 mo\u017enosti, v\u010detn\u011b pro python API, tak\u017ee jsme se rozhodli prov\u00e9st aktualizaci.<\/p>\n<p>St\u00e1hli jsme verzi z ofici\u00e1ln\u00edch str\u00e1nek pro Hadoop 2.7. Rozbalili jsme ji, um\u00edstili do slo\u017eky s HDP. Upravili jsme symlink podle pot\u0159eby. Spustili jsme to \u2014 nenastartovalo to. P\u00ed\u0161e to velmi nejasnou chybu.<\/p>\n<pre><code class=\"apache\">java.lang.NoClassDefFoundError: com\/sun\/jersey\/api\/client\/config\/ClientConfig<\/code><\/pre>\n<p>\nPo vyhled\u00e1n\u00ed na Googlu jsme zjistili, \u017ee Spark se rozhodl ne\u010dekat, a\u017e Hadoop vyd\u00e1 novou verzi a rozhodli se pou\u017e\u00edt novou verzi jersey. V JIRA se o tom navz\u00e1jem h\u00e1daj\u00ed. <noindex><a rel=\"nofollow\" href=\"https:\/\/mvnrepository.com\/artifact\/com.sun.jersey\/jersey-bundle\/1.17.1\">jersey verze 1.17.1<\/a><\/noindex>. Um\u00edstit to do slo\u017eky jars v SPARK_HOME, znovu zipnout a nahr\u00e1t na HDFS.<\/p>\n<p>Tuto chybu jsme obej\u0161li, ale objevila se nov\u00e1 a docela z\u00e1hadn\u00e1.<\/p>\n<pre><code class=\"apache\">org.apache.spark.SparkException: Yarn application has already ended! It might have been killed or unable to launch application master<\/code><\/pre>\n<p>\nP\u0159itom zkou\u0161\u00edme spustit verzi 2.0 \u2014 v\u0161echno je v po\u0159\u00e1dku. Zkus uh\u00e1dnout, v \u010dem je probl\u00e9m. Pod\u00edvali jsme se do log\u016f t\u00e9to aplikace a vid\u011bli n\u011bco takov\u00e9ho:<\/p>\n<pre><code class=\"apache\">\/usr\/hdp\/${hdp.version}\/hadoop\/lib\/hadoop-lzo-0.6.0.${hdp.version}.jar<\/code><\/pre>\n<p>\nCelkov\u011b, z n\u011bjak\u00e9ho d\u016fvodu se hdp.version neresolvovala. Po vyhled\u00e1n\u00ed jsme na\u0161li \u0159e\u0161en\u00ed. Je pot\u0159eba v Ambari j\u00edt do nastaven\u00ed YARN a p\u0159idat tam parametr do custom yarn-site:<\/p>\n<pre><code class=\"apache\">hdp.version=2.5.3.0-37<\/code><\/pre>\n<p>\nTato magie pomohla a Spark vzl\u00e9tl. Otestovali jsme n\u011bkolik na\u0161ich jupyter notebook\u016f. V\u0161echno funguje. Na prvn\u00ed lekci o Sparku v sobotu (u\u017e z\u00edtra) jsme p\u0159ipraveni!<\/p>\n<p><b>UPD<\/b>. Na lekci se objevila dal\u0161\u00ed probl\u00e9m. V ur\u010dit\u00e9m okam\u017eiku YARN p\u0159estal vyd\u00e1vat kontejnery pro Spark. V YARN bylo pot\u0159eba opravit parametr, kter\u00fd byl ve v\u00fdchoz\u00edm nastaven\u00ed 0.2:<\/p>\n<pre><code class=\"apache\">yarn.scheduler.capacity.maximum-am-resource-percent=0.8<\/code><\/pre>\n<p>\nTo znamen\u00e1, \u017ee pouze 20 % zdroj\u016f se pod\u00edlelo na distribuci zdroj\u016f. Zm\u011bnili jsme parametry a restartovali YARN. Probl\u00e9m byl vy\u0159e\u0161en a ostatn\u00ed \u00fa\u010dastn\u00edci tak\u00e9 mohli spustit spark context.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/newprolab\/blog\/327556\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0425\u0430\u0431\u0440, \u043f\u0440\u0438\u0432\u0435\u0442! \u0412\u0447\u0435\u0440\u0430 \u043d\u0430 \u043c\u0438\u0442\u0430\u043f\u0435, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u043c Apache Spark, \u043e\u0442 \u0440\u0435\u0431\u044f\u0442 \u0438\u0437 Rambler&#038;Co, \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0420\u0435\u0448\u0438\u043b\u0438 \u043f\u043e \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0430\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c. \u0422\u0435\u043c\u0430 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043c\u044b \u0442\u043e\u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u0432\u043e\u0434\u043d\u0430\u044f \u2014 \u043a\u0430\u043a \u043c\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-30548","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0425\u0430\u0431\u0440, \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/konfigurirovanie-spark-na-yarn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Spark \u043d\u0430 YARN | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0425\u0430\u0431\u0440, \u043f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/konfigurirovanie-spark-na-yarn\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:36:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:36:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Konfigurace Spark na YARN | ProHoster","description":"Habr, ahoj!","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/konfigurirovanie-spark-na-yarn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 Spark \u043d\u0430 YARN | ProHoster","og:description":"\u0425\u0430\u0431\u0440, \u043f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/konfigurirovanie-spark-na-yarn","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:36:08+00:00","article:modified_time":"2019-10-31T18:36:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30548","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 01:45:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:33:26","updated":"2026-01-21 01:45:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=30548"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30548\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=30548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=30548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=30548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}