Öğretici: veri ambarına büyük veri akışı

Azure Event Grid , uygulama ve hizmetlerden gelen bildirimlere veya olaylara tepki sağlamanıza olanak tanıyan akıllı bir olay yönlendirme hizmetidir. Örneğin, bir Azure Işlevini bir blob depolamaya veya Data Lake Storage yakalanan Event Hubs verileri işleyecek şekilde tetikleyebilirler. Bu örnek , yakalanan Event Hubs verilerini blob depolamadan Azure SYNAPSE Analytics 'e (özel olarak ayrılmış bir SQL havuzuna) geçirmek için Event Grid ve Azure işlevlerinin nasıl kullanılacağını gösterir.

Uygulamaya genel bakış

Bu diyagram, bu öğreticide derlemek için çözüm iş akışını gösterir:

  1. Azure olay hub' a gönderilen veriler bir Azure blob depolama alanında yakalanır.
  2. Veri yakalama işlemi tamamlandığında bir olay oluşturulur ve bir Azure olay kılavuzuna gönderilir.
  3. Event Grid bu olay verilerini bir Azure işlev uygulamasına iletir.
  4. İşlev uygulaması, depolamadan blobu almak için olay verilerinden blob URL'sini kullanır.
  5. İşlev uygulaması blob verilerini bir Azure Synapse Analytics.

Bu makalede aşağıdaki adımları uygulayın:

  • Öğretici için gerekli altyapıyı dağıtma
  • Kodu bir İşlevler uygulamasında yayımlama
  • Event Grid aboneliği oluşturma
  • Örnek verilerin akışla akışını Event Hubs
  • Yakalanan verileri Azure Synapse Analytics

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakiler gereklidir:

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • .NET masaüstü geliştirme, Azure geliştirme, ASP.NET ve web geliştirme, Node.js geliştirme ve Python geliştirme iş yükleri içeren Visual Studio 2019.
  • EventHubsCaptureEventGridDemo örnek projesini bilgisayarınıza indirin.
    • WindTurbineDataGenerator : Yakalama özellikli bir olay hub'sına örnek rüzgar türbini verileri gönderen basit bir yayımcı
    • FunctionDWDumper - Azure Depolama blobunda bir Avro dosyası yakalandığında Event Grid bildirimi alan Azure İşlevi. Blob'un URI yolunu alır, içeriğini okur ve bu verileri Azure Synapse Analytics (ayrılmış SQL havuzu) klasörüne iletir.

Altyapıyı dağıtma

Bu adımda, gerekli altyapıyı bir Resource Manager dağıtırsınız. Şablonu dağıtarak aşağıdaki kaynaklar oluşturulur:

  • Yakalama özelliğinin etkin olduğu olay hub'ı.
  • Yakalanan dosyalar için depolama hesabı.
  • İşlev uygulamasını barındırmak için App Service planı
  • Olayı işlemek için işlev uygulaması
  • Veri ambarını barındırmak için SQL Server
  • Azure Synapse Analytics verileri depolamak için ayrılmış SQL havuzu (ayrılmış SQL havuzu)

Altyapıyı dağıtmak için Azure CLI kullanma

  1. Azure portalında oturum açın.

  2. Üst Cloud Shell Düğmeyi seçin.

    Azure portalı

  3. Tarayıcının Cloud Shell açık olduğunu görüyorsunuz.

    Cloud Shell

  4. Komut Cloud Shell Bash ve PowerShell arasında seçim yapmak için bir seçenek görüyorsanız Bash'i seçin.

  5. depolama alanını ilk kez Cloud Shell depolama hesabı oluşturmak için Depolama oluştur'ı seçin. Azure Cloud Shell dosyaları depolamak için bir Azure depolama hesabı gerekir.

    Depolama alanı oluşturma Cloud Shell

  6. Veri Cloud Shell bekleyin.

    Cloud Shell başlatıldı

  7. Aşağıdaki CLI komutunu çalıştırarak bir Azure kaynak grubu oluşturun:

    1. Aşağıdaki komutu kopyalayıp Cloud Shell yapıştırın. 5. kaynak grubu adını ve konumunu değiştirebilirsiniz.

      az group create -l eastus -n rgDataMigration
      
    2. ENTER tuşuna basın.

      Aşağıda bir örnek verilmiştir:

      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
      }
      
  8. Aşağıdaki CLI komutunu çalıştırarak önceki bölümde (olay hub'ı, depolama hesabı, işlev uygulaması, Azure Synapse Analytics) belirtilen tüm kaynakları dağıtın:

    1. Komutu kopyalayıp Cloud Shell yapıştırın. Alternatif olarak, istediğiniz bir düzenleyiciye kopyalayıp yapıştırmak, değerleri ayarlamak ve ardından komutu komut satırına kopyalamak Cloud Shell.

      Önemli

      Komutunu çalıştırmadan önce aşağıdaki varlıklar için değerleri belirtin:

      • Daha önce oluşturduğunuz kaynak grubunun adı.
      • Olay hub'ı ad alanının adı.
      • Olay hub'ı adı. Değeri olduğu gibi bırakın (hubdatamigration).
      • SQL sunucusunun adı.
      • SQL kullanıcı adı ve parolası.
      • Veritabanının adı.
      • Depolama hesabının adı.
      • İşlev uygulamasının adı.
      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>
      
    2. Komutu çalıştırmak için Cloud Shell penceresinde ENTER tuşuna basın. Bir grup kaynak oluştururken bu işlem biraz zaman alır. Komutun sonucunda hata olmadığını doğrular.

  9. Portalda Cloud Shell (veya) Cloud Shell penceresinin sağ üst köşesindeki X düğmesini seçerek Cloud Shell kapatın.

Kaynakların oluşturulanı doğrulayın

  1. Sol Azure portal Kaynak grupları'ı seçin.

  2. Arama kutusuna kaynak grubu adının girerek kaynak grupları listesini filtrele.

  3. Listeden kaynak grubu seçin.

    Kaynak grubunuzu seçin

  4. Kaynak grubunda aşağıdaki kaynakları gördüğünüzden onaylayın:

    Kaynak grubunda kaynaklar

Azure Synapse Analytics'de tablo oluşturma

CreateDataWarehouseTable.sql betiği çalıştırarak veri ambarında bir tablo oluşturun. Betiği çalıştırmak için portalda Visual Studio veya Sorgu Düzenleyicisi kullanabilirsiniz. Aşağıdaki adımlarda, aşağıdaki adımları kullanarak Sorgu Düzenleyicisi:

  1. Kaynak grubunun kaynak listesinde ayrılmış SQL havuzu'nızı seçin.

  2. Ayrılmış SQL havuzu sayfasının sol menüsündeki Ortak Görevler bölümünde Sorgu düzenleyicisi (önizleme) öğesini seçin.

    Azure Synapse Analytics sayfası

  3. SQL sunucusu için kullanıcı ve parola adını girin ve Tamam'ı seçin. İstemcinizin SQL server'a erişmesini izin verme hakkında bir ileti görüyorsanız şu adımları izleyin:

    1. Şu bağlantıyı seçin: Sunucu güvenlik duvarını ayarlayın.
    2. Güvenlik duvarı ayarları sayfasında, araç çubuğunda İstemci IP'sini ekle'yi ve ardından araç çubuğunda Kaydet'i seçin.
    3. Başarılı iletisinde Tamam'ı seçin.
    4. Ayrılmış SQL havuzu sayfasına geri gidin ve sol menüden Sorgu düzenleyicisi (önizleme) öğesini seçin.
    5. Kullanıcı ve parola girin ve ardından Tamam'ı seçin.
  4. Sorgu penceresinde aşağıdaki SQL betiğine kopyalayıp çalıştırın:

    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);
    

    SQL sorgusu çalıştırma

  5. Öğreticinin sonunda verilerin oluşturulanı doğrulamak için bu sekmeyi veya pencereyi açık tutabilirsiniz.

İşlev çalışma zamanı sürümünü güncelleştirme

  1. Web tarayıcısında başka bir sekme açın ve Azure portal.

  2. Sol Azure portal Kaynak grupları'ı seçin.

  3. İşlev uygulamasının mevcut olduğu kaynak grubunu seçin.

  4. Kaynak grubunun kaynak listesinde işlev uygulamasını seçin.

  5. Sol menüde Ayarlar'ın altında Yapılandırma'ya tıklayın.

  6. Sağ bölmede İşlev çalışma zamanı ayarları sekmesine geçiş yapın.

  7. Çalışma zamanı sürümünü ~3 olarak güncelleştirin.

    İşlev çalışma zamanı sürümünü güncelleştirme

  8. Araç çubuğunda Kaydet’i seçin.

  9. Değişiklikleri Kaydet onay kutusu üzerinde devam' ı seçin.

Azure İşlevleri uygulamasını yayımlama

  1. Visual Studio 'Yu başlatın.

  2. Önkoşulların bir parçası olarak GitHub 'Dan Indirdiğiniz Eventhubscaptureeventgriddemo. sln çözümünü açın. /samples/e2e/EventHubsCaptureEventGridDemoKlasörü klasöründe bulabilirsiniz.

  3. Çözüm Gezgini, Functionegdwdumper projesi öğesine sağ tıklayın ve Yayımla' yı seçin.

  4. Aşağıdaki ekranı görürseniz Başlat' ı seçin.

    Yayımla bölümündeki Başlat düğmesi.

  5. Yayımla Iletişim kutusunda hedef için Azure ' u seçin ve İleri' yi seçin.

  6. Azure işlev uygulaması (Windows) öğesini seçin ve İleri' yi seçin.

  7. İşlevler örneği sekmesinde Azure aboneliğinizi seçin, kaynak grubunu genişletin ve işlev uygulaması ' nı seçin ve ardından son' u seçin. Henüz yapmadıysanız Azure hesabınızda oturum açmanız gerekir.

    İşlev uygulamanızı seçin

  8. Yayımla sayfasında, hizmet bağımlılıkları bölümünde, depolama için Yapılandır ' ı seçin.

    Depolama hizmeti bağımlılığı için bağlantıyı Yapılandır ' ı seçin

  9. Bağımlılığı Yapılandır sayfasında, aşağıdaki adımları izleyin:

    1. daha önce oluşturduğunuz Depolama hesabını seçin ve ardından İleri' yi seçin.

      Depolama hesabı seçme

    2. Bağlantı dizesi için bir ad belirtin ve bağlantı dizesini kaydet seçeneği için hiçbiri ' ni seçin ve ardından İleri' yi seçin.

      Bağlantı dizesi adını belirtin

    3. C# kod dosyası ve gizli dizileri depolama seçeneğini belirleyip son' u seçin.

      Değişikliklerin özetini gözden geçirin

  10. Visual Studio profili yapılandırdığında Yayımla’yı seçin.

    Yayımla ' yı seçin

  11. Azure işlevi sayfası açık olan sekmede Sol menüdeki işlevler ' i seçin. Eventgridtriggermigratedata işlevinin listede görüntülendiğini doğrulayın. Bunu görmüyorsanız, Visual Studio 'dan yeniden yayımlamayı deneyin ve ardından portalda sayfayı yenileyin.

    İşlev oluşturmayı Onayla

İşlevi yayımladıktan sonra olaya abone olmaya hazır olursunuz.

Olaya abone olma

  1. Yeni bir sekmede veya bir Web tarayıcısının yeni penceresinde Azure Portalgidin.

  2. Azure portal Sol menüdeki kaynak grupları ' nı seçin.

  3. Arama kutusuna kaynak grubunuzun adını girerek kaynak grupları listesini filtreleyin.

  4. Listeden kaynak grubunuzu seçin.

  5. Kaynak listesinden Event Hubs ad alanını seçin.

  6. Event Hubs ad alanı sayfasında, sol taraftaki menüden Olaylar ' ı seçin ve ardından araç çubuğunda + olay aboneliği ' ni seçin.

    Event Hubs ad alanı için olaylar sayfasında olay aboneliği Ekle bağlantısı

  7. Olay aboneliği oluştur sayfasında, aşağıdaki adımları izleyin:

    1. Olay aboneliği için bir ad girin.

    2. Sistem konusu için bir ad girin. Bir sistem konusu, gönderenin olayları gönderebilmesi için bir uç nokta sağlar. Daha fazla bilgi için bkz. sistem konuları

    3. Uç nokta türü Için Azure işlevi' ni seçin.

    4. Uç nokta için bağlantıyı seçin.

    5. Azure Işlevi Seç sayfasında, otomatik olarak doldurulmamışsa bu adımları izleyin.

      1. Azure işlevi olan Azure aboneliğini seçin.
      2. İşlevin kaynak grubunu seçin.
      3. İşlev uygulamasını seçin.
      4. Dağıtım yuvasını seçin.
      5. Eventgridtriggermigratedata işlevini seçin.
    6. Azure Işlevi Seç sayfasında Seçimi Onayla' yı seçin.

    7. Ardından, olay aboneliği oluştur sayfasına dönün, Oluştur' u seçin.

      İşlevini kullanarak bir olay aboneliği oluşturma

  8. Olay aboneliğinin oluşturulduğunu doğrulayın. Event Hubs ad alanı için Olaylar sayfasındaki olay abonelikleri sekmesine geçin.

    Olay aboneliğini Onayla

  9. Kaynak grubundaki kaynak listesinde App Service planı (App Service değil) seçin.

Veri oluşturmak için uygulama çalıştırma

Olay Hub 'ınızı ayarlamayı tamamladınız, SQL havuzunu (eski adıyla SQL veri ambarı), Azure işlev uygulamasını ve olay aboneliğini ayırabilirsiniz. Olay hub’ı için veri oluşturan bir uygulamayı çalıştırmadan önce birkaç değeri yapılandırmanız gerekir.

  1. Azure portal, daha önce yaptığınız gibi kaynak grubunuza gidin.

  2. Event Hubs ad alanını seçin.

  3. Event Hubs ad alanı sayfasında sol menüdeki paylaşılan erişim ilkeleri ' ni seçin.

  4. İlke listesinde RootManageSharedAccessKey öğesini seçin.

    Event Hubs ad alanı için paylaşılan erişim ilkeleri sayfası

  5. Bağlantı dizesi-birincil anahtar metin kutusunun yanındaki Kopyala düğmesini seçin.

  6. Visual Studio çözümünüze geri dönün.

  7. WindTurbineDataGenerator projesine sağ tıklayın ve Başlangıç projesi olarak ayarla' yı seçin.

  8. WindTurbineDataGenerator projesinde program.cs dosyasını açın.

  9. <EVENT HUBS NAMESPACE CONNECTION STRING>Portaldan kopyaladığınız bağlantı dizesiyle değiştirin.

  10. <EVENT HUB NAME>Olay Hub 'ının adıyla değiştirin.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  11. Çözümü derleyin. WindTurbineGenerator.exe uygulamasını çalıştırın.

  12. Birkaç dakika sonra sorgu penceresini açık olan diğer tarayıcı sekmesinde, geçirilen veriler için veri ambarınızdaki tabloyu sorgulayın.

    select * from [dbo].[Fact_WindTurbineMetrics]    
    

    Sorgu sonuçları

Çözümü izleme

Bu bölüm, çözümü izlemeye veya sorunlarını gidermenize yardımcı olur.

Depolama hesabındaki yakalanan verileri görüntüleme

  1. Kaynak grubuna gidin ve olay verilerini yakalamak için kullanılan depolama hesabını seçin.

  2. Depolama hesabı sayfasında sol menüdeki Depolama Gezgini (Önizleme) öğesini seçin.

  3. BLOB kapsayıcıları' nı genişletin ve windturbinecapture' ı seçin.

  4. Sağ bölmedeki Event Hubs ad alanıyla aynı adlı klasörü açın.

  5. Olay Hub 'ınız (hubdatamigration) ile aynı adlı klasörü açın.

  6. Klasörlerin ayrıntılarına gidin ve AVRO dosyalarını görürsünüz. Aşağıda bir örnek verilmiştir:

    Depolamadaki yakalanan dosya

Event Grid tetikleyicisinin işlevi çağırılacağını doğrulayın

  1. Kaynak grubuna gidin ve işlev uygulamasını seçin.

  2. Sol menüdeki işlevler ' i seçin.

  3. Listeden Eventgridtriggermigratedata işlevini seçin.

  4. İşlev sayfasında, sol taraftaki menüden izleyici ' yi seçin.

  5. Uygulama öngörülerini, çağırma günlüklerini yakalamak üzere yapılandırmak için Yapılandır ' ı seçin.

  6. Yeni bir Application Insights kaynağı oluşturun veya var olan bir kaynağı kullanın.

  7. İşlevin izleyici sayfasına geri gidin.

  8. Olayları gönderen istemci uygulamasının (WindTurbineDataGenerator) hala çalıştığını doğrulayın. Aksi takdirde, uygulamayı çalıştırın.

  9. Birkaç dakika bekleyin (5 dakika veya daha fazla) ve işlev etkinleştirmeleri görmek için Yenile düğmesini seçin.

    İşlev etkinleştirmeleri

  10. Ayrıntıları görmek için bir çağrı seçin.

    Event Grid, olay verilerini abonelere dağıtır. Aşağıdaki örnek, bir olay hub'ı üzerinden veri akışı bir blobda yakalanırken oluşturulan olay verilerini gösterir. Özellikle, nesnesinde fileUrl özelliğin data depolamada blobu noktalara dikkat eder. İşlev uygulaması yakalanan verilerle blob dosyasını almak için bu URL'yi kullanır.

    {
        "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"
    }
    

Verilerin ayrılmış SQL havuzunda depolanmış olduğunu doğrulayın

Sorgu penceresinin açık olduğu tarayıcı sekmesinde, geçirilen veriler için ayrılmış SQL havuzunuzdaki tabloyu sorgulayabilirsiniz.

Sorgu sonuçları

Sonraki adımlar