{"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\/sk\/blog\/news\/konfigurirovanie-spark-na-yarn","title":{"rendered":"Konfigur\u00e1cia 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\/\">meet-u venovanom Apache Spark<\/a><\/noindex>, od chlapcov z Rambler&#038;Co, bolo dos\u0165 ve\u013ea ot\u00e1zok od \u00fa\u010dastn\u00edkov t\u00fdkaj\u00facich sa konfigur\u00e1cie tohto n\u00e1stroja. Rozhodli sme sa zdie\u013ea\u0165 svoje sk\u00fasenosti. T\u00e9ma nie je jednoduch\u00e1 \u2014 preto navrhujeme zdie\u013ea\u0165 aj va\u0161e sk\u00fasenosti v koment\u00e1roch, mo\u017eno aj my nie\u010do nerozumieme a pou\u017e\u00edvame to nespr\u00e1vne.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKr\u00e1tke \u00favodn\u00e9 slovo \u2014 ako pou\u017e\u00edvame Spark. M\u00e1me trojmesa\u010dn\u00fd program <noindex><a rel=\"nofollow\" href=\"http:\/\/newprolab.com\/ru\/bigdata?utm_source=habr&amp;utm_campaign=spark\">\u201e\u0160pecialista na ve\u013ek\u00e9 d\u00e1ta\u201c<\/a><\/noindex>, a v celom druhom module na\u0161i \u00fa\u010dastn\u00edci pracuj\u00fa s t\u00fdmto n\u00e1strojom. Na\u0161ou \u00falohou ako organiz\u00e1torov je pripravi\u0165 klastra na pou\u017eitie v r\u00e1mci tohto pr\u00edpadu.<\/p>\n<p>\u0160pecifickos\u0165 n\u00e1\u0161ho pou\u017eitia spo\u010d\u00edva v tom, \u017ee po\u010det \u013eud\u00ed, ktor\u00ed pracuj\u00fa na Sparku s\u00fa\u010dasne, m\u00f4\u017ee by\u0165 rovn\u00fd cel\u00e9mu t\u00edmu. Napr\u00edklad na semin\u00e1ri, kedy v\u0161etci sk\u00fa\u0161aj\u00fa a opakuj\u00fa po na\u0161om lektorovi. A to je dos\u0165 \u2014 ob\u010das a\u017e 40 \u013eud\u00ed. Pravdepodobne nie je ve\u013ea firiem na svete, ktor\u00e9 sa stret\u00e1vaj\u00fa s tak\u00fdmto sp\u00f4sobom pou\u017eitia.<\/p>\n<p>\u010ealej v\u00e1m poviem, ako a pre\u010do sme vyberali tie alebo in\u00e9 parametre konfigur\u00e1cie.<\/p>\n<p>Za\u010dneme od za\u010diatku. Spark m\u00e1 3 mo\u017enosti, ako pracova\u0165 na klastri: standalone, s pou\u017eit\u00edm Mesos a s pou\u017eit\u00edm YARN. Rozhodli sme sa zvoli\u0165 tretiu mo\u017enos\u0165, preto\u017ee pre n\u00e1s d\u00e1vala zmysel. U\u017e m\u00e1me hadoop-klaster. Na\u0161i \u00fa\u010dastn\u00edci s\u00fa u\u017e dobre obozn\u00e1men\u00ed s jeho architekt\u00farou. Pou\u017eime YARN.<\/p>\n<pre><code class=\"apache\">spark.master=yarn<\/code><\/pre>\n<p>\n\u010ealej je to zauj\u00edmavej\u0161ie. Ka\u017ed\u00e1 z t\u00fdchto 3 mo\u017enost\u00ed nasadenia m\u00e1 2 mo\u017enosti deploy: client a cluster. Na z\u00e1klade <noindex><a rel=\"nofollow\" href=\"http:\/\/spark.apache.org\/docs\/latest\/running-on-yarn.html\">dokumen\u00e1cie<\/a><\/noindex> a r\u00f4znych odkazov na internete mo\u017eno us\u00fadi\u0165, \u017ee client je vhodn\u00fd pre interakt\u00edvnu pr\u00e1cu \u2014 napr\u00edklad cez jupyter notebook, zatia\u013e \u010do cluster je viac vhodn\u00fd pre produk\u010dn\u00e9 rie\u0161enia. V na\u0161om pr\u00edpade n\u00e1s zauj\u00edmala interakt\u00edvna pr\u00e1ca, preto:<\/p>\n<pre><code class=\"apache\">spark.deploy-mode=client<\/code><\/pre>\n<p>\nOd tohto momentu za\u010dne Spark nejak\u00fdm sp\u00f4sobom fungova\u0165 na YARN, ale to n\u00e1m nesta\u010dilo. Ke\u010f\u017ee m\u00e1me program o ve\u013ek\u00fdch d\u00e1tach, niekedy \u00fa\u010dastn\u00edkom ch\u00fdbalo to, \u010do sa dosahovalo v r\u00e1mci rovnomern\u00e9ho rozdelenia zdrojov. A tu sme objavili zauj\u00edmav\u00fa vec \u2014 dynamick\u00fa alok\u00e1ciu zdrojov. V skratke, podstata je nasleduj\u00faca: ak m\u00e1te n\u00e1ro\u010dn\u00fa \u00falohu a klaster je vo\u013en\u00fd (napr\u00edklad r\u00e1no), tak pomocou tejto mo\u017enosti v\u00e1m Spark m\u00f4\u017ee poskytn\u00fa\u0165 \u010fal\u0161ie zdroje. Potreba sa po\u010d\u00edta pomocou komplikovanej formule. Nechceme sa zaobera\u0165 podrobnos\u0165ami \u2014 funguje to celkom dobre.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.enabled=true<\/code><\/pre>\n<p>\nTento parameter sme nastavili, a pri spusten\u00ed Sparku sa objavila chyba a nespustil sa. Je to spr\u00e1vne, lebo bolo treba \u010d\u00edta\u0165 <noindex><a rel=\"nofollow\" href=\"http:\/\/spark.apache.org\/docs\/latest\/configuration.html\">dokument\u00e1cii<\/a><\/noindex> pozornej\u0161ie. Je tam uveden\u00e9, \u017ee na to, aby v\u0161etko fungovalo, je potrebn\u00e9 e\u0161te zapn\u00fa\u0165 \u010fal\u0161\u00ed parameter.<\/p>\n<pre><code class=\"apache\">spark.shuffle.service.enabled=true<\/code><\/pre>\n<p>\nNa\u010do je potrebn\u00fd? Ke\u010f u\u017e n\u00e1\u0161 job viac nevy\u017eaduje to\u013eko zdrojov, Spark by mal vr\u00e1ti\u0165 zdroje do spolo\u010dn\u00e9ho poolu. Najn\u00e1ro\u010dnej\u0161ia f\u00e1za skoro v ka\u017edej \u00falohe MapReduce je f\u00e1za Shuffle. Tento parameter umo\u017e\u0148uje uchov\u00e1va\u0165 d\u00e1ta, ktor\u00e9 vznikaj\u00fa v tejto f\u00e1ze, a t\u00fdm uvo\u013e\u0148ova\u0165 executors. A executor je proces, ktor\u00fd na workeri v\u0161etko vypo\u010d\u00edtava. M\u00e1 ur\u010dit\u00fd po\u010det procesorov\u00fdch jadier a ur\u010dit\u00fa kapacitu pam\u00e4te.<\/p>\n<p>Tento parameter sme pridali. V\u0161etko sa zdalo fungova\u0165. Bolo zjavn\u00e9, \u017ee \u00fa\u010dastn\u00edkom sa za\u010dali skuto\u010dne poskytova\u0165 viac zdrojov, ke\u010f ich potrebovali. Ale objavil sa in\u00fd probl\u00e9m \u2014 v ur\u010ditom momente sa prebudili aj \u010fal\u0161\u00ed \u00fa\u010dastn\u00edci a chceli tie\u017e pou\u017e\u00edva\u0165 Spark, ale v\u0161etko bolo obsaden\u00e9 a boli nespokojn\u00ed. M\u00f4\u017eeme ich pochopi\u0165. Za\u010dali sme sa pozera\u0165 do dokument\u00e1cie. Zistilo sa, \u017ee existuje e\u0161te nieko\u013eko parametrov, pomocou ktor\u00fdch je mo\u017en\u00e9 ovplyvni\u0165 tento proces. Napr\u00edklad, ak je executor v re\u017eime \u010dakania \u2014 za ak\u00fd \u010das je mo\u017en\u00e9 vzia\u0165 mu zdroje?<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.executorIdleTimeout=120s<\/code><\/pre>\n<p>\nV na\u0161om pr\u00edpade, ak va\u0161e executors ni\u010d nerobia po\u010das dvoch min\u00fat, pros\u00edm, vr\u00e1\u0165te ich do spolo\u010dn\u00e9ho poolu. Ale ani tento parameter nie v\u017edy sta\u010dil. Bolo vidno, \u017ee \u010dlovek u\u017e dlho ni\u010d nerob\u00ed, a zdroje sa neuvo\u013e\u0148ovali. Uk\u00e1zalo sa, \u017ee existuje e\u0161te \u0161peci\u00e1lny parameter \u2014 po uplynut\u00ed ur\u010dit\u00e9ho \u010dasu vybera\u0165 executors, ktor\u00e9 obsahuj\u00fa cachovan\u00e9 d\u00e1ta. Pod\u013ea predvolen\u00e9ho nastavenia bol tento parameter \u2014 nekone\u010dno! Opraven\u00e9.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.cachedExecutorIdleTimeout=600s<\/code><\/pre>\n<p>\nTeda, ak va\u0161e executors ni\u010d nerobia po\u010das 5 min\u00fat, vr\u00e1\u0165te ich do spolo\u010dn\u00e9ho poolu. V takomto re\u017eime sa r\u00fdchlos\u0165 uvo\u013e\u0148ovania a poskytovania zdrojov pre ve\u013ek\u00e9 mno\u017estvo pou\u017e\u00edvate\u013eov stala akceptovate\u013enou. Po\u010det nespokojn\u00fdch z\u00e1kazn\u00edkov sa zn\u00ed\u017eil. Ale rozhodli sme sa \u00eds\u0165 \u010falej a obmedzi\u0165 maxim\u00e1lny po\u010det executors pre jednu aplik\u00e1ciu \u2014 vlastne pre jedn\u00e9ho \u00fa\u010dastn\u00edka programu.<\/p>\n<pre><code class=\"apache\">spark.dynamicAllocation.maxExecutors=19<\/code><\/pre>\n<p>\nTeraz sa samozrejme objavili nespokojn\u00ed z druhej strany \u2014 \"klaster nevyu\u017e\u00edva zdroje, a ja m\u00e1m iba 19 executors\", ale \u010do sa d\u00e1 robi\u0165 \u2014 potrebujeme nejak\u00fa spr\u00e1vnu rovnov\u00e1hu. Nie v\u0161etk\u00fdch sa podar\u00ed urobi\u0165 \u0161\u0165astn\u00fdmi.<\/p>\n<p>A e\u0161te jedna mal\u00e1 pr\u00edhoda, spojen\u00e1 so \u0161pecifikou na\u0161ej situ\u00e1cie. Na jedno praktick\u00e9 cvi\u010denie pri\u0161lo nieko\u013eko \u013eud\u00ed neskoro, a ich Spark, pre\u010do nie, ne\u0161tartoval. Pozreli sme sa na po\u010det vo\u013en\u00fdch zdrojov \u2014 zdalo sa, \u017ee s\u00fa. Spark by mal \u0161tartova\u0165. Na\u0161\u0165astie, dokument\u00e1cia sa u\u017e k tomu okamihu zap\u00edsala do pam\u00e4ti, a spomenuli sme si, \u017ee pri spusten\u00ed Spark h\u013ead\u00e1 port, na ktorom sa spusti\u0165. Ak je prv\u00fd port z rozsahu obsaden\u00fd, prech\u00e1dza na \u010fal\u0161\u00ed v porad\u00ed. Ak je vo\u013en\u00fd, zaber\u00e1 ho. A existuje parameter, ktor\u00fd ur\u010duje maxim\u00e1lny po\u010det pokusov pre toto. Pod\u013ea predvolen\u00e9ho nastavenia \u2014 to je 16. Po\u010det je men\u0161\u00ed ne\u017e po\u010det \u013eud\u00ed v na\u0161ej skupine na cvi\u010den\u00ed. Zodpovedne, po 16 pokusoch Spark zanechal to a povedal, \u017ee nem\u00f4\u017eem \u0161tartova\u0165. Tento parameter sme opravili.<\/p>\n<pre><code class=\"apache\">spark.port.maxRetries=50<\/code><\/pre>\n<p>\n\u010ealej v\u00e1m poviem o niektor\u00fdch nastaveniach, ktor\u00e9 u\u017e nie s\u00fa ve\u013emi spojen\u00e9 so \u0161pecifikou na\u0161ej situ\u00e1cie.<\/p>\n<p>Pre r\u00fdchlej\u0161ie spustenie Sparku sa odpor\u00fa\u010da zarchivova\u0165 prie\u010dinok jars, ktor\u00fd sa nach\u00e1dza v domovskom adres\u00e1ri SPARK_HOME, a umiestni\u0165 ho na HDFS. Takto sa nebude str\u00e1ca\u0165 \u010das s na\u010d\u00edtan\u00edm t\u00fdchto jarov po workeroch.<\/p>\n<pre><code class=\"apache\">spark.yarn.archive=hdfs:\/\/\/tmp\/spark-archive.zip<\/code><\/pre>\n<p>\nPre r\u00fdchlej\u0161ie fungovanie sa odpor\u00fa\u010da pou\u017ei\u0165 ako serializ\u00e1tor kryo. Je optimalizovanej\u0161\u00ed ne\u017e ten, ktor\u00fd je predvolene nastaven\u00fd.<\/p>\n<pre><code class=\"apache\">spark.serializer=org.apache.spark.serializer.KryoSerializer<\/code><\/pre>\n<p>\nExistuje aj dlhodob\u00fd probl\u00e9m Spark, \u017ee \u010dasto spadne kv\u00f4li pam\u00e4ti. \u010casto sa to deje vtedy, ke\u010f pracovn\u00edci v\u0161etko spo\u010d\u00edtali a posielaj\u00fa v\u00fdsledok na ovl\u00e1da\u010d. Tento parameter sme nastavili v\u00e4\u010d\u0161\u00ed. Predvolene je 1GB, my sme ho nastavili na 3.<\/p>\n<pre><code class=\"apache\">spark.driver.maxResultSize=3072<\/code><\/pre>\n<p>\nA posledn\u00e1 vec, ako dezert. Ako aktualizova\u0165 Spark na verziu 2.1 na distrib\u00facii HortonWorks \u2014 HDP 2.5.3.0. T\u00e1to verzia HDP obsahuje predin\u0161talovan\u00fa verziu 2.0, ale raz sme sa rozhodli, \u017ee Spark sa vyv\u00edja dos\u0165 akt\u00edvne a ka\u017ed\u00e1 nov\u00e1 verzia opravuje nejak\u00e9 chyby a poskytuje nov\u00e9 mo\u017enosti, vr\u00e1tane python API, preto sme sa rozhodli, \u017ee je potrebn\u00e9 vykona\u0165 aktualiz\u00e1ciu.<\/p>\n<p>Stiahli sme verziu z ofici\u00e1lnej str\u00e1nky pre Hadoop 2.7. Rozbalili sme ju a preniesli do prie\u010dinka s HDP. Nastavili sme symbolick\u00e9 odkazy tak, ako treba. Sp\u00fa\u0161\u0165ame \u2014 nechce sa spusti\u0165. Zobrazuje ve\u013emi nezrozumite\u013en\u00fa chybu.<\/p>\n<pre><code class=\"apache\">java.lang.NoClassDefFoundError: com\/sun\/jersey\/api\/client\/config\/ClientConfig<\/code><\/pre>\n<p>\nPo googlen\u00ed sme zistili, \u017ee Spark sa rozhodol ne\u010daka\u0165, k\u00fdm Hadoop vyjde, a rozhodol sa pou\u017ei\u0165 nov\u00fa verziu jersey. Sami sa s t\u00fdm h\u00e1daj\u00fa na JIRA. Rie\u0161en\u00edm bolo \u2014 stiahnu\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/mvnrepository.com\/artifact\/com.sun.jersey\/jersey-bundle\/1.17.1\">jersey verziu 1.17.1<\/a><\/noindex>. Prenies\u0165 to do prie\u010dinka jars v SPARK_HOME, znova vytvori\u0165 zip a prenies\u0165 na HDFS.<\/p>\n<p>T\u00fato chybu sme obch\u00e1dzali, ale objavila sa nov\u00e1 a dos\u0165 nejasn\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>\nSna\u017e\u00edme sa spusti\u0165 verziu 2.0 \u2014 v\u0161etko je v poriadku. Sk\u00fas uh\u00e1dnu\u0165, v \u010dom je probl\u00e9m. Pozreli sme sa do logov tejto aplik\u00e1cie a videli sme nie\u010do tak\u00e9to:<\/p>\n<pre><code class=\"apache\">\/usr\/hdp\/${hdp.version}\/hadoop\/lib\/hadoop-lzo-0.6.0.${hdp.version}.jar<\/code><\/pre>\n<p>\nV skratke, z nejak\u00fdch d\u00f4vodov hdp.version nebola rozl\u00ed\u0161en\u00e1. Po googlen\u00ed sme na\u0161li rie\u0161enie. Mus\u00edte v Ambari \u00eds\u0165 do nastaven\u00ed YARN a prida\u0165 tam parameter do vlastn\u00e9ho yarn-site:<\/p>\n<pre><code class=\"apache\">hdp.version=2.5.3.0-37<\/code><\/pre>\n<p>\nT\u00e1to m\u00e1gia pomohla a Spark sa rozbehol. Otestovali sme nieko\u013eko na\u0161ich jupyter notebookov. V\u0161etko funguje. Na prv\u00fa hodinu o Sparku v sobotu (u\u017e zajtra) sme pripraven\u00ed!<\/p>\n<p><b>UPD<\/b>. Na hodine sa objavil \u010fal\u0161\u00ed probl\u00e9m. V ur\u010ditom momente YARN prestal poskytova\u0165 kontajnery pre Spark. V YARN bolo treba upravi\u0165 parameter, ktor\u00fd bol predvolene nastaven\u00fd na 0.2:<\/p>\n<pre><code class=\"apache\">yarn.scheduler.capacity.maximum-am-resource-percent=0.8<\/code><\/pre>\n<p>\nTeda len 20% zdrojov sa z\u00fa\u010dastnilo na pridelen\u00ed zdrojov. Zmenili sme parametre a re\u0161tartovali YARN. Probl\u00e9m bol vyrie\u0161en\u00fd a ostatn\u00ed \u00fa\u010dastn\u00edci tie\u017e mohli spusti\u0165 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.4 - 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\/sk\/blog\/news\/konfigurirovanie-spark-na-yarn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Konfigur\u00e1cia Sparku na YARN | ProHoster","description":"Habr, ahoj!","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/konfigurirovanie-spark-na-yarn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/30548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=30548"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/30548\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=30548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=30548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=30548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}