بداية سريعة: إنشاء نظام مجموعة Apache Kafka في Azure HDInsight باستخدام مدخل Azure

Apache Kafka هي منصة تدفق موزعة مفتوحة المصدر. غالباً ما يتم استخدامها كوسيط رسائل، حيث يوفر وظائف مشابهة لقائمة انتظار publish-subscribe.

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

تحذير

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

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

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

المتطلبات الأساسية

عميل SSH. لمزيد من المعلومات، يرجى الرجوع إلى الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH .

إنشاء نظام مجموعة Apache Kafka

لإنشاء نظام مجموعة Apache Kafka على HDInsight، القيام بالخطوات التالية:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. في القائمة اليمنى، تحديد + إنشاء مورد.

    Azure portal create resource HDInsight.

  3. تحديد التحليلات>Azure HDInsight للانتقال إلى صفحة إنشاء نظام مجموعة HDInsight.

  4. في علامة التبويب Basics، وفر المعلومات التالية:

    الخاصية ‏‏الوصف
    الاشتراك من القائمة المنسدلة، قم بتحديد اشتراك Azure المستخدم في نظام المجموعة.
    مجموعة الموارد إنشاء مجموعة موارد أو تحديد مجموعة موارد موجودة. مجموعة الموارد هي حاوية لمحتويات Azure. في هذه الحالة، تحتوي مجموعة الموارد على نظام المجموعة HDInsight وحساب تخزين Azure التابع.
    اسم شبكة نظام المجموعة أدخل اسمًا فريدًا عالميًا. يمكن أن يتكون الاسم من 59 حرفاً شاملاً الأحرف، والأرقام، والشرطات. لا يمكن أن تكون الأحرف الأولى والأخيرة من الاسم شرطات.
    المنطقة من القائمة المنسدلة، حدد المنطقة التي أنشئت فيها المجموعة. اختيار منطقة قريبة لك لأداء أفضل.
    نوع شبكة نظام المجموعة تحديد تحديد نوع الكتلة لفتح قائمة. من القائمة، تحديد Kafka باعتباره نوع نظام المجموعة.
    إصدار سيتم تحديد الإصدار الظاهري لنوع نظام المجموعة. التحديد من القائمة المنسدلة إذا كنت ترغب في تحديد إصدار آخر.
    تسجيل دخول نظام المجموعة بالاسم وكلمة السر اسم تسجيل الدخول الافتراضي هو admin. يجب أن يكون طول كلمة المرور 10 أحرف على الأقل ويجب أن تحتوي على رقم واحد على الأقل وأحرف كبيرة وحرف صغير واحد وحرف واحد غير أبجدي رقمي (باستثناء الأحرف ' ` "). تأكد من عدم توفير كلمات مرور شائعة مثل Pass@word1.
    اسم مستخدم Shell (SSH) الآمن. اسم المستخدم الافتراضي هو sshuser. يمكنك توفير اسم آخر لاسم المستخدم SSH.
    استخدام كلمة مرور نظام المجموعة لتسجيل الدخول إلى SSH حدد خانة الاختيار هذه لاستخدام نفس كلمة المرور الخاصة بمستخدم SSH مثل تلك التي قمت بتوفيرها لمستخدم تسجيل الدخول إلى نظام المجموعة.

    Azure portal create cluster basics.

    توفر كل منطقة Azure (موقع) مجالات خاطئة. مجال الخطأ هو تجميع منطقي للأجهزة الأساسية في مركز بيانات Azure. يشترك كل مجال خطأ في مصدر طاقة مشترك ومفتاح تبديل شبكة الاتصال. يتم توزيع الأجهزة الظاهرية والأقراص المدارة التي تقوم بتنفيذ العُقد ضمن نظام مجموعة HDInsight عبر مجالات الخطأ هذه. تقيد هذه البنية من التأثير المحتمل لفشل الأجهزة الفعلية.

    للحصول على توفر عالٍ للبيانات، تحديد المنطقة (الموقع) الذي يحتوي على ثلاثة مجالات خطأ. للحصول على معلومات حول عدد مجالات الخطأ في أي منطقة، راجع مستند توافر أجهزة Linux الظاهرية.

    قم بتحديد علامة التبويبالتالي: التخزين>>للتقدم إلى إعدادات التخزين.

  5. من علامة تبويب التخزين، بتوفير القيم التالية:

    الخاصية ‏‏الوصف
    نوع التخزين الأساسي استخدم القيمة الافتراضيةAzure Storage.
    أسلوب التحديد استخدم القيمة الافتراضية Select from list.
    حساب التخزين الأساسي استخدم القائمة المنسدلة لتحديد حساب تخزين موجود، أو تحديد Create new. إذا قمت بإنشاء حساب جديد، يجب أن يكون الاسم بين 3 و24 حرفاً في الطول، ويمكن أن يتضمن أرقا وأحرف صغيرة فقط
    الحاوية استخدم القيمة التي يتم ملؤها تلقائيًا.

    HDInsight Linux get started provide cluster storage values.

    حدد علامة التبويب أمان + شبكة اتصال.

  6. لهذه البداية السريعة، اترك إعدادات الأمان الافتراضية. لمعرفة المزيد حول حزمة أمان المؤسسة، تفضل بزيارة تكوين مجموعة HDInsight باستخدام حزمة أمان المؤسسة باستخدام Microsoft Entra Domain Services. لمعرفة كيفية استخدام مُفتاحك لتشفير قرص Apache Kafka، قم بزيارة تشفير قرص المفتاح المدار من قبل العميل

    إذا كنت ترغب في توصيل نظام مجموعتك بشبكة ظاهرية، فحدد الشبكة الظاهرية من القائمة المنسدلة للشبكة الظاهرية.

    Add cluster to a virtual network.

    حدد علامة التبويب تهيئة + تسعير.

  7. لضمان توفر Apache Kafka على HDInsight، يجب تعيين عدد العقد إدخال worker node إلى 3 أو أكثر. القيمة الافتراضية هي 4.

    يهيئ إدخال العقدة القياسية لكل عامل الأقراص قابلية توسع Kafka Apache في HDInsight. يستخدم Apache Kafka على HDInsight القرص المحلي للأجهزة الظاهرية في نظام المجموعة لتخزين البيانات. Apache Kafka هو الإدخال / إخراج ثقيل لذلك يتم استخدام Azure Managed Disks لتوفير الإنتاجية العالية والمزيد من التخزين في كل عُقدة. يمكن أن يكون نوع القرص المدار إما قياسي (HDD) أو متميز (SSD). يعتمد نوع القرص على حجم الجهاز الظاهري المستخدم من قبل worker node (Apache Kafka brokers). يتم استخدام الأقراص المتميزة تلقائياً مع DS وGS سلسلة VMs. تستخدم جميع أنواع الأجهزة الافتراضية الأخرى المقياس.

    Set the Apache Kafka cluster size.

    حدد علامة التبويب Review + create.

  8. مراجعة تهيئة نظام المجموعة. تغيير أي إعدادات غير صحيحة. وأخيراً، تحديد إنشاء لإنشاء الكتلة.

    Screenshot showing kafka cluster configuration summary for HDI version 5.0.

    قد يستغرق إنشاء الكتلة 20 دقيقة.

الاتصال بنظام المجموعة

  1. استخدم الأمر ssh للاتصال بنظام المجموعة الخاص بك. قم بتحرير الأمر أدناه عن طريق استبدال اسم نظام المجموعة باسم نظام مجموعتك ثم إدخال الأمر:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. عند المطالبة، أدخل كلمة المرور لمستخدم SSH.

    بمجرد الاتصال، ترى معلومات مشابهة للنص التالي:

    Authorized uses only. All activity may be monitored and reported.
    Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1011-azure x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      Get cloud support with Ubuntu Advantage Cloud Guest:
        https://www.ubuntu.com/business/services/cloud
    
    83 packages can be updated.
    37 updates are security updates.
    
    
    Welcome to Apache Kafka on HDInsight.
    
    Last login: Thu Mar 29 13:25:27 2018 from 108.252.109.241
    

الحصول على معلومات عن مضيف Apache Zookeeper وBroker

عند العمل مع Kafka يجب أن تعرف Apache Zookeeperو ومضيفي Broker. يتم استخدام هؤلاء المضيفين معApache Kafka API والعديد من الأدوات المساعدة التي تأتي مع Kafka.

في هذا القسم، يمكنك الحصول على معلومات المضيف منApache Ambari REST API عن نظام المجموعة.

  1. تثبيت jq، معالج JSON سطر الأوامر. يتم استخدام هذه الأداة المساعدة لتوزيع مستندات JSON وهي مفيدة في توزيع معلومات المضيف. من اتصال SSH المفتوح، أدخل الأمر التالي لتثبيت jq:

    sudo apt -y install jq
    
  2. قم بإعداد متغير كلمة المرور. استبدل PASSWORD بكلمة مرور تسجيل الدخول إلى نظام المجموعة، ثم أدخل الأمر:

    export PASSWORD='PASSWORD'
    
  3. استخرج اسم نظام المجموعة المكتوب بشكل صحيح. قد تختلف الأحرف الفعلية لاسم نظام المجموعة عن المتوقع، استنادًا إلى كيفية إنشاء نظام المجموعة. سيحصل هذا الأمر على الأحرف الفعلية، ومن ثم تخزينها في متغير. أدخل الأمر التالي:

    export CLUSTER_NAME=$(curl -u admin:$PASSWORD -sS -G "http://headnodehost:8080/api/v1/clusters" | jq -r '.items[].Clusters.cluster_name')
    

    إشعار

    إذا كنت تقوم بهذه العملية من خارج الكتلة، فهناك إجراء مختلف لتخزين اسم الكتلة. احصل على اسم الكتلة بأحرف صغيرة من مدخل Microsoft Azure. ثم استبدل اسم نظام المجموعة <clustername> في الأمر التالي ثم القيام بتنفيذه: export clusterName='<clustername>'.

  4. لتعيين متغير بيئة بمعلومات مضيف Zookeeper، استخدم الأمر أدناه. يقوم الأمر باسترداد كافة مضيفين Zookeeper، ثم يرجع أول مدخلين فقط. هذا لأنك تريد بعض التكرار في حالة عدم التمكن من الوصول إلى مضيف واحد.

    export KAFKAZKHOSTS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER | jq -r '["\(.host_components[].HostRoles.host_name):2181"] | join(",")' | cut -d',' -f1,2);
    

    إشعار

    يتطلب هذا الأمر الوصول إلى Ambari. إذا كان نظام المجموعة خلف NSG، فقم بتشغيل هذا الأمر من جهاز يمكنه الوصول إلى Ambari.

  5. للتحقق من أن متغير البيئة معين بشكل صحيح، استخدم الأمر التالي:

    echo $KAFKAZKHOSTS
    

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

    <zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181

  6. لتعيين متغير بيئة مع معلومات مضيف وسيط Apache Kafka، استخدم الأمر التالي:

    export KAFKABROKERS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2);
    

    إشعار

    يتطلب هذا الأمر الوصول إلى Ambari. إذا كان نظام المجموعة خلف NSG، فقم بتشغيل هذا الأمر من جهاز يمكنه الوصول إلى Ambari.

  7. للتحقق من أن متغير البيئة معين بشكل صحيح، استخدم الأمر التالي:

    echo $KAFKABROKERS
    

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

    <brokername1>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092,<brokername2>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092

إدارة مواضيع Apache Kafka

يخزن Kafka تدفقات البيانات في المواضيع. يمكنك استخدام الأداة المساعدة kafka-topics.sh لإدارة المواضيع.

  • لإنشاء موضوع، استخدام الأمر التالي في اتصال SSH:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 3 --partitions 8 --topic test --zookeeper $KAFKAZKHOSTS
    

    يتصل هذا الأمر بــ Zookeeper باستخدام معلومات المضيف المخزنة في $KAFKAZKHOSTS. ثم يقوم بإنشاء موضوع Apache Kafka يسمىtest.

    • يتم تقسيم البيانات المخزنة في هذا الموضوع إلى ثمانية أقسام.

    • يتم نسخ كل قسم عبر ثلاث worker node في نظام المجموعة.

      • إذا قمت بإنشاء نظام المجموعة في منطقة Azure التي توفر ثلاثة مجالات خطأ فاستخدم عامل نسخ متماثل من 3. وإلا، استخدم عامل النسخ متماثل من 4.

      • في المناطق التي بها ثلاثة مجالات خطأ، يسمح عامل النسخ المتماثل بــ 3 نسخ متماثلة لتنتشر عبر مجالات الخطأ. في المناطق التي بها مجالان من الخطأ، ينشر عامل النسخ المتماثل من أربعة النُسخ المتماثلة بالتساوي عبر المجالات.

      • للحصول على معلومات حول عدد مجالات الخطأ في أي منطقة، راجع مستند توافر أجهزة Linux الظاهرية.

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

      • لضمان توافر عالٍ، استخدم أداة إعادة توازن أقسام Apache Kafka. يجب تشغيل هذه الأداة من اتصال SSH إلى العقدة الرئيسية لنظام مجموعةApache Kafka.

      • للحصول على أعلى توفر لبياناتApache Kafka، يجب إعادة توازن النسخ الاقسام المتماثلة لموضوعك عند:

        • إنشاء موضوع جديد أو قسم جديد

        • توسيع نطاق نظام المجموعة

  • لسرد المواضيع، استخدم الأمر التالي:

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

    يسرد هذا الأمر المواضيع المتوفرة على نظام مجموعة Kafka Apache.

  • لحذف موضوع، استخدم الأمر التالي:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --delete --topic topicname --zookeeper $KAFKAZKHOSTS
    

    يحذف هذا الأمر الموضوع المسمى topicname.

    تحذير

    إذا قمت بحذف الموضوع test الذي تم إنشاؤه مسبقاً، فيجب عليك إعادة إنشائه. يتم استخدامه بالخطوات اللاحقة في هذا المستند.

لمزيد من المعلومات حول الأوامر المتوفرة مع الأداة المساعدة kafka-topics.sh، استخدم الأمر التالي:

/usr/hdp/current/kafka-broker/bin/kafka-topics.sh

إنتاج السجلات واستهلاكها

يخزن Kafka السجلات في المواضيع. تنتج السجلات من قبل المنتجين، وتستهلك من قبل المستهلكين. يتواصل المنتجين والمستهلكين مع خدمة Kafka broker. كل عقدة عاملة في مجموعة HDInsight الخاصة بك هي مضيف وسيط Apache Kafka.

لتخزين السجلات في موضوع الاختبار الذي قمت بإنشائه مسبقًا، ثم قراءتها باستخدام مستهلك، استخدم الخطوات التالية:

  1. لكتابة السجلات في الموضوع، استخدم الأداة المساعدة kafka-console-producer.sh من اتصال SSH:

    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic test
    

    بعد هذا الأمر، ستصل إلى سطر فارغ.

  2. اكتب رسالة نصية على السطر الفارغ ثم اضغط على enter. أدخل بعض الرسائل بهذه الطريقة، ثم استخدم Ctrl + C للعودة إلى موجه الأوامر العادي. يتم إرسال كل سطر كسجل منفصل لموضوع Apache Kafka.

  3. لقراءة السجلات من الموضوع، استخدم الأداة المساعدة kafka-console-consumer.sh من اتصال SSH:

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

    يسترد هذا الأمر السجلات من الموضوع ويعرضها. الاستخدام --from-beginning يقول للمستهلك أن يبدأ من بداية التيار، بحيث يتم استرداد جميع السجلات.

    إذا كنت تستخدم نسخة قديمة من Kafka، استبدلها --bootstrap-server $KAFKABROKERSب--zookeeper $KAFKAZKHOSTS.

  4. استخدام Ctrl + C لوقف المستهلك.

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

تنظيف الموارد

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

لإزالة مجموعة الموارد باستخدام مدخل Microsoft Azure:

  1. في المدخل Microsoft Azure، توسيع القائمة على الجانب الأيمن لفتح قائمة الخدمات، ثم اختيار Resource Groups لعرض قائمة مجموعات الموارد.
  2. تحديد موقع مجموعة الموارد لحذفها، ثم التحديد بزر الماوس الأيمن فوق زر المزيد (...) على الجانب الأيمن من القائمة.
  3. تحديد «Delete resource group» من شريط الأدوات.

تحذير

حذف نظام مجموعة Apache Kafka من على HDInsight يحذف أي بيانات مخزنة في Kafka.

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