Skip to main content

استخدام Vector مع Kafka وClickHouse

Vector هو خط أنابيب بيانات محايد تجاه المورّد، ويمكنه القراءة من Kafka وإرسال الأحداث إلى ClickHouse. يركّز دليل البدء الخاص باستخدام Vector مع ClickHouse على حالة استخدام السجلات وقراءة الأحداث من ملف. نستخدم مجموعة بيانات GitHub النموذجية حيث تُحفَظ الأحداث في topic على Kafka. يستخدم Vector المصادر لجلب البيانات وفق نموذج push أو pull. وفي المقابل، توفّر المصبات وجهةً للأحداث. لذلك نستخدم مصدر Kafka ومصب ClickHouse. لاحظ أنه رغم دعم Kafka باعتباره Sink، فلا يتوفر مصدر لـ ClickHouse. لذلك لا يُعد Vector مناسبًا إذا كنت تريد نقل البيانات من ClickHouse إلى Kafka. يدعم Vector أيضًا تحويل البيانات. وهذا خارج نطاق هذا الدليل. ويمكن الرجوع إلى وثائق Vector إذا احتجت إلى ذلك لمجموعة بياناتك. لاحظ أن التنفيذ الحالي لمصب ClickHouse يستخدم واجهة HTTP. ولا يدعم مصب ClickHouse حاليًا استخدام مخطط JSON. ويجب نشر البيانات إلى Kafka إما بتنسيق JSON العادي أو على هيئة Strings.

الترخيص

يخضع Vector لـترخيص MPL-2.0

اجمع تفاصيل الاتصال

للاتصال بـ ClickHouse باستخدام HTTP(S)، تحتاج إلى المعلومات التالية: تتوفر تفاصيل خدمة ClickHouse Cloud الخاصة بك في ClickHouse Cloud console. حدِّد خدمة ثم انقر على Connect: اختر HTTPS. ستظهر تفاصيل الاتصال في مثال لأمر curl. إذا كنت تستخدم ClickHouse مُدارًا ذاتيًا، فسيُحدِّد مسؤول ClickHouse لديك تفاصيل الاتصال.

الخطوات

  1. أنشئ topic ‏github في Kafka، ثم أدرِج مجموعة بيانات GitHub.
تضم مجموعة البيانات هذه 200,000 صف، وتركّز على مستودع ClickHouse/ClickHouse.
  1. تأكد من إنشاء الجدول الهدف. نستخدم أدناه قاعدة البيانات الافتراضية.
  1. نزّل وثبّت Vector. أنشئ ملف الإعداد kafka.toml وعدّل القيم بما يتناسب مع مثيلات Kafka وClickHouse لديك.
بعض الملاحظات المهمة حول هذا التكوين وسلوك Vector:
  • تم اختبار هذا المثال مع Confluent Cloud. لذلك، قد لا تكون خيارات الأمان sasl.* وssl.enabled مناسبة في حالات النشر ذاتية الإدارة.
  • لا يلزم استخدام بادئة بروتوكول مع معلمة التهيئة bootstrap_servers، على سبيل المثال: pkc-2396y.us-east-1.aws.confluent.cloud:9092
  • تضمن معلمة المصدر decoding.codec = "json" تمرير الرسالة إلى مصب ClickHouse على شكل كائن JSON واحد. عند التعامل مع الرسائل بوصفها Strings واستخدام القيمة الافتراضية bytes، سيُضاف محتوى الرسالة إلى الحقل message. وفي معظم الحالات، سيتطلب ذلك معالجتها في ClickHouse كما هو موضح في دليل البدء باستخدام Vector.
  • يضيف Vector عددًا من الحقول إلى الرسائل. وفي مثالنا، نتجاهل هذه الحقول في مصب ClickHouse عبر معلمة التهيئة skip_unknown_fields = true. ويتجاهل هذا الحقول التي لا تشكّل جزءًا من مخطط الجدول الهدف. ويمكنك تعديل المخطط لديك لضمان إضافة هذه الحقول الوصفية، مثل offset.
  • لاحظ كيف يشير المصب إلى مصدر الأحداث عبر المعلمة inputs.
  • لاحظ سلوك مصب ClickHouse كما هو موضح هنا. ولتحقيق أفضل معدل نقل، قد ترغب في ضبط المعلمات buffer.max_events وbatch.timeout_secs وbatch.max_bytes. ووفقًا لتوصيات ClickHouse، ينبغي اعتبار القيمة 1000 حدًا أدنى لعدد الأحداث في أي دفعة واحدة. وفي حالات الاستخدام ذات معدل النقل المرتفع المنتظم، يمكنك زيادة المعلمة buffer.max_events. أما معدلات النقل الأكثر تقلبًا فقد تتطلب تغييرات في المعلمة batch.timeout_secs
  • تفرض المعلمة auto_offset_reset = "smallest" على مصدر Kafka أن يبدأ من بداية الـ topic، مما يضمن استهلاك الرسائل المنشورة في الخطوة (1). وقد تحتاج إلى سلوك مختلف. راجع هنا لمزيد من التفاصيل.
  1. ابدأ Vector
افتراضيًا، يلزم إجراء فحص الصحة قبل بدء عمليات الإدراج إلى ClickHouse. وهذا يضمن إمكانية إنشاء الاتصال وقراءة المخطط. أضِف VECTOR_LOG=debug في البداية للحصول على سجلات إضافية قد تكون مفيدة إذا واجهت مشكلات.
  1. أكِّد إدراج البيانات.
آخر تعديل في ٣ يوليو ٢٠٢٦