موضوع مقاله: آپاچی اسپارک | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # آپاچی اسپارک | مقدمه: این نرم‌افزار در ابتدا توسط دانشگاه کالیفرنیا، برکلی توسعه داده می‌شد که بعدها کد آن به بنیاد نرم‌افزار آپاچی هدیه گردید که از آن زمان توسط آن‌ها نگه‌داری می‌شود. | ## بخش 1: آپاچی اسپارک | اسپارک یک رابط برنامه‌نویسی کاربردی برای برنامه‌نویسی تمام خوشه‌ها با موازی‌سازی داده‌های ضمنی و تحمل خطا فراهم می‌کند. اسپارک از حافظه اصلی برای نگهداری داده‌های برنامه استفاده می‌کند که این امر باعث سریعتر اجرا شدن برنامه‌ها می‌شود (برخلاف مدل نگاشت/کاهش که از دیسک به عنوان مکان ذخیره‌سازی داده‌های میانی استفاده می‌کند). همچنین یکی دیگر از مواردی که باعث افزایش کارایی اسپارک می‌شود، استفاده از مکانیسم حافظه نهان هنگام استفاده از داده‌هایی است که قرار است دوباره در برنامه استفاده شوند. یک الگوریتم برای پیاده‌سازی در مدل نگاشت/کاهش، ممکن است به چندین برنامه مجزا تقسیم شود و در هنگام اجرا هر بار باید داده‌ها از دیسک خوانده شده، پردازش شوند و دوباره در دیسک نوشته شوند. اما با استفاده از مکانیسم حافظه نهان در اسپارک، داده‌ها یکبار از دیسک خوانده می‌شوند و در حافظه اصلی کَش می‌شوند و عملیات‌های متفاوت بروی آن اجرا می‌شود. در نتیجه استفاده از این روش نیز باعث کاهش چشمگیر سربار ناشی از ارتباط با دیسک در برنامه‌ها و بهبود کارایی می‌شود. | ## بخش 2: آپاچی اسپارک | مولفه‌های اسپارک Spark Core هسته اسپارک حاوی عملیات‌های اولیه اسپارک از جمله اجزای موردنیاز برای زمان‌بندی وظایف، مدیریت حافظه، مقابله با خطا، تعامل با سیستم ذخیره‌سازی و … می‌باشد. هسته اسپارک همچنین محل توسعه APIهایی می‌باشد کهRDDها را تعریف می‌کنند و RDDها مفهوم اصلی برنامه‌نویسی اسپارک می‌باشند. RDDها نشانگر مجموعه‌ای از آیتم‌ها هستند که بر روی گره‌های محاسباتی متعدد توزیع شده و می‌توان آن‌ها را به صورت موازی پردازش کرد. علاوه بر ارائه یک رابط کاربری SQL برای اسپارک، اسپارک SQL توسعه دهندگان را قادر می‌سازد تا پرس‌وجوهای SQL را با عملیات‌های تغییر داده‌ها بروی RDDها که در پایتون، جاوا و اسکالا پشتیبانی می‌شود، ترکیب کرده و در یک برنامه پرس‌جوهای SQL را با تحلیل‌های پیچیده منسجم کرد. این انسجام نزدیک با محیط پردازشی ارائه شده توسط اسپارک، اسپارک SQLرا از سایر ابزارهای انبار داده متن باز متمایز می‌کند. از نمونه‌های جریان داده‌ها می‌توان به فایل‌های لاگ ایجاد شده توسط سرورهای وب یا مجموعه پیام‌های حاوی به روز رسانی وضعیت ارسال شده توسط کاربران یک وب سرویس یا در شبکه‌های اجتماعی نظیر ارسال کردن یک پست اشاره کرد. | ## بخش 3: آپاچی اسپارک | این مؤلفه APIهایی را برای تغییر جریان‌های داده که با APIهای مربوط به RDDهای موجود در هسته اسپارک همخوانی دارد، ارائه می‌دهد و این امر موجب تسهیل توسعه برنامه برای توسعه‌دهندگان و سوییچ بین برنامه‌هایی که داده‌ها را در حافظه اصلی، بر روی دیسک یا در زمان واقعی پردازش می‌کنند، می‌شود. در معماری توسعه این APIها، به منظور برخورداری از قابلیت تحمل خطا، بهره‌وری بالا و مقیاس پذیری، همانند مؤلفه هسته اسپارک به نکات مربوط به توسعه سیستم‌های توزیع شده توجه شده‌است. MLlib انواع مختلفی از الگوریتم‌های یادگیری ماشین از جمله طبقه‌بندی، تحلیل رگرسیون، خوشه‌بندی و پالایش گروهی را ارائه می‌دهد و همچنین از قابلیت‌های مثل ارزیابی مدل و ورود داده‌ها پشتیبانی می‌کند. MLlib همچنین ساختارهای سطح پایین یادگیری ماشین مثل الگوریتم بهینه‌سازی گرادیان نزولی را فراهم می‌آورد. | ## جمع‌بندی | تمام این روش‌ها با منظور اجرا کردن این برنامه‌ها در سطح کلاستر اسپارک طراحی شده‌اند.