مشاركة عبر


⁧⁩استخدام MirrorMaker لتكرار مواضيع مع Apache Kafka على HDInsight⁧⁩

تعرّف على كيفية استخدام ميزة النسخ المماثل في Apache Kafka لإنشاء نُسخ متطابقة من الموضوعات في مقطع تخزين ثانوي. يمكنك تشغيل النسخ المتطابق لقاعدة البيانات كعملية مستمرة أو متقطعة، وذلك لترحيل البيانات من مجموعة إلى أخرى.

في هذه المقالة، سوف تستخدم عملية النسخ المتطابق لتكرار الموضوعات بين مجموعتي HDInsight. توجد هذه المجموعات في شبكات افتراضية مختلفة في مراكز بيانات مختلفة.

تحذير

لا يُستخدم النسخ المتطابق كوسيلة لتحقيق التسامح مع الخطأ. تختلف الإزاحة للعناصر داخل موضوع ما بين نظامي المجموعات الأساسي والثانوي، لذلك لا يمكن للعملاء استخدام الاثنين بشكل متبادل. إذا كنت قلقًا بشأن التهاون مع الخطأ، يجب تعيين النسخ المتماثل للمواضيع داخل مقطع التخزين الخاص بك. لمزيد من المعلومات، راجع «البدء باستخدام Apache Kafka على HDInsight».

كيف يعمل إنشاء النُّسخ المتطابقة من Apache Kafka

يعمل النسخ المتطابق باستخدام أداة MirrorMaker، والتي تعد جزء من Apache Kafka. تستهلك أداة MirrorMaker السجلات من الموضوعات الموجودة في المجموعة الأساسية، ثم يقوم بإنشاء نسخة محلية على المجموعة الثانوية. تستخدم أداة MirrorMaker مستهلك واحد(أو أكثر) والذي يقرأ من مقطع التخزين الأساسي ومُنتِج يكتب إلى مقطع التخزين المحلي (الثانوي).

إن إعداد النسخ المتطابق هو الأكثر فائدة لإصلاح الكوارث الناتجة من مجموعات Kafka في مناطق Azure المختلفة. لتحقيق ذلك، يتم إقران الشبكات الظاهرية الموجود عليها أنظمة المجموعات معًا.

يوضح الرسم التخطيطي التالي عملية النسخ المتطابق، وكيفية تدفق الاتصال بين أنظمة المجموعات:

رسم تخطيطي لعملية إنشاء النُّسخ المتطابقة.

يمكن أن يختلف عدد أنظمة المجموعات الأساسية والثانوية في عدد العقد والأقسام، وكذلك تختلف الإزاحات في الموضوعات. يحتفظ النسخ المتطابق بالقيمة المفتاحية المستخدمة في التقسيم، لذا يتم الاحتفاظ بترتيب السجل على أساس كل مفتاح.

النسخ المتطابق عبر حدود الشبكة

إذا كنت بحاجة إلى النسخ المتطابق بين أنظمة مجموعات Kafka في شبكات مختلفة، فإليك الاعتبارات الإضافية التالية:

  • ⁩البوابات⁧⁩: يجب أن تكون الشبكات قادرة على الاتصال على مستوى TCP‏/IP.

  • عنوان الخادم:⁧⁩يمكنك معالجة عقد المجموعة الخاصة بك باستخدام عناوين IP الخاصة بها أو أسماء المجال المؤهلة بالكامل.

    • عناوين IP⁧⁩: إذا قمت بتكوين أنظمة مجموعات Kafka لاستخدام إعلان عناوين IP، فيمكنك المتابعة في إنشاء النسخ المتطابق باستخدام عناوين IP الخاصة بعقد الوسيط، وعقد zookeeper.

    • أسماء المجالات⁧⁩: إذا لم تقم بتكوين أنظمة مجموعات Kafka لإعلان عناوين IP، يجب أن تكون أنظمة المجموعات قادرة على الاتصال ببعضها البعض باستخدام أسماء المجالات المؤهلة بالكامل (FQDN). ويتطلب هذا خادم نظام أسماء المجالات (DNS) في كل شبكة تم تكوينها لإعادة توجيه الطلبات إلى شبكات الاتصال الأخرى. عندما تقوم بإنشاء شبكة Azure الظاهرية، بدلاً من استخدام نظام أسماء المجالات التلقائي المتوفر مع الشبكة، يجب عليك تحديد خادم نظام أسماء المجالات مخصص وعنوان IP للخادم. بعد إنشاء الشبكة الظاهرية، يجب عليك بعد ذلك إنشاء جهاز Azure ظاهري، لكي يستخدم عنوان IP هذا. ثم تقوم بتثبيت وتكوين برنامج نظام أسماء المجالات DNS عليه.

    هام

    قم بإنشاء وتكوين خادم DNS المخصص قبل تثبيت HDInsight في الشبكة الافتراضية. لا يوجد تكوين إضافي مطلوب لـ HDInsight لاستخدام خادم DNS المكون للشبكة الافتراضية.

لمزيد من المعلومات حول توصيل شبكتي Azure الظاهريتين، راجع تكوين اتصال.

بنية إنشاء النُّسخ المتطابقة

تتميز هذه البنية بمجموعتين في مجموعات موارد مختلفة وشبكات افتراضية: أساسية وثانوية.

خطوات الإنشاء

  1. أنشئ مجموعتي موارد جديدة:

    مجموعة الموارد ‏‏الموقع
    مجموعة موارد Kafka الأساسية وسط الولايات المتحدة
    مجموعة موارد Kafka الثانوية North Central US
  2. إنشاء شبكة ظاهرية جديدة kafka-primary-vnet فيkafka-primary-rg. اترك الإعدادات الافتراضية.

  3. إنشاء شبكة افتراضية جديدة kafka-secondary-vnet فيkafka-secondary-rg، كما تكون مع الإعدادات الافتراضية.

  4. إنشاء مقطعي تخزين جديدين من Kafka:

    اسم شبكة نظام المجموعة مجموعة الموارد شبكة ظاهرية حساب التخزين
    مقطع التخزين الأساسي من Kafka مجموعة موارد Kafka الأساسية vnet الأساسي من kafka kafkaprimarystorage
    مقطع التخزين الثانوي من Kafka مجموعة موارد Kafka الثانوية التسجيل الثانوي من kafka vnet الثانوي من kafka
  5. إنشاء نظائر الشبكة الظاهرية. ستُنشئ هذه الخطوة نظيرتين: أحدهما منkafka-primary-vnet إلى kafka-secondary-vnet والآخر منkafka-secondary-vnet إلى kafka-primary-vnet.

    1. حدد شبكة kafka-primary-vnet الظاهرية.

    2. ضمن الإعدادات، حدد Peerings.

    3. حدد ⁧⁩إضافة⁧⁩.

    4. على شاشة إضافة نظير، أدخل التفاصيل كما هو موضح في لقطة شاشة التالية.

      لقطة شاشة تظهر أن H D Insight يضيف Kafka شبكة افتراضية إلى النظير.

تكوين إعلانات IP

قم بتكوين إعلانات IP لتمكين العميل من الاتصال باستخدام عناوين IP الوسيط، بدلاً من أسماء المجال.

  1. انتقل إلى لوحة معلومات Apache Ambari لمقطع التخزين الأساسي: https://PRIMARYCLUSTERNAME.azurehdinsight.net.

  2. حدد «خدمات»>Kafka. حدد علامة التبويب «التكوينات» .

  3. أضف خطوط التكوين التالية إلى قسم kafka-env template السفلي. حدد ⁧⁩حفظ⁧⁩.

    # Configure Kafka to advertise IP addresses instead of FQDN
    IP_ADDRESS=$(hostname -i)
    echo advertised.listeners=$IP_ADDRESS
    sed -i.bak -e '/advertised/{/advertised@/!d;}' /usr/hdp/current/kafka-broker/conf/server.properties
    echo "advertised.listeners=PLAINTEXT://$IP_ADDRESS:9092" >> /usr/hdp/current/kafka-broker/conf/server.properties
    
  4. أدخل ملاحظة على شاشة حفظ التكوين واختر حفظ.

  5. إذا تلقيت تحذيرًا بشأن التكوين، فاختر متابعة على أي حال.

  6. اختر أوافق على حفظ تغييرات التكوين.

  7. في إخطار إعادة التشغيل المطلوب، اختر إعادة التشغيل>، إعادة تشغيل جميع العناصر المتأثرة. ثم اختر تأكيد إعادة تشغيل الكل.

    ستعرض لك لقطة الشاشة خيار Apache Ambari لإعادة تشغيل جميع العناصر المتأثرة.

قم بتكوين Kafka للإنصات على جميع واجهات الشبكة

  1. البقاء على علامة التبويب التكوينات ضمنخدمات>Kafka. ضمن وسيط Kafka اضبط خاصية المستمعين إلى PLAINTEXT://0.0.0.0:9092.
  2. حدد ⁧⁩حفظ⁧⁩.
  3. اختر إعادة تشغيل>تأكيد إعادة تشغيل الكل.

سجّل وسيط عناوين IP وعناوين Zookeeper لنظام المجموعة الأساسي

  1. حدد «المضيفين» على لوحة معلومات Ambari.

  2. قم بتدوين ملاحظة عن عناوين IP للوسطاء ومستخدمي Zookeeper. تتكون عُقد الوسيط wn من أول حرفين من اسم المضيف وعُقَد zookeeper zk كأول حرفين من اسم المضيف.

    تعرض لقطة الشاشة عناوين IP لعقدة عرض Apache Ambari.

  3. كرر الخطوات الثلاث السابقة للمجموعة الثانية، مجموعة kafka الثانوية: تكوين إعلان IP، وتعيين المستمعين، وتسجيل عناوين IP للوسيط و ZooKeeper.

إنشاء المواضيع

  1. اتصل بالمجموعة الأساسية باستخدام SSH:

    ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
    

    استبدل sshuser اسم مستخدم SSH المستخدم عند إنشاء المجموعة. استبدل PRIMARYCLUSTER اسم القاعدة التي استخدمتها عند إنشاء المجموعة.

    لمزيد من المعلومات، راجع ⁧⁩ استخدام SSH مع HDInsight ⁧⁩.

  2. استخدم الأمر التالي لإنشاء اثنين من متغيرات البيئة من خلال مضيفي Zookeeper Apache ومضيفي Broker لنظام المجموعة الأساسي. استبدال السلاسل مثل ZOOKEEPER_IP_ADDRESS1 عناوين IP الفعلية المسجلة سابقًا، مثل 10.23.0.11 و 10.23.0.7. وينطبق الأمر ذاته على BROKER_IP_ADDRESS1. إذا كنت تستخدم دقة FQDN باستخدام خادم DNS مخصص، اتبع تلك الخطوات للحصول على أسماء مجال broker و zookeeper.

    # get the ZooKeeper hosts for the primary cluster
    export PRIMARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181, ZOOKEEPER_IP_ADDRESS2:2181, ZOOKEEPER_IP_ADDRESS3:2181'
    
    # get the broker hosts for the primary cluster
    export PRIMARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
    
  3. لإنشاء موضوع باسم testtopic، استخدم الأمر التالي:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
    
  4. استخدم الأمر التالي للتحقق من إنشاء الموضوع بنجاح:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $PRIMARY_ZKHOSTS
    

    يحتوي الرد على testtopic.

  5. قم باستخدام ما يلي لعرض معلومات المضيف Broker لنظام المجموعة(الأساسي) هذا:

    echo $PRIMARY_BROKERHOSTS
    

    وهذا يُرجع معلومات مشابهة للنص التالي:

    10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092

    احفظ هذه المعلومات. تُستخدَم في القسم التالي.

تكوين إنشاء النُّسخ المتطابقة

  1. الاتصال بنظام المجموعة الثانوي باستخدام جلسة عمل SSH المختلفة:

    ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
    

    استبدل sshuser اسم مستخدم SSH المستخدم عند إنشاء المجموعة. استبدل SECONDARYCLUSTER اسم القاعدة التي استخدمتها عند إنشاء نظام المجموعة.

    لمزيد من المعلومات، راجع ⁧⁩ استخدام SSH مع HDInsight ⁧⁩.

  2. استخدام consumer.propertiesملف لتكوين الاتصال بنظام المجموعة الأساسي. لإنشاء الملفّ، استخدم الأمر التالي:

    nano consumer.properties
    

    استخدم النص التالي كمحتويات الملف consumer.properties:

    bootstrap.servers=PRIMARY_BROKERHOSTS
    group.id=mirrorgroup
    

    استبدلPRIMARY_BROKERHOSTSعناوين IP لمضيف الوسيط من المجموعة الأساسية.

    يصف هذا الملف معلومات المستهلك لاستخدامها عند القراءة من مقطع تخزين Kafka الأساسي. لمزيد من المعلومات، راجع معلومات تعريف المستهلكعلىkafka.apache.org.

    لحفظ الملف، اضغط على Ctrl+X، واضغط على Y، ثم اضغط على مفتاح الإدخال Enter.

  3. قبل تكوين المنتج الذي يتصل بالمجموعة الثانوية، أجرِ إعداد متغيّر لعناوين IP الوسيط لمقطعة التخزين الثانوي. استخدم الأوامر التالية لإنشاء هذا المتغيّر:

    export SECONDARY_BROKERHOSTS='BROKER_IP_ADDRESS1:9092,BROKER_IP_ADDRESS2:9092,BROKER_IP_ADDRESS2:9092'
    

    ينبغي أن يعرض الأمر echo $SECONDARY_BROKERHOSTS معلومات مشابهة للنص التالي:

    10.23.0.14:9092,10.23.0.4:9092,10.23.0.12:9092

  4. استخدام producer.propertiesملف لتكوين الاتصال بنظام المجموعة الثانوي. لإنشاء الملفّ، استخدم الأمر التالي:

    nano producer.properties
    

    استخدم النص التالي كمحتويات الملف producer.properties:

    bootstrap.servers=SECONDARY_BROKERHOSTS
    compression.type=none
    

    استبدال SECONDARY_BROKERHOSTS بعناوين IP للوسيط، والمُستخدمة في الخطوة السابقة.

    لمزيد من المعلومات، راجع معلومات تعريف المنتِج على kafka.apache.org.

  5. استخدم الأوامر التالية لإنشاء متغيّر بيئة باستخدام عناوين IP لمضيفي Zookeeper لمقطع التخزين الثانوي:

    # get the ZooKeeper hosts for the secondary cluster
    export SECONDARY_ZKHOSTS='ZOOKEEPER_IP_ADDRESS1:2181,ZOOKEEPER_IP_ADDRESS2:2181,ZOOKEEPER_IP_ADDRESS3:2181'
    
  6. لا يسمح التكوين الافتراضي لـ Kafka على HDInsight بإنشاء تلقائي للموضوعات. يجب استخدام أحد الخيارات التالية قبل بدء عملية إنشاء نُسخ متطابقة:

    • إنشاء الموضوعات على مقطع التخزين الثانوي: يسمح لك هذا الخيار أيضًا بتعيين عدد الأقسام وعامل النسخ المتماثل.

      يمكنك إنشاء موضوعات بشكل مسبق باستخدام الأمر التالي:

      /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $SECONDARY_ZKHOSTS
      

      استبدل testtopic باسم الموضوع للإنشاء.

    • تكوين المجموعة لإنشاء الموضوع تلقائيًا: يتيح هذا الخيار لـ MirrorMaker إنشاء الموضوعات تلقائيًا. لاحظ أنه قد يتم إنشاؤها باستخدام عدد مختلف من الأقسام أو عامل نسخ مختلف عن الموضوع الأساسي.

      لتكوين مقطع التخزين الثانوي لإنشاء موضوعات تلقائيًا، نفِّذ الخطوات التالية:

      1. انتقل إلى لوحة معلومات Apache Ambari لمقطع التخزين الثانوي: https://SECONDARYCLUSTERNAME.azurehdinsight.net.
      2. حدد «خدمات»>Kafka. حدد علامة التبويب Configs.
      3. في الحقل «ترشيح» ، أدخل قيمة auto.create. تعمل هذه الخطوة على تصفية قائمة الخصائص ويعرض الإعداد auto.create.topics.enable.
      4. قم بتغيير قيمة auto.create.topics.enable إلى true، ثم حدد Save. أضف ملاحظة، ثم حدد «حفظ» مرة أخرى.
      5. حدد خدمة «Kafka» ، ثم حدد «إعادة تشغيل» ثم حدد «إعادة تشغيل كل العناصر المتأثّرة» . عند مطالبتك بالتحديد، حدد «تأكيد إعادة تشغيل الكل» .

      توضح لقطة الشاشة كيفية تمكين الإنشاء التلقائي للموضوعات في خادم kafka.

بدء تشغيل MirrorMaker

ملاحظة

تحتوي هذه المقالة على مراجع لمصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، سنزيله من هذه المقالة.

  1. من اتصال SSH إلى مقطع التخزين الثانوي، استخدم الأمر التالي لبدء معالجة MirrorMaker:

    /usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.MirrorMaker --consumer.config consumer.properties --producer.config producer.properties --whitelist testtopic --num.streams 4
    

    المعلمات المُستخدمة في هذا المثال هي:

    المعلمة الوصف
    --consumer.config تحدد الملف الذي يحتوي على خصائص المستهلك. تُستخدم هذه الخصائص لإنشاء مستهلك يقرأ من مجموعة Kafka الأساسية.
    --producer.config تحدد الملف الذي يحتوي على خصائص المُنتِج. تُستخدم هذه الخصائص لإنشاء مستهلك يقرأ من مجموعة Kafka الثانوية.
    --whitelist قائمة الموضوعات التي ينسخها MirrorMaker من مقطع التخزين الأساسي إلى الثانوي.
    --num.streams عدد مؤشرات ترابط المستهلك للإنشاء.

    ينتظر المُستهلك على العقدة الثانوية ينتظر في الوقت الحالي لتلقي الرسائل.

  2. من اتصال SSH إلى مقطع التخزين الأساسي، استخدم الأمر التالي لبدء تشغيل مُنتِج وإرسال رسائل إلى الموضوع:

    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $PRIMARY_BROKERHOSTS --topic testtopic
    

    عند وصولك إلى سطر فارغ مع مؤشر اكتب بعض الرسائل النصية. تُرسَل الرسائل إلى الموضوع على مقطع التخزين الأساسي. عند الانتهاء، اضغط على Ctrl + C لإنهاء عملية المنتج.

  3. من اتصال SSH بالمجموعة الثانوية، اضغط على Ctrl + C لإنهاء عملية MirrorMaker. قد يستغرق الأمر عدة ثوان لإنهاء العملية. للتحقق من أن الرسائل تم نسخها نسخًا متماثلًا إلى مقطع التخزين الثانوي، استخدم الأمر التالي:

    /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $SECONDARY_BROKERHOSTS --topic testtopic --from-beginning
    

    تتضمن قائمة الموضوعات الآن testtopic، والتي يتم إنشاؤها عندما يعكس MirrorMaster الموضوع من مقطع التخزين الأساسي إلى الثانوي. الرسائل التي تم استردادها من الموضوع هي نفسها التي أدخلتها على مقطع التخزين الأساسي.

قم بحذف نظام المجموعة

تحذير

يتم تحديد فوترة مجموعات HDInsight في الدقيقة، سواء كنت تستخدمها أم لا. تأكد من حذف نظام المجموعة بعد انتهائك من استخدامه. تعرف على كيفية حذف مجموعة HDInsight.

أنشأت الخطوات الواردة في هذه المقالة مجموعات في مجموعات موارد Azure مختلفة. لحذف كافة الموارد التي تم إنشاؤها، يمكنك حذف مجموعتي الموارد المُنشأتين: kafka-primary-rg و kafka-secondary_rg. حذف مجموعات الموارد يزيل كافة الموارد التي تم إنشاؤها باتباع هذه المقالة، بما في ذلك نظام المجموعات والشبكات الظاهرية وحسابات التخزين.

الخطوات التالية

تعلّمت في هذه المقالة كيفية استخدام MirrorMaker لإنشاء نسخة متماثلة من مجموعة Apache Kafka. استخدم الروابط التالية لاكتشاف طرق أخرى للعمل من خلال Kafka: