الانتقال إلى المحتوى الرئيسي

نظرة عامة

تستعرض هذه المقالة عملية إرسال البيانات من موضوع في Kafka إلى جدول ClickHouse. سنستخدم موجز أحدث التغييرات في Wiki، والذي يوفّر دفقًا من الأحداث يمثّل التغييرات التي أُجريت على مختلف مواقع ويكيميديا. وتتضمن الخطوات ما يلي:
  1. كيفية إعداد Kafka على Ubuntu
  2. إدخال دفق من البيانات إلى موضوع في Kafka
  3. إنشاء جدول ClickHouse يشترك في الموضوع

1. إعداد Kafka على Ubuntu

  1. أنشئ مثيل Ubuntu على ec2 واتصل به عبر SSH:
  1. ثبّت Kafka (باتباع الإرشادات هنا: https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/):
  1. شغّل ZooKeeper:
  1. افتح نافذة طرفية جديدة وشغّل Kafka:
  1. افتح نافذة طرفية ثالثة وأنشئ موضوع باسم wikimedia:
  1. يمكنك التأكد من إنشائه بنجاح من خلال:

2. إدخال تدفّق Wikimedia إلى Kafka

  1. نحتاج أولًا إلى بعض الأدوات:
  1. تُرسَل البيانات إلى Kafka باستخدام أمر curl ذكي يجلب أحدث أحداث Wikimedia، ويستخلص منها بيانات JSON ثم يرسلها إلى موضوع Kafka:
  1. يمكنك “وصف” الـ موضوع:
  1. لنتحقق من أن كل شيء يعمل كما ينبغي من خلال استهلاك بعض الأحداث:
  1. اضغط على Ctrl+c لإيقاف الأمر السابق.

3. إدخال البيانات إلى ClickHouse

  1. إليك شكل البيانات الواردة:
  1. سنحتاج إلى محرك الجدول Kafka لسحب البيانات من موضوع Kafka:
  1. لسببٍ ما، يبدو أن محرك الجدول Kafka يأخذ عنوان URL العام لـ ec2 ويحوّله إلى اسم DNS الخاص، لذا اضطررت إلى إضافته إلى ملف /etc/hosts المحلي:
  1. يمكنك القراءة من جدول Kafka، ما عليك سوى تمكين إعداد:
يُفترض أن تظهر الصفوف مُحلَّلةً بشكل صحيح وفقًا للأعمدة المعرّفة في جدول wikiQueue:
  1. نحتاج إلى جدول MergeTree لتخزين هذه الأحداث الواردة:
  1. لنعرّف عرضًا ماديًا يُفعَّل عند تنفيذ عملية insert على جدول Kafka ويرسل البيانات إلى جدول rawEvents:
  1. ينبغي أن تبدأ بمشاهدة البيانات تتدفق إلى rawEvents على الفور تقريبًا:
  1. لنطّلع على بعض الصفوف:
  1. لنرَ أنواع الأحداث التي تصل:
لنعرّف عرضًا ماديًا آخر متسلسلًا مع عرضنا المادي الحالي. سنحتفظ ببعض الإحصاءات المجمّعة لكل دقيقة:
  1. سنحتاج إلى دوال -Merge لعرض النتائج:
آخر تعديل في ٢ يوليو ٢٠٢٦