آپاچی اسپارک ابزاری برای مدیریت بیگ دیتا
- 1399/11/8
- 1530
- برنامه نویسی
آپاچی اسپارک راهکاری جدید برای حل مسائل بیگ دیتا
امروزه تقریباً هر سازمانی به طور گسترده از دادههای کلان برای دستیابی به برتری رقابتی در بازار استفاده میکند و خلق راهکارهای جدید و ابزارهای قدرتمند جهت مدیریت داده های بزرگ کمک بسیار شایانی به متخصصین بیگ دیتا و مدیران سازمان ها در تحلیل هرچه بهتر داده ها و تصمیم گیری های درست خواهد کرد.
در مقاله های قبلی یکی از ابزارهای قدرتمند در این حوزه به نام آپاچی هدوپ را به طور کامل مورد بررسی قرار دادیم در این مقاله یکی دیگر از محصولات شرکت آپاچی به نام اسپارک را معرفی خواهیم کرد.
آپاچی اسپارک یک Engine بسیار قدرتمند، برای پردازش دادههای بزرگ به صورتِ توزیعشده است که قابلیت پردازش داده ها به صورت Parallel یا موازی روی چندین کامپیوتر به صورت خودکار و همزمان را داراست.
مهم ترین نکته در فناوری Spark مدیریت داده ها به صورت Real Time می باشد و همچنین با پردازش داده ها در Ram سرعت پردازش را بالا برده و موجب افزایش قدرت محاسباتی می شود.
موتور Spark با ارائه API برای توسعه دهندگان وظیفه برنامه نویسی را از دوش آنها برداشته و کار آنها را بسیار آسان کرده است و نیازی نیست برای استفاده از سرویس های این سرور به صورت صفر تا صد کدنویسی انجام شود ، فقط کافی است تکنیک های استفاده از API را بلد باشیم.
معماری آپاچی اسپارک
اسپارک یک سامانه پردازش کلاستری همه منمظوره و سریع می باشد که از پنج مولفه اصلی تشکیل شده است.
1) مولفه MLIP : این مولفه از APIهای یادگیری ماشین (ML) درون کتابخانه اسپارک می باشد که بستر را برای پیاده سازی الگوریتم های یادگیری ماشین مانند کلاسترینگ ، رگراسیون و بهینه ساز فراهم می کند.
2) GraphX : کتابخانه ای برای پردازش گرافها و انجام پردازشهای موازی بروی دادههای گراف می باشد و ما را قادر میسازد تا گرافهای جهتدار را با نسبت دادن مشخصات به هر گره و یال ایجاد کنیم.
3) Spark Streaming : اسپارک استریمینگ توسعه یافته از Engine اصلی اسپارک می باشد که پردازش جریان دادهها را فراهم میآورد. این جریان داده ها میتوانند فایلهای لاگ ایجاد شده توسط سرورهای وب یا مجموعه داده هایی که حاوی به روز رسانی وضعیت ارسال شده توسط کاربران یک وب سرویس هستند باشند.
4) Spark SQL : اسپارک SQL فریمورکی برای کار کردن با دادههای ساختیافته میباشد. این سیستم دسترسی به کوئری ها و دادهها را از طریق SQL و همچنین آپاچی هایو، امکانپذیر ساخته و از منابعی همچون جداول هایو، ساختار دادههای Parquet،CSV و JSON پشتیبانی میکند.
5) Spark Core : هسته اصلی اسپارک عملیات مهمی همچون تقسیم و زمانبدی وظایف ، fault tolerance یا مواجهه با خطا ، تعامل با سیستم ذخیرهسازی را انجام میدهد و محلی برای توسعه API ها جهت دسترسی به داده های مختلف می باشد.
نحوه عملکرد آپاچی اسپارک
اسپارک پنج موجودیت اصلی دارد که استراتژی این فناوری را پیاده سازی می کنند.
1) ابزار راه اندازی یا همان Driver : بخش اصلی برنامه و عامل راه اندازی اسپارک درایور می باشد که Task یا وظایف را بین گره های کارگر سرور توزیع کرده و بر آنها نظارت می کند.
- تعامل و مذاکره با کلاستر مننجر جهت تخصیص منابع به گره های کارگر
- ترجمه و تفسیر وظایف به Direct Acyclic Graph
- مدیریت بر زمانبندی و اجرای وظایف بین گره ها
- تقسیم گراف ها به گام های مختلف و اختصاص عملیات Changing و Action به گام ها
2) مدیریت خوشه ها یا Cluster Manager : همانطور که از نام آن پیداست این بخش وظیفه مدیریت خوشه ها را بر عهده دارد بطوریکه Driver با اتصال به این قسمت درخواست تخصیص منابع می کند و کلاستر مننجر این درخواست را به دو زیرمجموعه خود یعنی Yarn , Messon انتقال می دهد هر یک از این بخش ها یک مدیر هستند و بر اساس شرایط و نوع درخواست ، آنرا رد یا تائید می کنند و سپس منابع به درایور اختصاص داده می شود.
3) گره های کارگر یا Workers : در معماری اسپارک گره هایی با عنوان برده یا کارگر وجود دارند که موظف به انجام وظایف محوله هستند و اختصاص منابع و عملیات ذخیره سازی را بر عهده دارند.
4) بخش اجرا یا همان Execute : درون هر گره کارگرد یک مجری جهت اجرای وظایف وجود دارد که به آن Execute گفته می شود. تعداد مجری ها درون گره به تعداد هسته گره ها بستگی دارد. هر مجری مسئول موارد ذیل می باشد.
- اجرای وظایف محول شده توسط درایور
- کش کردن نتایج محاسبات در حافظه Heap
- تعامل با سیستم های ذخیره سازی
- تعامل با درایور و ارسال نتیجه وظایف به آن
5) Task یا همان وظیفه : هر تسک توسط اسپارک به Execute ارسال می شود و نهایتا توسط یک گره اجرا شده و به پایان می رسد. هر مجری قادر است چندین تسک را به صورت موازی و همروند اجرا کند.
اسپارک میتواند از سیستمهای مختلفِ ذخیرهسازی توزیع شده (مانند HDFS یا Cassandra) استفاده کند. اسپارک در مقایسه با فناوری هدوپ (Hadoop)، میتواند بسیار سریعتر باشد.
اسپارک همچنین از زبان های برنامه نویسی متعددی پشتیبانی می کند. Java، Python، R، Scala و همچنین نرم افزار SQL از زبان هایی است که میتوانید، به وسیله آن، با دادههای موجود در اسپارک کار کنید.