Ke hoʻonohonoho nei i ka Spark ma YARN

Habr, aloha! I nehinei ma hui i hoʻolaʻa ʻia iā Apache Spark, mai nā kāne mai Rambler&Co, he nui nā nīnau mai nā mea komo e pili ana i ka hoʻonohonoho ʻana i kēia hāmeʻa. Ua hoʻoholo mākou e hahai i kona mau wāwae a kaʻana like i kā mākou ʻike. ʻAʻole maʻalahi ke kumuhana - no laila ke kono nei mākou iā ʻoe e kaʻana like i kāu ʻike ma nā ʻōlelo, malia paha mākou e hoʻomaopopo a hoʻohana i kekahi mea hewa.

ʻO kahi hoʻolauna iki i ka hoʻohana ʻana iā Spark. He papahana ʻekolu mahina kā mākou “Kūpono ikepili nui”, a i loko o ka module ʻelua e hana kā mākou poʻe hui i kēia mea hana. No laila, ʻo kā mākou hana, ma ke ʻano he mea hoʻonohonoho, ʻo ia ka hoʻomākaukau ʻana i ka pūpū no ka hoʻohana ʻana i loko o ia hihia.

ʻO ka hiʻohiʻona o kā mākou hoʻohana ʻana, ʻo ka nui o nā poʻe e hana like ana ma Spark hiki ke like me ka hui holoʻokoʻa. Eia kekahi laʻana, ma kahi seminar, ke ho'āʻo nā kānaka a pau i kekahi mea i ka manawa like a hana hou ma hope o kā mākou kumu. A ʻaʻole nui kēia - i kekahi manawa a hiki i 40 poʻe. ʻAʻole nui paha nā ʻoihana ma ka honua e kū nei i kahi hihia hoʻohana.

A laila, e haʻi wau iā ʻoe pehea a me ke kumu i koho ai mākou i kekahi mau ʻāpana config.

E hoomaka kakou mai kinohi mai. Loaʻa iā Spark nā koho 3 e holo ma kahi hui: kūʻokoʻa, hoʻohana i ka Mesos, a me ka hoʻohana ʻana i ka YARN. Ua hoʻoholo mākou e koho i ke kolu o ka koho no ka mea ua kūpono iā mākou. Loaʻa iā mākou kahi puʻupuʻu hadoop. Ua kamaʻāina mua kā mākou poʻe komo i kāna hoʻolālā. E hoʻohana kākou i ka YARN.

spark.master=yarn

ʻOi aku ka hoihoi. Loaʻa i kēlā me kēia o kēia mau koho deployment 3 nā koho hoʻolaha: ka mea kūʻai aku a me ka pūʻulu. Hoʻokumu ʻia palapala a me nā loulou like ʻole ma ka Pūnaewele, hiki iā mākou ke hoʻoholo he kūpono ka mea kūʻai aku no ka hana interactive - no ka laʻana, ma o jupyter notebook, a ʻoi aku ka maikaʻi o ka cluster no nā hoʻonā hana. I kā mākou hihia, makemake mākou i ka hana pili, no laila:

spark.deploy-mode=client

Ma ka laulā, mai kēia manawa e hana ʻo Spark ma YARN, akā ʻaʻole lawa kēia iā mākou. No ka mea he papahana kā mākou e pili ana i ka ʻikepili nui, i kekahi manawa ʻaʻole lawa ka poʻe i komo i nā mea i loaʻa i loko o ke ʻano o ka ʻoki ʻana i nā kumuwaiwai. A laila ʻike mākou i kahi mea hoihoi - ka hoʻokaʻawale ʻana i nā kumuwaiwai. I ka pōkole, ʻo kēia ka manaʻo: inā he hana paʻakikī kāu a ʻaʻole manuahi ka hui (no ka laʻana, i ke kakahiaka), a laila e hoʻohana i kēia koho hiki iā Spark ke hāʻawi iā ʻoe i nā kumuwaiwai hou aʻe. Ua helu ʻia ka pono ma laila e like me ke ʻano maalea. ʻAʻole mākou e hele i nā kikoʻī - hana maikaʻi ia.

spark.dynamicAllocation.enabled=true

Hoʻonoho mākou i kēia ʻāpana, a ma ka hoʻomaka ʻana ua hāʻule ʻo Spark a ʻaʻole i hoʻomaka. Pololei, no ka mea, pono au e heluhelu palapala akahele loa. Ua ʻōlelo ʻia i mea e maikaʻi ai nā mea a pau, pono ʻoe e hoʻololi i kahi ʻāpana ʻē aʻe.

spark.shuffle.service.enabled=true

No ke aha e pono ai? Ke koi ʻole kā mākou hana i nā kumuwaiwai he nui, pono e hoʻihoʻi ʻo Spark iā lākou i ka wai maʻamau. ʻO ka pae ʻoi loa o ka manawa ma kahi o nā hana MapReduce ʻo ia ka pae Shuffle. Hāʻawi kēia ʻāpana iā ʻoe e mālama i ka ʻikepili i hana ʻia ma kēia pae a hoʻokuʻu i nā mea hoʻokō e like me ia. A ʻo ka mea hoʻokō ke kaʻina hana e helu ai i nā mea āpau ma luna o ka mea hana. Loaʻa iā ia kahi helu o nā cores processor a me kahi nui o ka hoʻomanaʻo.

Ua hoʻohui ʻia kēia ʻāpana. Me he mea lā ua hana nā mea a pau. Ua ʻike ʻia ua hāʻawi ʻia nā mea komo i nā kumuwaiwai hou aʻe i ka wā e pono ai lākou. Akā ua puka mai kekahi pilikia - i kekahi manawa ua ala aʻe nā mea komo a makemake hoʻi e hoʻohana iā Spark, akā paʻa nā mea āpau ma laila, a hauʻoli ʻole lākou. Hiki ke hoomaopopo ia lakou. Ua hoʻomaka mākou e nānā i ka palapala. Ua ʻike ʻia aia kekahi mau ʻāpana ʻē aʻe i hiki ke hoʻohana ʻia e hoʻoikaika i ke kaʻina hana. No ka laʻana, inā aia ka mea hoʻokō i ke ʻano standby, ma hope o ka manawa hea e lawe ʻia ai nā kumuwaiwai mai ia mea?

spark.dynamicAllocation.executorIdleTimeout=120s

I kā mākou hihia, inā ʻaʻohe hana o kāu mau mea hoʻokō no ʻelua mau minuke, e ʻoluʻolu e hoʻihoʻi iā lākou i ka wai maʻamau. Akā ʻaʻole lawa kēia ʻāpana i nā manawa a pau. Ua maopopo ʻaʻole i hana ke kanaka i kekahi mea no ka manawa lōʻihi, a ʻaʻole i hoʻokuʻu ʻia nā kumuwaiwai. Ua ʻike ʻia aia kekahi ʻāpana kūikawā - ma hope o ka manawa e koho ai i nā mea hoʻokō i loaʻa ka ʻikepili cache. ʻO ka mea paʻamau, ʻo kēia ʻāpana he palena ʻole! Hoʻoponopono mākou.

spark.dynamicAllocation.cachedExecutorIdleTimeout=600s

ʻO ia hoʻi, inā ʻaʻohe hana o kāu mau hoʻokō no 5 mau minuke, e hāʻawi iā lākou i ka wai maʻamau. Ma kēia ʻano, ua lilo ka wikiwiki o ka hoʻokuʻu ʻana a me ka hoʻopuka ʻana i nā kumuwaiwai no ka nui o nā mea hoʻohana. Ua emi ka nui o ka hauʻoli. Akā, ua hoʻoholo mākou e hele i mua a kaupalena i ka helu kiʻekiʻe o nā mea hoʻokō i kēlā me kēia noi - ʻo ia hoʻi no kēlā me kēia mea komo papahana.

spark.dynamicAllocation.maxExecutors=19

I kēia manawa, ʻoiaʻiʻo, aia nā poʻe ʻoluʻolu ʻole ma kēlā ʻaoʻao - "ʻaʻole i hana ka hui, a he 19 wale nō kaʻu mau mea hoʻokō," akā he aha kāu e hana ai? Pono mākou i kahi ʻano kaulike kūpono. ʻAʻole hiki iā ʻoe ke hoʻohauʻoli i nā mea a pau.

A ʻo kekahi moʻolelo liʻiliʻi e pili ana i nā kikoʻī o kā mākou hihia. Ma kekahi ʻano, ua lohi kekahi poʻe no kahi haʻawina kūpono, a no kekahi kumu ʻaʻole i hoʻomaka ʻo Spark no lākou. Ua nānā mākou i ka nui o nā kumuwaiwai manuahi - me he mea lā aia ma laila. Pono e hoʻomaka ʻo Spark. ʻO ka mea pōmaikaʻi, ma ia manawa ua hoʻohui ʻia nā palapala i ka subcortex ma kahi, a hoʻomanaʻo mākou i ka wā i hoʻokuʻu ʻia ai, ʻimi ʻo Spark i kahi awa e hoʻomaka ai. Inā paʻa ka puka mua ma ka laulā, neʻe ia i ka port aʻe ma ke ʻano. Inā manuahi, hopu ʻia. A aia kahi ʻāpana e hōʻike ana i ka nui o nā hoʻāʻo no kēia. ʻO ka paʻamau ʻo 16. ʻOi aku ka helu ma mua o ka helu o nā poʻe o kā mākou hui ma ka papa. No laila, ma hope o 16 mau hoʻāʻo, haʻalele ʻo Spark a ʻōlelo ʻaʻole hiki iaʻu ke hoʻomaka. Ua hoʻoponopono mākou i kēia hoʻonohonoho.

spark.port.maxRetries=50

A laila e haʻi wau iā ʻoe e pili ana i kekahi mau hoʻonohonoho ʻaʻole pili loa i nā kikoʻī o kā mākou hihia.

No ka hoʻomaka wikiwiki ʻana iā Spark, pono e hoʻopaʻa i ka waihona pahu i loaʻa i ka papa kuhikuhi home SPARK_HOME a kau iā ia ma HDFS. A laila, ʻaʻole ʻo ia e hoʻopau manawa i ka hoʻouka ʻana i kēia mau jarniks e nā limahana.

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

Manaʻo ʻia e hoʻohana i ka kryo ma ke ʻano he serializer no ka hana wikiwiki. ʻOi aku ka maikaʻi ma mua o ka mea paʻamau.

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

A aia kekahi pilikia lōʻihi me Spark e hāʻule pinepine mai ka hoʻomanaʻo. Hoʻomaka pinepine kēia i ka manawa i helu ai nā limahana i nā mea āpau a hoʻouna i ka hopena i ka mea hoʻokele. Hoʻonui mākou i kēia ʻāpana no mākou iho. Ma ka maʻamau, ʻo ia ka 1GB, ua hana mākou iā 3.

spark.driver.maxResultSize=3072

A ʻo ka hope, he mea ʻai. Pehea e hoʻohou ai i ka Spark i ka mana 2.1 ma ka hoʻohele HortonWorks - HDP 2.5.3.0. Loaʻa i kēia mana o HDP kahi mana 2.0 i hoʻokomo mua ʻia, akā ua hoʻoholo mākou no mākou iho ke ulu ikaika nei ʻo Spark, a ua hoʻoponopono kēlā me kēia mana hou i kekahi mau pōpoki me ka hāʻawi ʻana i nā hiʻohiʻona hou, me ka python API, no laila ua hoʻoholo mākou, he aha ka mea e pono ai. e hana ʻia he mea hou.

Hoʻoiho i ka mana mai ka pūnaewele mana no Hadoop 2.7. Wehe a waiho i loko o ka waihona HDP. Hoʻokomo mākou i nā symlink e like me ka mea e pono ai. Hoʻomaka mākou - ʻaʻole hoʻomaka. Kākau i kahi hewa maopopo ʻole.

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

Ma hope o ka googling, ua ʻike mākou ua hoʻoholo ʻo Spark ʻaʻole e kali a hānau ʻia ʻo Hadoop, a ua hoʻoholo e hoʻohana i ka mana hou o ka jersey. ʻO lākou iho e hoʻopaʻapaʻa me kekahi i kēia kumuhana ma JIRA. ʻO ka hoʻonā ʻana ʻo ka hoʻoiho ʻana mana o ka lole lole 1.17.1. E kau i kēia i loko o ka waihona ipu ma SPARK_HOME, hoʻopaʻa hou a hoʻouka i ka HDFS.

Ua hoʻopuni mākou i kēia hewa, akā ua kū mai kahi mea hou a maʻalahi hoʻi.

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

I ka manawa like, ho'āʻo mākou e holo i ka mana 2.0 - ua maikaʻi nā mea a pau. E hoʻāʻo e kuhi i ka mea e hana nei. Ua nānā mākou i nā loina o kēia noi a ʻike mākou i kekahi mea e like me kēia:

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

Ma keʻano laulā, no kekahi kumu ʻaʻole i hoʻoholo ʻia ka hdp.version. Ma hope o ka googling, loaʻa iā mākou kahi hopena. Pono ʻoe e hele i nā hoʻonohonoho YARN ma Ambari a hoʻohui i kahi ʻāpana ma laila i ka pūnaewele yarn maʻamau:

hdp.version=2.5.3.0-37

Ua kōkua kēia kupua, a ua haʻalele ʻo Spark. Ua hoʻāʻo mākou i kekahi o kā mākou laptops jupyter. Ke hana nei nā mea a pau. Mākaukau mākou no ka haʻawina Spark mua ma ka Pōʻaono (ʻapōpō)!

MEA HOU. I ka wā o ka haʻawina, ua ʻike ʻia kekahi pilikia. I kekahi manawa, ua hooki ʻo YARN i ka hāʻawi ʻana i nā ipu no Spark. I ka YARN he mea pono e hoʻoponopono i ka ʻāpana, ʻo ia ka 0.2 maʻamau:

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

ʻO ia, ʻo 20% wale nō o nā kumuwaiwai i komo i ka hāʻawi ʻana i nā kumuwaiwai. Ma hope o ka hoʻololi ʻana i nā ʻāpana, hoʻouka hou mākou i ka YARN. Ua hoʻoholo ʻia ka pilikia a ua hiki i ke koena o ka poʻe i komo ke holo i ka pōʻaiapili spark.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka