عن المشروع

منصة تحليلات نقرات التجارة الإلكترونية هي مشروع هندسة بيانات متكامل يعالج ما يقارب 285 مليون حدث نقرات تجارة إلكترونية من مجموعة بيانات على Kagل تمتد من أكتوبر إلى نوفمبر 2019. ## نظرة عامة تستهلك المنصة بيانات الأحداث الخام بتنسيق CSV (حوالي 14 جيجابايت) في مستودع كائنات متوافق مع S3 (MinIO)، وتشغل تحليلات دفعية عبر Apache Spark، وتنفيذ بث حي عبر Kafka و Spark Structured Streaming، وتنفيذ مهام Hadoop MapReduce، وتقدم النتائج عبر واجهة برمجة تطبيقات FastAPI إلى لوحة تحكم أمامية مبنية بـ React. ## مكونات البنية **التجميع والتخزين:** - MinIO (تخزين كائنات متوافق مع S3) يحتفظ بملفات CSV الخام ومخرجات Parquet - PostgreSQL 16.3 يخزن مؤشرات الأداء الرئيسية المجمعة والنتائج الجاهزة للاستعلام - Redis 7.4.1 يوفر طبقة التخزين المؤقت - Apache Kafka 3.9 (وضع KRaft) يعمل كوسيط رسائل للبيانات المتدفقة **المعالجة:** - Apache Spark 3.5 يتولى المعالجة الدفعية ETL بخمس وظائف PySpark: حساب مؤشرات الأداء اليومية، تحليل воронka، كشف التخلي عن عربات التسوق، تصنيف ترابط المنتجات، وإعداد البيانات لـ MapReduce - Apache Hadoop 3.4.1 يعمل على YARN Streaming لتنفيذ وظيفتي MapReduce (عد الأحداث حسب الفئة وتجميع الإيرادات حسب العلامة التجارية) - يستهلك Spark Structured Streaming من Kafka، ويجمع الجلسات النشطة كل 5 ثوانٍ ويقوم بحقن محدّث (upsert) في PostgreSQL **التنسيق وواجهة برمجة التطبيقات:** - Apache Airflow 2.9.3 ينسق خط الأنابيب الدفعي الكامل كـ DAG - FastAPI (مع asyncpg) يكشف نقاط نهاية REST للوحة التحكم - قوالب Terraform تغطي نشر AWS و GCP **الواجهة الأمامية:** - React 18.3 مع TypeScript و Tailwind CSS و Recharts يعرض أربع صفحات: - نظرة عامة: بطاقات مؤشرات الأداء ورسم بياني للاتجاهات اليومية - تحليل воронka: تدفق العرض إلى العربة إلى الشراء والتخلي حسب الفئة - تحليلات المنتجات: أفضل المنتجات والعلامات التجارية والفئات - المراقبة المباشرة: تتبع الجلسات في الزمن الحقيقي عبر Server-Sent Events ## خط أنابيب البيانات 1. **التحليلات الدفعية**: يُقرأ ملف CSV الخام من MinIO؛ تُحسب المقاييس اليومية (الأحداث، المستخدمين، الإيرادات، معدل التحويل)، وأفضل المنتجات/العلامات التجارية/الفئات، وتُكتب في PostgreSQL. وظيفة منفصلة تحسب معدلات воронka لكل فئة، وتكشف التخلي عن العربات، وتحسبscores lift ترابط المنتجات (عينة بنسبة 10% للأداء). 2. **MapReduce**: تُحوّل ملفات Parquet المعدة إلى CSV وتُرفع إلى HDFS، حيث تقوم مهام Hadoop Streaming بعد الأحداث حسب الفئة/event_type ومجموع الإيرادات حسب العلامة التجارية. 3. **البث الحي**: يُعيد منتج Kafka تشغيل ملف CSV بسرعة قابلة للتكوين (افتراضي 200 حدث/ثانية). يستهلك مستهلك Spark Streaming من Kafka ويجمع الجلسات النشطة في دفعات مصغرة مدتها 5 ثوانٍ ويحفظها في جدول `live_sessions`. ## النشر تشغيل جميع الخدمات الـ 13 عبر Docker Compose. المتطلبات المسبقة تشمل Docker Desktop >= 4.30 مع 16 جيجابايت ذاكرة عشوائية على الأقل و 30 جيجابايت مساحة قرص. يحتاج مستخدمو Windows إلى WSL2 مع 12 جيجابايت ذاكرة على الأقل. يحتوي ملف Makefile على أهداف لتشغيل الخدمات، ورفع البيانات، وتنفيذ خطوط الأنابيب، وتشغيل الاختبارات. عناوين الوصول بعد بدء التشغيل: لوحة التحكم (منفذ 3000)، وثائق FastAPI (منفذ 8000)، Airflow (منفذ 8080)، MinIO Console (منفذ 9001)، واجهة رئيس Spark (منفذ 8081)، HDFS NameNode (منفذ 9870)، و YARN (منفذ 8088). ## هيكل المستودع تتضمن المجلدات الرئيسية `spark/jobs/` لوظائف PySpark الدفعية الخمس، و `spark/streaming/` لمستهلك Kafka، و `kafka/producer/` لمنتج إعادة التشغيل، و `api/` لخدمة FastAPI مع نقاط نهاية مصوبة، و `frontend/` لتطبيق React، و `hadoop/mapreduce/` لبرامج وظائفStreaming، و `airflow/dags/` للتنسيق، و `terraform/` لقوالب البنية sebagai Code، و `docker/` لتعريفات خدمات Hadoop و Kafka. الترخيص: MIT