ما هو Apache Spark؟
Apache Spark نظام معالجة موزع مفتوح المصدر يُستخدم في أعباء عمل البيانات الكبيرة. هذه الخدمة تستخدم التخزين المؤقت في الذاكرة وتنفيذ الاستعلام المحسَّن للاستعلامات التحليلية السريعة على البيانات مهما كان حجمها. وهي توفر واجهات برمجة تطبيقات التطوير في اللغات البرمجية Java وScala وPython وR، وتدعم إعادة استخدام التعليمات البرمجية عبر أحمال العمل المتعددة - المعالجة المجمعة والاستعلامات التفاعلية والتحليلات في الوقت الفعلي وتعلم الآلة ومعالجة الرسوم البيانية. ستجده مُستخدَمًا من قبل مؤسسات من أي صناعة، بما في ذلك FINRA وYelp وZillow وDataXU وUrban Institute وCrowdStrike.
ما هو تاريخ Apache Spark؟
بدأ Apache Spark في عام 2009 كمشروع بحثي في AMPLab التابع لجامعة كاليفورنيا في بيركلي، وهو تعاون يضم الطلاب والباحثين وأعضاء هيئة التدريس، ويركز على مجالات التطبيقات كثيفة البيانات. كان الهدف من Spark هو إنشاء إطار عمل جديد، محسّن للمعالجة التكرارية السريعة مثل تعلم الآلة وتحليل البيانات التفاعلي، مع الحفاظ على قابلية التوسع والتسامح مع الأخطاء في Hadoop MapReduce. نُشرت الورقة العلمية الأولى بعنوان «Spark: Cluster Computing with Working Sets» في يونيو/حزيران 2010، وكانت Spark مفتوحة المصدر بموجب ترخيص BSD. في يونيو/حزيران 2013، دخلت Spark حالة الاحتضان في مؤسسة Apache Software Foundation (ASF)، وتم تأسيسها كمشروع Apache عالي المستوى في فبراير/شباط 2014. يمكن تشغيل Spark بشكل مستقل أو على Apache Mesos أو في أغلب الأحيان على Apache Hadoop.
كيف تعمل Apache Spark؟
Hadoop MapReduce هو نموذج برمجة لمعالجة مجموعات البيانات الضخمة باستخدام خوارزمية متوازية وموزعة. يمكن للمطورين كتابة عوامل متوازية على نطاق واسع، دون الحاجة إلى القلق بشأن توزيع العمل والتسامح مع الأخطاء. ومع ذلك، فإن التحدي الذي يواجه MapReduce هو العملية المتسلسلة متعددة الخطوات التي يتطلبها تشغيل الوظيفة. مع كل خطوة، يقوم MapReduce بقراءة البيانات من المجموعة، وتنفيذ العمليات، وكتابة النتائج مرة أخرى إلى HDFS. نظرًا لأن كل خطوة تتطلب قراءة القرص وكتابته، فإن مهام MapReduce تكون أبطأ بسبب زمن انتقال الإدخال/الإخراج على القرص.
تم إنشاء Spark لمعالجة القيود المفروضة على MapReduce، من خلال إجراء المعالجة في الذاكرة، وتقليل عدد الخطوات في المهمة، وإعادة استخدام البيانات عبر عمليات متوازية متعددة. مع Spark، هناك حاجة إلى خطوة واحدة فقط حيث تتم قراءة البيانات في الذاكرة، وتنفيذ العمليات، وكتابة النتائج مرة أخرى - مما يؤدي إلى تنفيذ أسرع بكثير. يقوم Spark أيضًا بإعادة استخدام البيانات باستخدام ذاكرة التخزين المؤقت في الذاكرة لتسريع خوارزميات تعلم الآلة بشكل كبير التي تستدعي بشكل متكرر وظيفة على نفس مجموعة البيانات. تتم إعادة استخدام البيانات من خلال إنشاء DataFrames، وهو تجريد عبر Resilient Distributed Dataset (RDD)، وهي مجموعة من الكائنات التي يتم تخزينها مؤقتًا في الذاكرة، وإعادة استخدامها في عمليات Spark المتعددة. هذا يقلل بشكل كبير من وقت الاستجابة مما يجعل Spark أسرع عدة مرات من MapReduce، خاصة تشغيل تعلم الآلة والتحليلات التفاعلية.
الاختلافات الرئيسية: مقارنة Apache Spark و Apache Hadoop
بعيدًا عن الاختلافات في تصميم Spark وHadoop MapReduce، وجدت العديد من المؤسسات أن أطر البيانات الضخمة هذه متكاملة، حيث تستخدمها معًا لحل تحدٍ تجاري أوسع.
Hadoop هو إطار مفتوح المصدر يحتوي على نظام نظام الملفات الموزّعة لـ Hadoop (HDFS) كمخزن، وYARN كطريقة لإدارة موارد الحوسبة المستخدمة في التطبيقات المختلفة، وتنفيذ نموذج برمجة MapReduce كمحرك تنفيذ. في تطبيق Hadoop النموذجي، يتم أيضًا نشر محركات تنفيذ مختلفة مثل Spark وTez وPresto.
Spark هو إطار عمل مفتوح المصدر يركز على الاستعلام التفاعلي وتعلم الآلة وأعباء العمل في الوقت الفعلي. لا يحتوي على نظام تخزين خاص به، ولكنه يدير تحليلات على أنظمة تخزين أخرى مثل HDFS أو المتاجر الشهيرة الأخرى مثل Amazon Redshift وAmazon S3، وCouchbase وCassandra وغيرها. Spark on Hadoop تستخدم YARN لمشاركة مجموعة مشتركة ومجموعة بيانات مثل محركات Hadoop الأخرى، مما يضمن مستويات ثابتة من الخدمة والاستجابة.
ما هي فوائد Apache Spark؟
هناك العديد من فوائد Apache Spark لجعلها واحدة من أكثر المشاريع نشاطًا في نظام Hadoop البيئي. وتشمل ما يلي:
السرعة
من خلال التخزين المؤقت في الذاكرة وتنفيذ الاستعلام المحسّن، يمكن لـ Spark تشغيل استعلامات تحليلية سريعة مقابل البيانات من أي حجم.
مناسب للمطوِّرين
يدعم Apache Spark بشكل أصلي كلاً من Java وScala وPython وR مما يعطيك عدة لغات لبناء تطبيقاتك. تعمل واجهات برمجة التطبيقات هذه على تسهيل الأمر على المطورين، لأنها تخفي تعقيد المعالجة الموزعة وراء عوامل تشغيل بسيطة وعالية المستوى تقلل بشكل كبير من كمية التعليمات البرمجية المطلوبة.
أعباء عمل متعددة
يأتي Apache Spark مع القدرة على تشغيل أحمال عمل متعددة، بما في ذلك الاستعلامات التفاعلية والتحليلات في الوقت الفعلي وتعلم الآلة ومعالجة الرسوم البيانية. يمكن لتطبيق واحد الجمع بين أعباء العمل المتعددة بسلاسة.
ما هي أعباء عمل Apache Spark؟
يتضمن إطار Spark:
- Spark Core كأساس لمنصة التشغيل
- Spark SQL للاستعلامات التفاعلية
- Spark Streaming للتحليلات في الوقت الفعلي
- Spark MLlib لتعلم الآلة
- Spark GraphX لمعالجة الرسم البياني
Spark Core
Spark Core هو أساس منصة التشغيل. وهي مسؤولة عن إدارة الذاكرة واستعادة الأخطاء وجدولة المهام وتوزيعها ومراقبتها والتفاعل مع أنظمة التخزين. يتم عرض Spark Core من خلال واجهات برمجة التطبيقات (APIs) المصممة لـ Java وScala وPython وR. تخفي واجهات برمجة التطبيقات هذه تعقيد المعالجة الموزعة وراء مشغلين بسيطين رفيعي المستوى.
MLlib
Machine Learning
Spark تتضمن MLlib، وهي مكتبة من الخوارزميات للتعامل مع تعلم الآلة على البيانات على نطاق واسع. يمكن تدريب نماذج تعلم الآلة من قبل علماء البيانات باستخدام R أو Python على أي مصدر بيانات Hadoop، وحفظها باستخدام MLlib، واستيرادها إلى مسار قائم على Java أو Scala. تم تصميم Spark لإجراء عمليات حسابية سريعة وتفاعلية تعمل في الذاكرة، مما يتيح تشغيل تعلم الآلة بسرعة. تتضمن الخوارزميات القدرة على القيام بالتصنيف والتراجع والتجميع والتصفية التعاونية وتعدين الأنماط.
Spark Streaming
في الوقت الفعلي
Spark Streaming هو حل في الوقت الفعلي يعزز قدرة الجدولة السريعة لـ Spark Core لإجراء تحليلات البث. فهو يستوعب البيانات على دفعات صغيرة، ويتيح التحليلات على تلك البيانات باستخدام نفس كود التطبيق المكتوب لتحليلات البيانات المُجمعة. يعمل ذلك على تحسين إنتاجية المطورين، لأنه يمكنهم استخدام نفس الكود للمعالجة المجمعة ولتطبيقات البث في الوقت الفعلي. يدعم Spark Streaming البيانات من Twitter Kafka وFlume وHDFS وZeroMQ والعديد من البيانات الأخرى الموجودة في نظام Spark Packages البيئي.
Spark SQL
استعلامات تفاعلية
Spark SQL هو محرك استعلام موزع يوفر استعلامات تفاعلية بزمن انتقال منخفض يصل إلى 100 مرة أسرع من MapReduce. وهو يتضمن مُحسِّنًا قائمًا على التكلفة وتخزينًا عموديًا وتوليد الأكواد للاستعلامات السريعة، مع التوسع إلى آلاف العقد. يمكن لمحللي الأعمال استخدام SQL القياسية أو لغة Hive Query للاستعلام عن البيانات. يمكن للمطورين استخدام واجهات برمجة التطبيقات المتوفرة في Scala وJava وPython وR. وهي تدعم العديد من مصادر البيانات الجاهزة بما في ذلك JDBC وODBC وJSON وHDFS وHive وORC وParquet. يمكن العثور على المتاجر الشهيرة الأخرى - Amazon Redshift، وAmazon S3، وCouchbase، وCassandra، وMongoDB، وSalesforce.com، وElasticsearch، والعديد من المتاجر الأخرى من النظام البيئي لخدمة Spark Packages.
GraphX
معالجة الرسم البياني
Spark GraphX هو إطار معالجة الرسم البياني الموزع المبني على Spark. يوفر GraphX ETL والتحليل الاستكشافي وحساب الرسم البياني التكراري لتمكين المستخدمين من إنشاء بنية بيانات الرسم البياني وتحويلها بشكل تفاعلي على نطاق واسع. تأتي مع واجهة برمجة تطبيقات مرنة للغاية ومجموعة مختارة من خوارزميات الرسم البياني الموزعة.
ما هي حالات استخدام Apache Spark؟
Spark هو نظام معالجة موزع للأغراض العامة يستخدم لأحمال عمل البيانات الضخمة. لقد تم نشره في كل نوع من حالات استخدام البيانات الضخمة لاكتشاف الأنماط وتوفير رؤية في الوقت الفعلي. تتضمن أمثلة حالات الاستخدام ما يلي:
الخدمات المالية
يُستخدم Spark في الخدمات المصرفية للتنبؤ بتقلب العملاء والتوصية بمنتجات مالية جديدة. في الخدمات المصرفية الاستثمارية، يتم استخدام Spark لتحليل أسعار الأسهم للتنبؤ بالاتجاهات المستقبلية.
الرعاية الصحية
تُستخدم Spark لبناء رعاية شاملة للمرضى، من خلال إتاحة البيانات للعاملين الصحيين في الخطوط الأمامية لكل تفاعل مع المريض. يمكن أيضًا استخدام Spark للتنبؤ/التوصية بعلاج المريض.
التصنيع
يُستخدم Spark للتخلص من وقت تعطل المعدات المتصلة بالإنترنت، من خلال التوصية بموعد إجراء الصيانة الوقائية.
البيع بالتجزئة
يتم استخدام Spark لجذب العملاء والحفاظ عليهم من خلال الخدمات والعروض المخصصة.
كيف يعمل نشر Apache Spark في السحابة؟
يُعد Spark عبء عمل مثاليًا في السحابة، لأن السحابة توفر الأداء وقابلية التوسع والموثوقية والتوافر ووفورات ضخمة في النطاق. وجدت أبحاث ESG أن 43% من المستجيبين يعتبرون السحابة بمثابة النشر الأساسي لـ Spark. تتمثل أهم الأسباب التي تجعل العملاء ينظرون إلى السحابة كميزة لـ Spark في وقت النشر الأسرع، والتوافر الأفضل، وتحديثات الميزات/الوظائف الأكثر تكرارًا، والمزيد من المرونة، والمزيد من التغطية الجغرافية، والتكاليف المرتبطة بالاستخدام الفعلي.
ما هي عروض AWS لـ Apache Spark؟
Amazon EMR هو أفضل مكان لنشر Apache Spark في السحابة، لأنه يجمع بين تكامل واختبار دقة توزيعات Hadoop & Spark التجارية مع حجم السحابة وبساطتها وفعاليتها من حيث التكلفة. تتيح لك هذه الخدمة تشغيل مجموعات Spark في دقائق دون الحاجة إلى توفير العقدة أو إعداد المجموعة أو تكوين Spark أو ضبط المجموعة. تتيح لك EMR توفير واحد أو مئات أو آلاف من مثيلات الحوسبة في دقائق. يمكنك استخدام التحجيم التلقائي لجعل EMR تقوم تلقائيًا بتوسيع مجموعات Spark الخاصة بك لمعالجة البيانات من أي حجم، والتراجع عند اكتمال مهمتك لتجنب الدفع مقابل السعة غير المستخدمة. يمكنك خفض فاتورتك من خلال الالتزام بمدة محددة، وتوفير ما يصل إلى 75% باستخدام مثيلات Amazon EC2 المحجوزة، أو تشغيل المجموعات الخاصة بك على سعة حوسبة AWS الاحتياطية وتوفير ما يصل إلى 90% باستخدام EC2 Spot.
ابدأ مع Apache Spark على AWS من خلال إنشاء حساب اليوم.