البرنامج التعليمي: ترحيل البيانات الملتقطة لمراكز الأحداث من Azure Storage إلى Azure Synapse Analytics باستخدام Azure Event Grid وAzure Functions
في هذا البرنامج التعليمي، ستقوم بترحيل البيانات الملتقطة لمراكز الأحداث من Azure Blob Storage إلى Azure Synapse Analytics، وتحديدا تجمع SQL مخصص، باستخدام Azure Event Grid وAzure Functions.
يصور هذا الرسم البياني سير عمل الحل الذي يبنيه هذا البرنامج التعليمي:
- يتم تسجيل البيانات المرسلة إلى مركز أحداث Azure في تخزين البيانات الثنائية الكبيرة في Azure.
- عند اكتمال التقاط البيانات، يتم إنشاء حدث وإرساله إلى Azure Event Grid.
- تقوم Azure Event Grid بإعادة توجيه بيانات الحدث هذه إلى تطبيق وظيفة Azure.
- يستخدم تطبيق الدالة عنوان "اليو آر إل" الكائن الثنائي كبير الحجم في بيانات الحدث لاسترداد الكائن ثنائي كبير الحجم من التخزين.
- يقوم تطبيق الوظائف بترحيل بيانات الكائن الثنائي كبير الحجم إلى تحليلات Azure Synapse.
في هذا البرنامج التعليمي، نُفذت الخطوات التالية:
- نشر البنية الأساسية المطلوبة للبرنامج التعليمي
- نشر التعليمات البرمجية على تطبيق الوظائف
- إنشاء اشتراك "شبكة الأحداث"
- نموذج تدفق البيانات إلى Event Hubs
- التحقيق من تخزين البياناتAzure Synapse Analytics
المتطلبات الأساسية
لإكمال هذا البرنامج التعليمي، تحتاج إلى:
- تفترض هذه المقالة أنك على دراية بشبكة الأحداث ومراكز الأحداث (خاصة ميزة الالتقاط). إذا لم تكن على دراية ب Azure Event Grid، فراجع مقدمة إلى Azure Event Grid. للتعرف على ميزة الالتقاط في Azure Event Hubs، راجع التقاط الأحداث من خلال Azure Event Hubs في Azure Blob Storage أو Azure Data Lake Storage.
- اشتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
- Visual studio مع أحمال العمل لـ : تطوير سطح مكتب NET. وتطوير Azure وASP.NET وتطوير الويب وتطوير Node.js وتطوير Python.
- تحميل نموذج مشروع EventHubsCaptureEventGridDemo على جهاز الكمبيوتر.
- WindTurbineDataGenerator - ناشر بسيط يرسل عينة من بيانات توربينات الرياح إلى مركز أحداث مع تمكين ميزة الالتقاط.
- FunctionDWDumper – دالة Azure تتلقى إعلاما من Azure Event Grid عند التقاط ملف Avro إلى كائن تخزين Azure الثنائي كبير الحجم. تتلقي مسار "اليو آر إل" الكائن ثنائي الحجم، وتقرأ محتوياته، وتدفع هذه البيانات إلى Azure Synapse Analytics (مجموعة SQL المخصصة).
نشر البنية الأساسية
في هذه الخطوة، يمكنك نشر البنية الأساسية المطلوبة مع قالب إدارة الموارد. عند نشر القالب، يتم إنشاء الموارد التالية:
- Event hub مع تمكين ميزة التسجيل.
- حساب تخزين الملفات الملتقطة.
- خطة خدمة التطبيق لاستضافة تطبيق الوظيفة
- تطبيق الوظيفة لمعالجة الحدث
- SQL Server لاستضافة مستودع البيانات
- Azure Synapse Analytics (dedicated SQL pool) لتخزين البيانات التي تم ترحيلها
استخدم Azure CL لنشر البنية الأساسية
قم بتسجيل الدخول إلى بوابة Azure.
حدد زر Cloud Shell في الأعلى.
سترى Cloud Shell مفتوحاً في الجزء السفلي من المتصفح.
في Cloud Shell، حدد Bash كما هو موضح في الصورة أعلاه، إذا لم تكن محددة بالفعل.
إنشاء مجموعة موارد Azure عن طريق تشغيل الأمر CLI التالي:
نسخ الأمر التالي ولصقة في نافذة Cloud Shell. تغيير اسم مجموعة الموارد والموقع إذا كنت تريد ذلك.
az group create -l eastus -n rgDataMigration
اضغط ENTER.
إليك مثال:
user@Azure:~$ az group create -l eastus -n rgDataMigration { "id": "/subscriptions/00000000-0000-0000-0000-0000000000000/resourceGroups/rgDataMigration", "location": "eastus", "managedBy": null, "name": "rgDataMigration", "properties": { "provisioningState": "Succeeded" }, "tags": null }
نشر جميع الموارد المذكورة في المقطع السابق (مركز الحدث، حساب التخزين، وظائف التطبيق، تحليلات Azure Synapse) عن طريق تشغيل الأمر CLI التالية:
نسخ الأمر التالي ولصقة في نافذة Cloud Shell. بدلا من ذلك، يمكنك نسخ/لصق في محرر من اختيارك، وتعيين القيم، ثم نسخ الأمر إلى Cloud Shell. إذا رأيت خطأ بسبب اسم مورد Azure، فاحذف مجموعة الموارد، وأصلح الاسم، وأعد محاولة الأمر مرة أخرى.
هام
حدد قيم الكيانات التالية قبل تشغيل الأمر:
- اسم مجموعة الموارد التي قمت بإنشائها سابقاً.
- اسم مركز الحدث namespace.
- اسم مركز الحدث. يمكنك ترك القيمة كما هي (hubdatamigration).
- اسم ملقم SQL.
- اسم مستخدم SQL وكلمة المرور.
- اسم قاعدة البيانات.
- اسم حساب التخزين.
- اسم تطبيق الوظائف.
az deployment group create \ --resource-group rgDataMigration \ --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \ --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>
اضغط ENTER في نافذة Cloud Shell لتشغيل الأمر. قد تستغرق هذه العملية بعض الوقت نظرا لأنك تقوم بإنشاء مجموعة من الموارد. في نتيجة الأمر، تأكد من عدم وجود أي إخفاقات.
أغلق Cloud Shell عن طريق تحديد زر Cloud Shell في المدخل (أو) زر X في الزاوية العلوية اليمنى من نافذة Cloud Shell.
تحقق من إنشاء الموارد
في مدخل Azure، حدد مجموعات الموارد في القائمة اليسرى.
تصفية قائمة مجموعات الموارد عن طريق إدخال اسم مجموعة الموارد في مربع البحث.
حدد مجموعة مواردك في القائمة.
تأكد من مشاهدة الموارد التالية في مجموعة الموارد:
إنشاء جدول في Azure Synapse Analytics
في هذا القسم، تقوم بإنشاء جدول في تجمع SQL المخصص الذي قمت بإنشائه مسبقاً.
في قائمة الموارد في مجموعة الموارد، تحديد dedicated SQL pool.
في صفحة Dedicated SQL pool في قسم المهام العامة في القائمة اليسرى، تحديد محرر الاستعلام (معاينة).
إدخال اسم المستخدموكلمة المرور لخادم SQL، ثم تحديد موافق. إذا رأيت رسالة حول السماح للعميل بالوصول إلى خادم SQL، فحدد Allowlist IP <عنوان> IP الخاص بك على خادم <>SQL، ثم حدد OK.
في إطار الاستعلام نسخ وتشغيل البرنامج النصي SQL التالي:
CREATE TABLE [dbo].[Fact_WindTurbineMetrics] ( [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MeasureTime] datetime NULL, [GeneratedPower] float NULL, [WindSpeed] float NULL, [TurbineSpeed] float NULL ) WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);
إبقاء علامة التبويب هذه أو النافذة مفتوحة بحيث يمكنك التحقق من إنشاء البيانات في نهاية البرنامج التعليمي.
نشر تطبيق وظائف Azure
أولاً، احصل على ملف تعريف النشر لتطبيق Functions من مدخل Microsoft Azure. بعد ذلك، استخدم ملف تعريف النشر لنشر مشروع أو تطبيق Azure Functions من Visual Studio.
احصل على ملف تعريف النشر
في صفحة مجموعة الموارد، حدد Azure Functions app في قائمة الموارد.
في صفحة Function App لتطبيقك، حدد Get publish profile في شريط الأوامر.
قم بتنزيل الملف وحفظه في المجلد الفرعي FunctionEGDDumper للمجلد EventHubsCaptureEventGridDemo.
استخدم ملف تعريف النشر لنشر تطبيق الوظائف
قم بتشغيل Visual Studio.
فتح EventHubsCaptureEventGridDemo.sln الحل الذي قمت بتحميله من GitHub كجزء من المتطلبات الأساسية. يمكنك العثور عليه في
/samples/e2e/EventHubsCaptureEventGridDemo
المجلد.في مستكشف الحلول، التحديد بزر الماوس الأيمن على FunctionEGDWDumper المشروع، وتحديد نشر.
في الشاشة التالية، حدد Start أو أضف ملف تعريف للنشر.
في مربع الحوارPublish، حدد Import Profile لـ Target، وحدد Next.
في علامة التبويب Import profile، حدد ملف إعدادات النشر الذي حفظته مسبقاً في المجلد FunctionEGDWDumper، ثم حدد Finish.
عند تهيئة Visual Studio لملف التعريف، تحديد نشر. تأكد من نجاح النشر.
في مستعرض الويب الذي يحتوي على صفحة Azure Function مفتوحة، حدد Functions في الجزء الأوسط. تأكد من أن الدالة EventGridTriggerMigrateData تظهر في القائمة. إذا لم تشاهدها، فجرب النشر منVisual Studio مرة أخرى، ثم قم بتحديث الصفحة في المدخل.
بعد نشر الوظيفة، تكون جاهزا للاشتراك في الحدث.
الاشتراك في الحدث
في علامة تبويب جديدة أو نافذة جديدة من مستعرض ويب، سجل الدخول إلى مدخل Microsoft Azure.
في مدخل Azure، حدد مجموعات الموارد في القائمة اليسرى.
تصفية قائمة مجموعات الموارد عن طريق إدخال اسم مجموعة الموارد في مربع البحث.
حدد مجموعة مواردك في القائمة.
تحديد مراكز أحداث namespace من قائمة الموارد.
في صفحة مراكز أحداث Namespace تحديد الأحداث في القائمة اليمنى ثم تحديد + اشتراك الحدث من شريط الأدوات.
في صفحة إنشاء اشتراك حدث، اتبع الخطوات التالية:
أدخل اسماً للاشتراك في الحدث.
إدخال اسم لموضوع النظام. يوفر موضوع النظام نقطة نهاية للمرسل لإرسال الأحداث. لمزيد من المعلومات، يرجى الاطلاع على الاشتراكات
تحديد «Azure Function» لنوع «Endpoint type».
بالنسبة إلى Endpoint، تحديد الرابط.
في الصفحة تحديد دالة Azure، اتبع الخطوات التالية إذا لم يتم تعبئتها تلقائيا.
- تحديد اشتراك Azure الذي يحتوي على مركز IoT الذي قمت بإنشائه.
- تحديد منطقة مجموعة الموارد.
- حدد تطبيق الوظيفة.
- تحديد فتحة التوزيع.
- تحديد دالة EventGridTriggerMigrateData.
في الصفحة تحديد دالة Azure، تحديد تأكيد التحديد.
ثم، العودة إلى صفحة «إنشاء اشتراك حدث»، وتحديد «إنشاء».
تحقق من إنشاء اشتراك الحدث. التبديل إلى علامة التبويب اشتراكات الأحداث في صفحة الأحداث لمركز أحداث namespace.
تشغيل التطبيق ليُنشئ البيانات
تم الانتهاء من إعداد مركز الأحداث، وتخصيص تجمع SQL (SQL مستودع البيانات سابقا)، وتطبيق وظيفة Azure، والاشتراك في الحدث. قبل تشغيل التطبيق الذي ينشئ بيانات لوحة وصل الحدث تحتاج إلى تهيئة قيم قليلة.
انتقل إلى مجموعة مواردك في مدخل Azure.
تحديد Event Hubs namespace.
في صفحة Event Hubs namespace، تحديد نهج الوصول المشترك في القائمة اليسرى.
تحديد RootManageSharedAccessKey في قائمة النهج.
تحديد زر النسخ بجوار مربع نص مفتاح السلسلة الأساسي للاتصال.
العودة إلى حل Visual Studio.
التحديد بزر الماوس الأيمن على مشروع WindTurbineDataGenerator، وتحديد تعيين كمشروع بدء تشغيل.
في مشروع WindTurbineDataGenerator، فتح program.cs.
استبدل
<EVENT HUBS NAMESPACE CONNECTION STRING>
بسلسلة الاتصال التي قمت بنسخها من المدخل.إذا استخدمت اسماً مختلفاً لمركز الأحداث بخلاف
hubdatamigration
، فاستبدل<EVENT HUB NAME>
باسم مركز الأحداث.private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/..."; private const string EventHubName = "hubdatamigration";
قم ببناء الحل. تشغيل تطبيق WindTurbineGenerator.exe.
بعد بضع دقائق، في علامة تبويب أخرى في المستعرض مفتوحاً بها نافذة الاستعلام، استعلم عن الجدول في مستودع بياناتك للبيانات التي تم ترحيلها.
select * from [dbo].[Fact_WindTurbineMetrics]
هام
نستخدم سلسلة الاتصال للمصادقة على مساحة اسم Azure Event Hubs للحفاظ على البرنامج التعليمي بسيطا. نوصي باستخدام مصادقة معرف Microsoft Entra في بيئات الإنتاج. عند استخدام أحد التطبيقات، يمكنك تمكين الهوية المدارة للتطبيق وتعيين دور مناسب للهوية (مالك مراكز الأحداث Azure أو مرسل بيانات مراكز الأحداث أو متلقي بيانات مراكز الأحداث) على مساحة اسم مراكز الأحداث. لمزيد من المعلومات، راجع تخويل الوصول إلى مراكز الأحداث باستخدام معرف Microsoft Entra.
مراقبة الحل
يساعدك هذا القسم في مراقبة أو استكشاف الأخطاء وإصلاحها.
عرض البيانات المسجلة في حساب التخزين
الانتقال إلى مجموعة الموارد وتحديد حساب تخزين المستخدم لتسجيل بيانات الحدث.
في صفحة Storage account ، حدد Storage browser في القائمة اليسرى.
توسيع BLOB CONTAINERS، وتحديد windturbinecapture.
فتح المجلد المسمى بنفس اسم Event Hubs namespace في الجزء الأيمن.
قتح المجلد المسمى بنفس اسم event hub (hubdatamigration).
التنقل خلال المجلدات وستشاهد ملفات AVRO. إليك مثال:
تحقق من أن مشغل "Event Grid" استدعى الدالة
حدد مجموعة الموارد التي يوجد بها تطبيق الدالة.
حدد علامة التبويب Functions في الجزء الأوسط.
تأكد من أن الدالة EventGridTriggerMigrateData تظهر في القائمة.
في صفحة الدالة، تحديد مُراقبة في القائمة اليسرى.
تحديد تهيئة لتهيئة رؤى التطبيق لتسجيل سجلات الاستدعاء.
إنشاء موردApplication Insights جديد أو استخدام مورد موجود.
انتقل مرة أخرى إلى صفحة مراقبة للدالة.
تأكد من أن تطبيق العميل(WindTurbineDataGenerator)الذي يرسل الأحداث لا يزال قيد التشغيل. إذا لم يكن كذلك، قم بتشغيل التطبيق.
انتظر لبضع دقائق (5 دقائق أو أكثر) وحدد بزر تحديث لرؤية استدعاءات الوظائف.
اختر الاستدعاء للاطلاع على التفاصيل.
توزع Event Grid بيانات الأحداث إلى المشتركين. يُظهر المثال التالي بيانات الأحداث التي تم إنشاؤها عند تسجيل بيانات التدفق عبر الكائن الثنائي كبير الحجم. على وجه الخصوص، لاحظ
fileUrl
الخاصية فيdata
نقاط كائن blob في التخزين. يستخدم تطبيق الدالة عنوان "أر بي ال" هذا لاسترداد ملف النقطة مع البيانات المسجلة.{ "topic": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/rgDataMigration/providers/Microsoft.EventHub/namespaces/spehubns1207", "subject": "hubdatamigration", "eventType": "Microsoft.EventHub.CaptureFileCreated", "id": "4538f1a5-02d8-4b40-9f20-36301ac976ba", "data": { "fileUrl": "https://spehubstorage1207.blob.core.windows.net/windturbinecapture/spehubns1207/hubdatamigration/0/2020/12/07/21/49/12.avro", "fileType": "AzureBlockBlob", "partitionId": "0", "sizeInBytes": 473444, "eventCount": 2800, "firstSequenceNumber": 55500, "lastSequenceNumber": 58299, "firstEnqueueTime": "2020-12-07T21:49:12.556Z", "lastEnqueueTime": "2020-12-07T21:50:11.534Z" }, "dataVersion": "1", "metadataVersion": "1", "eventTime": "2020-12-07T21:50:12.7065524Z" }
تحقق من تخزين البيانات فيdedicated SQL pool
بعد بضع دقائق، في علامة تبويب أخرى في المستعرض مفتوحاً بها نافذة الاستعلام، استعلم عن الجدول في مستودع بياناتك للبيانات التي تم ترحيلها.
الخطوات التالية
- لمزيد من المعلومات حول إعداد النموذج وتشغيله، راجع نموذج تسجيل مراكز الأحداث وEvent Grid.
- في هذا البرنامج التعليمي، قمت بإنشاء اشتراك حدث للحدث
CaptureFileCreated
. لمزيد من المعلومات حول هذا الحدث وجميع الأحداث التي يدعمها Azure Blob Storage، راجع Azure Event Hubs كمصدر لشبكة الأحداث. - لمعرفة المزيد حول ميزة التقاط مراكز الأحداث، راجع التقاط الأحداث من خلال مراكز الأحداث في Azure Blob Storage أو Azure Data Lake Storage.