آپاچی اسپارک چیست؟
آپاچی اسپارک یک سیستم پردازش توزیعشده و متنباز است که برای حجمهای کاری کلان داده استفاده میشود. از حافظه نهان درون حافظه و اجرای پرسوجوهای بهینهشده برای پرسوجوهای تحلیلی سریع بر روی دادههایی با هر اندازه استفاده میکند. رابطهای برنامهنویسی کاربردی (API) را در جاوا، اسکالا، پایتون و آر ارائه میدهد و از استفاده مجدد کد در چندین حجم کاری پشتیبانی میکند—پردازش دستهای، پرسوجوهای تعاملی، تحلیلهای بلادرنگ، یادگیری ماشین و پردازش گراف. شما آن را در سازمانهایی از هر صنعتی، از جمله در FINRA، Yelp، Zillow، DataXu، موسسه شهری و CrowdStrike، خواهید یافت.
تاریخچه آپاچی اسپارک چیست؟
آپاچی اسپارک در سال ۲۰۰۹ به عنوان یک پروژه تحقیقاتی در آزمایشگاه AMP دانشگاه کالیفرنیا، برکلی، یک همکاری شامل دانشجویان، محققان و اساتید، با تمرکز بر حوزههای کاربردی داده-محور، آغاز شد. هدف اسپارک ایجاد یک چارچوب جدید، بهینهشده برای پردازش تکراری سریع مانند یادگیری ماشین و تحلیل دادههای تعاملی، ضمن حفظ مقیاسپذیری و تحمل خطای Hadoop MapReduce بود. اولین مقاله با عنوان “اسپارک: محاسبات خوشهای با مجموعههای کاری” در ژوئن ۲۰۱۰ منتشر شد و اسپارک تحت مجوز BSD متنباز شد. در ژوئن ۲۰۱۳، اسپارک وضعیت انکوباسیون را در بنیاد نرمافزار آپاچی (ASF) وارد کرد و در فوریه ۲۰۱۴ به عنوان یک پروژه سطح بالای آپاچی تثبیت شد. اسپارک میتواند بهصورت مستقل، روی آپاچی مزوس یا اغلب روی آپاچی هدوپ اجرا شود.
آپاچی اسپارک چگونه کار میکند؟
Hadoop MapReduce یک مدل برنامهنویسی برای پردازش مجموعههای داده بزرگ با یک الگوریتم موازی و توزیعشده است. توسعهدهندگان میتوانند اپراتورهای بهشدت موازیشده بنویسند، بدون اینکه نگران توزیع کار و تحمل خطا باشند. با این حال، یک چالش برای MapReduce فرآیند چند مرحلهای متوالی است که برای اجرای یک کار طی میکند. با هر مرحله، MapReduce دادهها را از خوشه میخواند، عملیات را انجام میدهد و نتایج را به HDFS بازمیگرداند. از آنجایی که هر مرحله به خواندن و نوشتن دیسک نیاز دارد، کارهای MapReduce به دلیل تأخیر ورودی/خروجی دیسک کندتر هستند.
اسپارک برای رفع محدودیتهای MapReduce، با انجام پردازش در حافظه، کاهش تعداد مراحل در یک کار و با استفاده مجدد از دادهها در چندین عملیات موازی ایجاد شد. با اسپارک، فقط یک مرحله مورد نیاز است که در آن دادهها به حافظه خوانده میشوند، عملیات انجام میشوند و نتایج بازگردانده میشوند—که منجر به اجرای بسیار سریعتر میشود. اسپارک همچنین با استفاده از حافظه نهان درون حافظه برای تسریع قابلتوجه الگوریتمهای یادگیری ماشین که مکرراً یک تابع را روی همان مجموعه داده فراخوانی میکنند، از دادهها مجدداً استفاده میکند. استفاده مجدد از دادهها از طریق ایجاد DataFrame، یک انتزاع بر روی مجموعه دادههای توزیعشده مقاوم (RDD)، که مجموعهای از اشیاء است که در حافظه نهان میشود و در چندین عملیات اسپارک مورد استفاده مجدد قرار میگیرد، انجام میشود. این امر بهطور چشمگیری تأخیر را کاهش میدهد و اسپارک را چندین برابر سریعتر از MapReduce، بهویژه هنگام انجام یادگیری ماشین و تحلیلهای تعاملی، میکند.
تفاوتهای کلیدی: آپاچی اسپارک در مقابل آپاچی هدوپ
به غیر از تفاوتهای موجود در طراحی اسپارک و Hadoop MapReduce، بسیاری از سازمانها این چارچوبهای کلان داده را مکمل یکدیگر یافتهاند و از آنها با هم برای حل یک چالش تجاری گستردهتر استفاده میکنند.
هدوپ یک چارچوب متنباز است که سیستم فایل توزیعشده هدوپ (HDFS) را به عنوان ذخیرهسازی، YARN را به عنوان روشی برای مدیریت منابع محاسباتی مورد استفاده برنامههای مختلف و پیادهسازی مدل برنامهنویسی MapReduce را به عنوان یک موتور اجرا دارد. در یک پیادهسازی معمولی هدوپ، موتورهای اجرای مختلفی مانند اسپارک، Tez و Presto نیز مستقر میشوند.
اسپارک یک چارچوب متنباز است که بر پرسوجوهای تعاملی، یادگیری ماشین و حجمهای کاری بلادرنگ تمرکز دارد. سیستم ذخیرهسازی خاص خود را ندارد، بلکه تحلیلها را روی سیستمهای ذخیرهسازی دیگر مانند HDFS یا سایر فروشگاههای محبوب مانند آمازون ردشیفت، آمازون S3، Couchbase، Cassandra و دیگران اجرا میکند. اسپارک روی هدوپ از YARN برای اشتراکگذاری یک خوشه و مجموعه داده مشترک با سایر موتورهای هدوپ استفاده میکند و سطوح خدمات و پاسخگویی ثابت را تضمین میکند.
مزایای آپاچی اسپارک چیست؟
مزایای بسیاری برای آپاچی اسپارک وجود دارد که آن را به یکی از فعالترین پروژهها در اکوسیستم هدوپ تبدیل میکند. این مزایا عبارتند از:
- سریع: از طریق حافظه نهان درون حافظه و اجرای پرسوجوهای بهینهشده، اسپارک میتواند پرسوجوهای تحلیلی سریع را بر روی دادههایی با هر اندازه اجرا کند.
- دوستانه برای توسعهدهندگان: آپاچی اسپارک بهطور بومی از جاوا، اسکالا، آر و پایتون پشتیبانی میکند و مجموعهای از زبانها را برای ساخت برنامههای شما ارائه میدهد. این APIها کار را برای توسعهدهندگان شما آسان میکنند، زیرا پیچیدگی پردازش توزیعشده را پشت اپراتورهای ساده و سطح بالا پنهان میکنند که مقدار کد مورد نیاز را بهطور چشمگیری کاهش میدهد.
- حجمهای کاری متعدد: آپاچی اسپارک با قابلیت اجرای حجمهای کاری متعدد، از جمله پرسوجوهای تعاملی، تحلیلهای بلادرنگ، یادگیری ماشین و پردازش گراف، ارائه میشود. یک برنامه میتواند چندین حجم کاری را بهطور یکپارچه ترکیب کند.
حجمهای کاری آپاچی اسپارک چیست؟
چارچوب اسپارک شامل موارد زیر است:
- Spark Core به عنوان پایه پلتفرم
- Spark SQL برای پرسوجوهای تعاملی
- Spark Streaming برای تحلیلهای بلادرنگ
- Spark MLlib برای یادگیری ماشین
- Spark GraphX برای پردازش گراف
Spark Core
Spark Core پایه پلتفرم است. مسئول مدیریت حافظه، بازیابی خطا، زمانبندی، توزیع و نظارت بر کارها و تعامل با سیستمهای ذخیرهسازی است. Spark Core از طریق رابطهای برنامهنویسی کاربردی (API) ساختهشده برای جاوا، اسکالا، پایتون و آر در دسترس است. این APIها پیچیدگی پردازش توزیعشده را پشت اپراتورهای ساده و سطح بالا پنهان میکنند.
MLlib
یادگیری ماشین
اسپارک شامل MLlib، کتابخانهای از الگوریتمها برای انجام یادگیری ماشین بر روی دادهها در مقیاس بزرگ است. مدلهای یادگیری ماشین میتوانند توسط دانشمندان داده با آر یا پایتون بر روی هر منبع داده هدوپ آموزش داده شوند، با استفاده از MLlib ذخیره شوند و به یک خط لوله مبتنی بر جاوا یا اسکالا وارد شوند. اسپارک برای محاسبات سریع و تعاملی که در حافظه اجرا میشود، طراحی شده است و یادگیری ماشین را قادر میسازد تا بهسرعت اجرا شود. الگوریتمها شامل قابلیت انجام طبقهبندی، رگرسیون، خوشهبندی، فیلترسازی مشارکتی و استخراج الگو هستند.
Spark Streaming
بلادرنگ
Spark Streaming یک راه حل بلادرنگ است که از قابلیت زمانبندی سریع Spark Core برای انجام تحلیلهای جریانی استفاده میکند. دادهها را در دستههای کوچک دریافت میکند و تحلیلها را روی آن دادهها با همان کد برنامه نوشتهشده برای تحلیلهای دستهای فعال میکند. این امر بهرهوری توسعهدهندگان را بهبود میبخشد، زیرا میتوانند از همان کد برای پردازش دستهای و برای برنامههای جریانی بلادرنگ استفاده کنند. Spark Streaming از دادههای توییتر، کافکا، فلوم، HDFS و ZeroMQ و بسیاری دیگر که از اکوسیستم Spark Packages یافت میشوند، پشتیبانی میکند.
Spark SQL
پرسوجوهای تعاملی
Spark SQL یک موتور پرسوجوی توزیعشده است که پرسوجوهای تعاملی با تأخیر کم را تا ۱۰۰ برابر سریعتر از MapReduce ارائه میدهد. شامل یک بهینهساز مبتنی بر هزینه، ذخیرهسازی ستونی و تولید کد برای پرسوجوهای سریع، ضمن مقیاسبندی به هزاران گره است. تحلیلگران کسبوکار میتوانند از SQL استاندارد یا زبان پرسوجوی Hive برای پرسوجو از دادهها استفاده کنند. توسعهدهندگان میتوانند از APIهای موجود در اسکالا، جاوا، پایتون و آر استفاده کنند. بهطور پیشفرض از منابع داده مختلفی از جمله JDBC، ODBC، JSON، HDFS، Hive، ORC و Parquet پشتیبانی میکند. سایر فروشگاههای محبوب—آمازون ردشیفت، آمازون S3، Couchbase، Cassandra، MongoDB، Salesforce.com، Elasticsearch و بسیاری دیگر—را میتوان از اکوسیستم Spark Packages یافت.
GraphX
پردازش گراف
Spark GraphX یک چارچوب پردازش گراف توزیعشده است که بر روی اسپارک ساخته شده است. GraphX ETL، تحلیل اکتشافی و محاسبات گراف تکراری را فراهم میکند تا کاربران بتوانند بهطور تعاملی یک ساختار داده گراف را در مقیاس بزرگ بسازند و تبدیل کنند. با یک API بسیار انعطافپذیر و مجموعهای از الگوریتمهای گراف توزیعشده ارائه میشود.
موارد استفاده آپاچی اسپارک چیست؟
اسپارک یک سیستم پردازش توزیعشده با هدف کلی است که برای حجمهای کاری کلان داده استفاده میشود. در هر نوع مورد استفاده کلان داده برای شناسایی الگوها و ارائه بینش بلادرنگ مستقر شده است. موارد استفاده نمونه عبارتند از:
خدمات مالی
اسپارک در بانکداری برای پیشبینی ریزش مشتری و توصیه محصولات مالی جدید استفاده میشود. در بانکداری سرمایهگذاری، اسپارک برای تحلیل قیمت سهام برای پیشبینی روندهای آینده استفاده میشود.
مراقبتهای بهداشتی
اسپارک برای ساخت مراقبتهای جامع بیمار، با در دسترس قرار دادن دادهها برای کارکنان خط مقدم بهداشت برای هر تعامل بیمار، استفاده میشود. اسپارک همچنین میتواند برای پیشبینی/توصیه درمان بیمار استفاده شود.
تولید
اسپارک برای حذف خرابی تجهیزات متصل به اینترنت، با توصیه زمان انجام تعمیر و نگهداری پیشگیرانه، استفاده میشود.
خردهفروشی
اسپارک برای جذب و حفظ مشتریان از طریق خدمات و پیشنهادات شخصیسازیشده استفاده میشود.
نحوه استقرار آپاچی اسپارک در ابر چگونه کار میکند؟
اسپارک یک حجم کاری ایدهآل در ابر است، زیرا ابر عملکرد، مقیاسپذیری، قابلیت اطمینان، در دسترس بودن و صرفهجوییهای مقیاس عظیم را فراهم میکند. تحقیقات ESG نشان داد که ۴۳ درصد از پاسخدهندگان ابر را به عنوان استقرار اصلی خود برای اسپارک در نظر میگیرند. دلایل اصلی که مشتریان ابر را به عنوان یک مزیت برای اسپارک درک میکردند، زمان سریعتر برای استقرار، در دسترس بودن بهتر، بهروزرسانیهای مکرر ویژگی/عملکرد، انعطافپذیری بیشتر، پوشش جغرافیایی بیشتر و هزینههای مرتبط با استفاده واقعی هستند.