tg-me.com/nlp_stuff/323
Last Update:
اسپارک؛ سهل و ممتنع!
اگر در حوزه تحلیل دیتا کار کرده باشید قطعا با ابزارهای data manipulation مانند pandas یا spark کار کردید. در این پست قصد داریم رشته بلاگی رو به شما معرفی کنیم که مفاهیم پایهای spark رو به شما یاد میده. فهم این مفاهیم کمک میکنه که کوعریهای بهتری در اسپارک بزنید و یا علت کند اجرا شدن برخی از کوعریها رو بفهمید. همونطور که میدونید spark در دوحالت cluster mode و client mode اجرا میشه که معمولا برای کارهای تحلیلی که خیلی پروداکشنی نیست از همین حالت client mode استفاده میکنیم که در واقع تنها کاری که برای بهره بردن از اسپارک باید انجام بدید نصب پکیج pyspark بر روی سیستمتون هست (درست مثل pandas). حسن بزرگ اسپارک اینه که محاسبات بر روی دیتای حجیم رو میتونه بین چندین executor بشکونه و محاسبات هر executor توی ram اجرا میشه و executorها نتایج کارشون رو با استفاده از ارتباط با driver به اشتراک میذارن تا نتیجه نهایی بدست بیاد (همونطور که متوجه شدید معماری کل اسپارک حالت master/slave داره) این وسط با کانفیگهایی که روی اسپارک انجام میدید میتونید حداکثر استفاده از ram رو تعیین کنید تا خیالتون راحت باشه که همه ram سیستم شما مورد استفاده قرار نگیره. این رشته بلاگ ابتدا مفاهیمی مانند driver و executor و scheduler رو توضیح داده و سپس به سراغ توضیح پارتیشنها رفته. پارتیشنها بخشهایی از دیتا هستند که میتونند به صورت توزیعشده باشند و یا به صورت موازی پردازش بر روی اونها انجام بگیره. در واقع هر executor در لحظه میتونه فقط یک پارتیشن از دیتا رو پردازش کنه ولی driver میتونه چندین executor رو به کار بگیره برای اینکه پردازش دیتا همزمان روی چندین پارتیشن انجام بشه.
این رشته بلاگ توضیح داده که برخی از transformationها یا کوعری ها حالت narrow دارند که به این معنیه که انجام اونها منجر به repartition شدن دیتا نمیشه مانند map یا filter ولی برخی دیگه wide transformation هستند که منجر به repartition شدن دیتا میشه مانند groupby که wide transformationها میتونند کوعریهای سنگینتری باشند. (همونطور که میدونید کوعریها در اسپارک lazy هستند به این معنی که در لحظه اجرا نمیشند بلکه مواقع خاصی مانند تبدیل نتایج به list و یا ذخیره کردن داده اجرا میشند که این به اسپارک اجازه میده از زنجیره کوعریها یک گراف محاسباتی بسازه و اون رو قبل از اجرا بهینه کنه)
در نهایت اومده و memory management در اسپارک رو توضیح داده که یکی از مهمترین و البته پیچیدهترین قسمتهای فهم اسپارک هست و گفته که memory management در سطوح مختلف قابل تعریفه مثل driver memory و یا executor memory و ...
توصیه میکنیم حتما این رشته بلاگ رو بخونید و سعی کنید از این به بعد به جای pandas از spark استفاده کنید که وقتی دیتای حجیم دیدید هول نکنید!
لینک رشته بلاگ:
https://luminousmen.com/post/hadoop-yarn-spark
#handsOn
#read
#blog
@nlp_stuff
BY NLP stuff

Share with your friend now:
tg-me.com/nlp_stuff/323