- Big Data:
السمات الأساسية الثلاثة للبيانات الضخمة Big data التي تتفق فيها جميع المراجع والتي تسمى 3 Vs :
1- الحجم (Volume): عندما نتحدث عن الحجم الهائل للبيانات، تزيد عن رتبة petabyte (1015) .
2- التنوع (Variety): مصادر مختلفة بأشكال مختلفة: مهيكلة (structured) نصف مهيكلة (semi structured) أو غير مهيكلة (unstructured)
3- السرعة (Velocity): تمثل تغير معدل البيانات، وهذا واضح لمعالجة التدفق (stream processing).
هذه الشروط لا تتوفر إلا في منصات ضخمة مثل YouTube, Facebook, …
- مشاكل في معالجة البيانات الضخمة Big data
- عدم التجانس وعدم الاكتمال (Heterogeneity and Incompleteness):
من المفترض أن تعمل أنظمة الحاسوب مع بيانات متجانسة وهو أمر صعب عندما نتعامل مع البيانات الضخمة التي تأتي من مصادر وأشكال مختلفة.
- القياس (Scale)
البيانات تزيد بشكل كبير وسريع مقارنة مع قدرات معالجة الحاسوب.
- الخصوصية (Privacy)
يمثل دمج البيانات من مصادر متعددة تحديا كبيراً للخصوصية.
- نبذة عن Apache Hadoop
برمجية مفتوحة المصدر (open source) مكتوبة بلغة Java تعالج مجموعات البيانات الكبيرة بطريقة موزعة. نظام Hadoop على درجة عالية من التسامح مع الخطأ ولا تعتمد على العتاد Hardware لتحقيق درجة عالية من التوافر (Availability). تم تصميم هذه البرمجية برؤية للبحث عن الإخفاقات في طبقة التطبيق. إنه شكل للأغراض العامة للمعالجة الموزعة يحتوي على عدة مكونات:
- Hadoop Distributed File System (HDFS): يخزن الملفات ويدير تخزينها بمجموعات كبيرة من البيانات عبر Hadoop Cluster. يستطيع Hadoop التعامل مع كل من البيانات المهيكلة وغير المهيكلة (structured and unstructured)
- YARN: هي اختصار Yet Another Resource Negotiator مسؤول عن جدولة أوقات تشغيل التطبيق.
- MapReduce: خوارزمية مشهورة تستخدم في البرمجة التفرعية Parallel programmingبحيث توزع البيانات على عدة أجزاء ثم تجمع النتائج.
- Hadoop Common (Hadoop Core): يوفر الدعم لجميع المكونات الأخرى التي يحتوي عليها مجموعة من المكتبات والأدوات المساعدة الشائعة التي تعتمد عليها جميع الوحدات الأخرى.
- نبذة عن Apache Spark
محرك تحليلات (analytics engine)مفتوح المصدر بلغة Scala لمعالجة البيانات على نطاق واسع.
يوفرSpark واجهة لبرمجة العناقيد (Clusters) مع توزيع البيانات بشكل تفرعي (data parallelism) والتسامح مع الخطأ (fault tolerance). تم التطوير في جامعة كاليفورنيا ثم تم التبرع بالكود المصدر في وقت لاحق لمؤسسة Apache Software Foundation والتي حافظت عليه منذ ذلك الوقت.
هناك خمس مكونات رئيسية:
- Apache Spark Core: وهي مسؤولة عن وظائف مثل الجدولة وعمليات الإدخال والإخراج وإرسال المهام وما إلى ذلك.
- Spark SQL: يستخدم هذا لجمع معلومات حول البيانات المنظمة وكيفية معالجة البيانات.
- Spark Streaming: يتيح هذا المكون معالجة تدفقات البيانات الحية (live data streams).
- Machine Learning Library: الهدف من هذا المكون هو قابلية التوسع وجعل التعلم الآلي أكثر سهولة.
- GraphX: يحتوي هذا على مجموعة من واجهات برمجة التطبيقات (APIs) المستخدمة لتسهيل مهام تحليلات الرسم البياني.
- مقارنة بينApache Hadoop و Apache Spark
Hadoop | Spark | |
سرعة المعالجة | يقوم نموذج MapReduce من Hadoop بالقراءة والكتابة من القرص (Disk)، مما يؤدي إلى إبطاء سرعة المعالجة. | يقلل Spark عدد دورات القراءة / الكتابة على القرص ويخزن البيانات الوسيطة في الذاكرة، وبالتالي سرعة معالجة أسرع. |
الاستخدام | تم تصميم Hadoop للتعامل مع معالجة الدُفعات (batch) بكفاءة. | تم تصميم Spark للتعامل مع البيانات في الوقت الحقيقي (Real time) بكفاءة. |
التكلفة | Hadoop هو خيار رخيص عند مقارنته بغيره | يتطلب Spark الكثير من ذاكرة الوصول العشوائي (RAM) للتشغيل في الذاكرة، وبالتالي زيادة العناقيد (Clusters) وتؤدي إلى زيادة التكلفة. |
التعلم الالي | يمكن أن تكون أجزاء البيانات في Hadoop كبيرة جدًا ويمكن أن تؤدي إلى اختناقات. وبالتالي، فهو أبطأ من Spark. | Spark أسرع بكثير لأنه يستخدم MLib للحسابات ولديه معالجة داخل الذاكرة. |
قابلية التوسع | Hadoop قابل للتطوير بسهولة عن طريق إضافة العقد والقرص للتخزين. يدعم عشرات الآلاف من العقد. | من الصعب جدًا توسيعه لأنه يعتمد على ذاكرة الوصول العشوائي لإجراء العمليات الحسابية. |
البيانات | باستخدام Hadoop MapReduce، يمكن للمطور معالجة البيانات فقط في وضع الدُفعات فقط. | يمكن لـ Spark معالجة البيانات في الوقت الفعلي (Real time)ومن الأحداث في الوقت الفعلي مثل Twitter وFacebook. |
سهولة الاستخدام | إنه أكثر صعوبة في الاستخدام. | إنه أكثر سهولة في الاستخدام. |
بقلم المهندس عماد عوده