خانه > اسپارک (Spark) > درآمدی بر اسپارک (Spark) و بررسی معماری آن

درآمدی بر اسپارک (Spark) و بررسی معماری آن

 معماری اسپارک (Spark): این تکنولوژی، چارچوبی با کاربرد همه­ منظوره است و می­توان از آن برای انواع کاربردهای کلان داده، بخصوص شرایطی که سرعت عملیات از اهمیت ویژه­ ای برخوردار باشد، استفاده کرد. دو مثال از این کاربردها، تحلیل تعاملی و اجرای الگوریتم ­های پردازش تکراری است. در مبحث بعدی با نحوه کار با اسپارک آشنا خواهیم شد.

الگوریتم ­های تکراری: الگوریتم­ های تکراری، الگوریتم­های پردازش داده­ای هستند که بر روی یک مجموعه داده­، چند بار تکرار می­شوند. می­توان از الگوریتم­ های پردازش گراف (مانند گام تصادفی در PageRank) و یادگیری ماشین، به ­عنوان نمونه­ هایی از الگوریتم ­های تکراری نام برد. دلیل ایده­آل بودن Spark برای این گونه از الگوریتم ­ها، قابلیت­های پردازش مقیم در حافظه آن است. در Spark، الگوریتمی که نیاز به اجرای 100 تکرار بر روی یک مجموعه داده­ ای دارد، تنها در تکرار اول، داده ­ها را از دیسک و در تکرارهای بعدی، داده ­ها را از حافظه (cash شده ­اند) می­خواند.

تحلیل تعاملی: تحلیل داده تعاملی، شامل کاوش بر روی مجموعه داده­ای بصورت تعاملی است. برای مثال، ممکن است قبل از آغاز کار پردازشی دسته ­ای (که ممکن است ساعت­ ها بطول انجامد)، تحلیل مختصری بر روی مجموعه داده ­ای صورت گیرد (برای نمونه، فهمیدن تعداد خطوط یا تعداد موجودیت­ های مجموعه داده­ای یا برخی از محاسبات آماری سبک). در این حالت، کاربر چند پرس­وجو بر روی یک مجموعه داده ­ای اجرا می­کند. توسط Spark، تنها اولین پرس­وجو، داده­ها را از دیسک و پرس­وجوهای دیگر، داده­ ها را از حافظه می­خوانند. ضمن این­که کاربر می­تواند توسط زبان پرس­وجوی استاندارد SQL، پرس­وجوهایی بر مجموعه داده ­ای (با فرمت­های مختلف از قبیل CSV، JSON، Parquet و DBMS ها) اجرا و نتیجه را بصورت تعاملی مشاهده کند

spark یک سامانه پردازش کلاستری همه منظوره و سریع می باشد. قبل از بررسی معماری اسپارک لازم است که با مؤلفه های اصلی آن آشنا شویم. این سامانه دارای چهار مولفه اصلی می باشد:

  • MLib: این مولفه بستری را برای پیاده سازی الگوریتم های یادگیری ماشین فراهم می آورد. الگوریتم ها پیاده سازی شده در این مولفه در دسته های رده بند، کلاسترینگ، رگرسیون، پالایش همکارانه، کاهش بعد، و بهینه ساز قرار می گیرند.
  • GraphX: این مولفه بستری را برای پیاده سازی الگوریتم های تحلیل گراف فراهم می آورد.لازم به ذکر است که هدف از چنین مولفه ای سرعت بالاتر برای پردازش گراف های عظیم می باشد.

http://ampcamp.berkeley.edu/5/exercises/graph-analytics-with-graphx.html

  • Spark Streaming: یک توسعه از هسته اصلی Spark می باشد که قابلیت پردازش جریان های داده های زنده را با عمکرد مناسب و تحمل پذیری خطا دارا می باشد.
  • Shark SQL: این مولفه این قابلیت را فراهم می کند که پرس و جوهای نوشته شده در SQL، HiveQL، و یا Scala با استفاده از spark اجرا شوند.

همانطور که در شکل زیر مشخص است این چهار مولفه برروی هسته spark پایه گذاری شده اند. لازم به ذکر است که هسته Spark عملگرهایی پایه ای را فراهم می کند که در هر مولفه می توان از آنها استفاده نمود.

معماری اسپارک
پشته و معماری اسپارک

 معماری اسپارک

معماری اسپارک (Spark) یک معماری ارباب/برده یا کلاینت/سرور است و شامل پنج موجودیت اصلی زیر است:

  • برنامه راه ­انداز Driver
  • مدیر خوشه Cluster manager
  • کارگرها workers
  • مجری executor
  • وظایف tasks

بطور خلاصه، بخش اصلی برنامه راه ­انداز را برنامه کاربردی Spark مورد نظر تشکیل می­دهد که در متد main آن، شیء SparkContext ساخته می­شود (ابتدای برنامه ه­ای که قرار است در خوشه اجرا شود، شیء SparkContext ساخته می­شود). Spark در دوحالت محلی (در یک ماشین) و خوشه (در چندین ماشین) اجرا می­شود. راه­ انداز، در حالت خوشه، با مدیر خوشه ارتباط برقرار می­کند و به محض اتصال، Spark، فرآیندهای مجری را در گره­ های خوشه ایجاد می­کند که مسئول اجرای پردازش (وظایف) و ذخیره داده­ها هستند. سپس، راه­انداز، کد برنامه کاربردی (گرافی جهت­دار و بدون دور که بیان­گر عملیاتی است که باید اجرا شود) و وظایفی جهت اجرا را به فرآیند­های مجری ارسال می­کند.

پیش از توضیح اجزای معماری اسپارک، به مفهوم اصطلاحات ذیل باید توجه کرد:

  • application: که قرار است در خوشه اجرا شود. در ابتدای متد main این برنامه، شیء SparkContext ساخته می­شود. SparkContext، منطق پردازشی را ذخیره می­کند و می­تواند مجموعه­ای از کارهای موازی یا سری را زمانبندی کند.
  • job: مجموعه کاملی از تبدیلات روی RDD که با یک عمل action یا ذخیره­ سازی داده، خاتمه می­یابد. در نتیجه، هر برنامه کاربردی، ممکن است شامل چندین کار باشد.
  • stage: اسپارک هر کار را به گرافی از گام­ها تقسیم می­کند. همچنین، هر گام شامل، مجموعه­ ای از وظایفی است که قابل اجرا توسط گره کارگر هستند.

Driver راه ­انداز وظایف ذیل را برعهده دارد:

  • مذاکره با مدیر خوشه جهت تخصیص منابع به کارگرها.
  • هر کار را به DAG (گراف بدون دور جهت­ دار)  ترجمه می­کند.(Direct Acyclic Graph)
  • گراف را به گام­هایی تقسیم می­کند. عملیات تبدیل در یک گام، و عملیات action در گام دیگر قرار می­گیرند.
  • وظایف را زمانبندی و اجرای آن­ها را کنترل می­کند (بر اساس وضعیت کش جاری گره­ها، مکان­های مطلوب و مناسب جهت اجرای هر وظیفه تعیین می­شود).

Cluster manager: راه ­انداز، قادر است تا به سه نوع مدیر خوشه (مدیر خوشه مستقل spark، Mesos یا Yarn) متصل شود و از آن درخواست منابع کند. هرکدام از این سه مدیر خوشه برای شرایطی خاص مناسب­ اند و می­توان یکی از آن­ها را برای مدیریت خوشه موجود انتخاب کرد. باید توجه داشت که مدیر خوشه مستقل Spark، بهمراه بسته Spark ارایه می­شود، مدیر خوشه Yarn، نیز در پشته هادوپ و مدیر خوشه Mesos نیز چارچوب مستقل دیگری است. هر کدام از این سه مدیر خوشه، شامل دو بخش هستند:

(1) سرویس ارباب مرکزی (مدیر منابع Yarn، ارباب Mesos، یا ارباب مستقل Spark) که تصمیم می­گیرد کدام فرآیندهای مجری، چه زمانی و در چه مکانی اجرا شوند.

(2) سرویس برده که در تمام گره­ها اجرا می­شود (مدیر گره در Yarn، برده در Mesos و برده در مدیر خوشه مستقل Spark) و فرآیندهای مجری را اجرا می­کند و همچنین بر مصرف و حیات منابع آن­ها نظارت می­کند.

executor: در هر گره کارگر Spark، چند پردازش مجری وجود دارد (معمولا به اندازه تعداد هسته ­های گره­ی برده، مجری ایجاد می­گردد). هر برنامه کاربردی Spark، پردازش­های مجری خودش را دارد. هر مجری، مسئول موارد ذیل است:

  • اجرای وظایفی که توسط راه ­انداز زمانبندی شده­اند، در چند نخ.
  • ذخیره­سازی نتایج محاسبات در حافظه (کش کردن نتایج در heap ماشین مجازی جاوا) یا دیسک.
  • تعامل با سیستم­های ذخیره­ سازی.
  • پس از تکمیل اجرای وظیفه، نتایج را به راه ­انداز ارسال می­کنند.

workers: در معماری اسپارک، گره ­های برده به­عنوان گره کارگر شناخته می­شوند که برای برنامه Spark، CPU، حافظه و منابع ذخیره­سازی فراهم می­کنند.

tasks : وظیفه، کوچک­ترین واحد کار است که Spark آن را به یک مجری ارسال می­کند. هر وظیفه توسط نخی در یک مجری اجرا می­شود. Spark، وظیفه­ای به ازای هر پارتیشن داده ایجاد می­کند. مجری، ممکن است یک یا چند وظیفه را بصورت همروند اجرا کند. همانطور که واضح است، درجه موازی­ سازی، توسط تعداد پارتیشن­ها تعیین می­شود.

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

بخشی عمده ای از مطالب معماری اسپارک را از وبلاگ دوست محترمم آقای نعمت پور با کمی ا اصلاح و تغییر در این پست کپی نموده ام.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *