استخدام 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 الظاهريتين، راجع تكوين اتصال.
بنية إنشاء النُّسخ المتطابقة
تتميز هذه البنية بمجموعتين في مجموعات موارد مختلفة وشبكات افتراضية: أساسية وثانوية.
خطوات الإنشاء
أنشئ مجموعتي موارد جديدة:
مجموعة الموارد الموقع مجموعة موارد Kafka الأساسية وسط الولايات المتحدة مجموعة موارد Kafka الثانوية North Central US إنشاء شبكة ظاهرية جديدة kafka-primary-vnet فيkafka-primary-rg. اترك الإعدادات الافتراضية.
إنشاء شبكة افتراضية جديدة kafka-secondary-vnet فيkafka-secondary-rg، كما تكون مع الإعدادات الافتراضية.
إنشاء مقطعي تخزين جديدين من Kafka:
اسم شبكة نظام المجموعة مجموعة الموارد شبكة ظاهرية حساب التخزين مقطع التخزين الأساسي من Kafka مجموعة موارد Kafka الأساسية vnet الأساسي من kafka kafkaprimarystorage مقطع التخزين الثانوي من Kafka مجموعة موارد Kafka الثانوية التسجيل الثانوي من kafka vnet الثانوي من kafka إنشاء نظائر الشبكة الظاهرية. ستُنشئ هذه الخطوة نظيرتين: أحدهما منkafka-primary-vnet إلى kafka-secondary-vnet والآخر منkafka-secondary-vnet إلى kafka-primary-vnet.
حدد شبكة kafka-primary-vnet الظاهرية.
ضمن الإعدادات، حدد Peerings.
حدد إضافة.
على شاشة إضافة نظير، أدخل التفاصيل كما هو موضح في لقطة شاشة التالية.
تكوين إعلانات IP
قم بتكوين إعلانات IP لتمكين العميل من الاتصال باستخدام عناوين IP الوسيط، بدلاً من أسماء المجال.
انتقل إلى لوحة معلومات Apache Ambari لمقطع التخزين الأساسي:
https://PRIMARYCLUSTERNAME.azurehdinsight.net
.حدد «خدمات»>Kafka. حدد علامة التبويب «التكوينات» .
أضف خطوط التكوين التالية إلى قسم 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
أدخل ملاحظة على شاشة حفظ التكوين واختر حفظ.
إذا تلقيت تحذيرًا بشأن التكوين، فاختر متابعة على أي حال.
اختر أوافق على حفظ تغييرات التكوين.
في إخطار إعادة التشغيل المطلوب، اختر إعادة التشغيل>، إعادة تشغيل جميع العناصر المتأثرة. ثم اختر تأكيد إعادة تشغيل الكل.
قم بتكوين Kafka للإنصات على جميع واجهات الشبكة
- البقاء على علامة التبويب التكوينات ضمنخدمات>Kafka. ضمن وسيط Kafka اضبط خاصية المستمعين إلى
PLAINTEXT://0.0.0.0:9092
. - حدد حفظ.
- اختر إعادة تشغيل>تأكيد إعادة تشغيل الكل.
سجّل وسيط عناوين IP وعناوين Zookeeper لنظام المجموعة الأساسي
حدد «المضيفين» على لوحة معلومات Ambari.
قم بتدوين ملاحظة عن عناوين IP للوسطاء ومستخدمي Zookeeper. تتكون عُقد الوسيط wn من أول حرفين من اسم المضيف وعُقَد zookeeper zk كأول حرفين من اسم المضيف.
كرر الخطوات الثلاث السابقة للمجموعة الثانية، مجموعة kafka الثانوية: تكوين إعلان IP، وتعيين المستمعين، وتسجيل عناوين IP للوسيط و ZooKeeper.
إنشاء المواضيع
اتصل بالمجموعة الأساسية باستخدام SSH:
ssh sshuser@PRIMARYCLUSTER-ssh.azurehdinsight.net
استبدل
sshuser
اسم مستخدم SSH المستخدم عند إنشاء المجموعة. استبدلPRIMARYCLUSTER
اسم القاعدة التي استخدمتها عند إنشاء المجموعة.لمزيد من المعلومات، راجع استخدام SSH مع HDInsight .
استخدم الأمر التالي لإنشاء اثنين من متغيرات البيئة من خلال مضيفي 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'
لإنشاء موضوع باسم
testtopic
، استخدم الأمر التالي:/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $PRIMARY_ZKHOSTS
استخدم الأمر التالي للتحقق من إنشاء الموضوع بنجاح:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper $PRIMARY_ZKHOSTS
يحتوي الرد على
testtopic
.قم باستخدام ما يلي لعرض معلومات المضيف Broker لنظام المجموعة(الأساسي) هذا:
echo $PRIMARY_BROKERHOSTS
وهذا يُرجع معلومات مشابهة للنص التالي:
10.23.0.11:9092,10.23.0.7:9092,10.23.0.9:9092
احفظ هذه المعلومات. تُستخدَم في القسم التالي.
تكوين إنشاء النُّسخ المتطابقة
الاتصال بنظام المجموعة الثانوي باستخدام جلسة عمل SSH المختلفة:
ssh sshuser@SECONDARYCLUSTER-ssh.azurehdinsight.net
استبدل
sshuser
اسم مستخدم SSH المستخدم عند إنشاء المجموعة. استبدلSECONDARYCLUSTER
اسم القاعدة التي استخدمتها عند إنشاء نظام المجموعة.لمزيد من المعلومات، راجع استخدام SSH مع HDInsight .
استخدام
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.
قبل تكوين المنتج الذي يتصل بالمجموعة الثانوية، أجرِ إعداد متغيّر لعناوين 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
استخدام
producer.properties
ملف لتكوين الاتصال بنظام المجموعة الثانوي. لإنشاء الملفّ، استخدم الأمر التالي:nano producer.properties
استخدم النص التالي كمحتويات الملف
producer.properties
:bootstrap.servers=SECONDARY_BROKERHOSTS compression.type=none
استبدال
SECONDARY_BROKERHOSTS
بعناوين IP للوسيط، والمُستخدمة في الخطوة السابقة.لمزيد من المعلومات، راجع معلومات تعريف المنتِج على
kafka.apache.org
.استخدم الأوامر التالية لإنشاء متغيّر بيئة باستخدام عناوين 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'
لا يسمح التكوين الافتراضي لـ Kafka على HDInsight بإنشاء تلقائي للموضوعات. يجب استخدام أحد الخيارات التالية قبل بدء عملية إنشاء نُسخ متطابقة:
إنشاء الموضوعات على مقطع التخزين الثانوي: يسمح لك هذا الخيار أيضًا بتعيين عدد الأقسام وعامل النسخ المتماثل.
يمكنك إنشاء موضوعات بشكل مسبق باستخدام الأمر التالي:
/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 2 --partitions 8 --topic testtopic --zookeeper $SECONDARY_ZKHOSTS
استبدل
testtopic
باسم الموضوع للإنشاء.تكوين المجموعة لإنشاء الموضوع تلقائيًا: يتيح هذا الخيار لـ MirrorMaker إنشاء الموضوعات تلقائيًا. لاحظ أنه قد يتم إنشاؤها باستخدام عدد مختلف من الأقسام أو عامل نسخ مختلف عن الموضوع الأساسي.
لتكوين مقطع التخزين الثانوي لإنشاء موضوعات تلقائيًا، نفِّذ الخطوات التالية:
- انتقل إلى لوحة معلومات Apache Ambari لمقطع التخزين الثانوي:
https://SECONDARYCLUSTERNAME.azurehdinsight.net
. - حدد «خدمات»>Kafka. حدد علامة التبويب Configs.
- في الحقل «ترشيح» ، أدخل قيمة
auto.create
. تعمل هذه الخطوة على تصفية قائمة الخصائص ويعرض الإعدادauto.create.topics.enable
. - قم بتغيير قيمة
auto.create.topics.enable
إلىtrue
، ثم حدد Save. أضف ملاحظة، ثم حدد «حفظ» مرة أخرى. - حدد خدمة «Kafka» ، ثم حدد «إعادة تشغيل» ثم حدد «إعادة تشغيل كل العناصر المتأثّرة» . عند مطالبتك بالتحديد، حدد «تأكيد إعادة تشغيل الكل» .
- انتقل إلى لوحة معلومات Apache Ambari لمقطع التخزين الثانوي:
بدء تشغيل MirrorMaker
ملاحظة
تحتوي هذه المقالة على مراجع لمصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، سنزيله من هذه المقالة.
من اتصال 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
عدد مؤشرات ترابط المستهلك للإنشاء. ينتظر المُستهلك على العقدة الثانوية ينتظر في الوقت الحالي لتلقي الرسائل.
من اتصال SSH إلى مقطع التخزين الأساسي، استخدم الأمر التالي لبدء تشغيل مُنتِج وإرسال رسائل إلى الموضوع:
/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $PRIMARY_BROKERHOSTS --topic testtopic
عند وصولك إلى سطر فارغ مع مؤشر اكتب بعض الرسائل النصية. تُرسَل الرسائل إلى الموضوع على مقطع التخزين الأساسي. عند الانتهاء، اضغط على Ctrl + C لإنهاء عملية المنتج.
من اتصال 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: