Aktarım hızını artırmak için Azure Stream Analytics işini ölçeklendirme

Bu makalede, aktarım hızını artırmak için bir Azure Stream Analytics sorgusunu ayarlama açıklanmaktadır. Daha fazla bant genişliği, CPU ve bellek kaynağı kullanarak daha yüksek yükü işlemek için bu ölçeklendirme desenlerini kullanın.

Azure Stream Analytics akış birimleri (SU) cinsinden işlem kapasitesini ölçer. Her SU V2, tek bir işlem düğümünün tam kapasitesini temsil eder. Aşırı derecede paralel bir sorgu, her bir girdi bölümünün bağımsız olarak işlenebildiği ve bölümler arasında hiçbir verinin paylaşılmadığı bir sorgudur.

Prerequisites

Başlamadan önce şu makaleleri gözden geçirin:

Tam olarak paralelleştirilebilir sorguyu ölçeklendirme

Sorgunuz giriş bölümleri arasında utanç verici derecede paralelse şu adımları izleyin:

  1. PARTITION BY anahtar sözcüğünü kullanmak için sorgunuzu yazın. Daha fazla bilgi için bkz. Azure Stream Analytics'te sorgu paralelleştirmeyi kullanma.

  2. Sorgunuzda kullanılan çıkış türlerine bağlı olarak, bazı çıkışlar paralelleştirilebilir olmayabilir veya utanç verici şekilde paralel olması için daha fazla yapılandırma gerekebilir. Örneğin, çıkışlarınızı paralelleştirme için yapılandırın. Tüm çıkış türleri paralel yazmaları desteklemez:

    Çıkış türü Paralelleştirme desteği
    Azure Blob Depolama, Azure Tablo Depolaması, Azure Data Lake Storage, Azure Service Bus, Azure İşlevleri Automatic
    Azure SQL Veritabanı, Azure Synapse Analytics Opsiyonel. Yapılandırma gerektirir
    Azure Event Hubs PartitionKey PARTITION BY alanıyla eşleşecek şekilde ayarlanması gerekir (genellikle PartitionId). Çapraz geçişten kaçınmak için giriş ve çıkış bölümü sayılarını eşleştirin.
    Power BI Paralelleştirilebilir değil. Çıkışlar havuza gönderilmeden önce her zaman birleştirilir
  3. Maksimum ulaşılabilir aktarım hızını ölçmek için sorgunuzu 1 SU V2 (tek bir bilgi işlem düğümünün tam kapasitesidir) ile çalıştırın. GROUP BY kullanıyorsanız, işin kaç grup (kardinalite) işleyebileceğini ölçün.

  4. Sistem kaynak sınırlarını denetleyin. Aşağıdaki belirtiler, Azure Stream Analytics işinizin kaynak sınırlarına geldiğini gösterir:

    Belirti Olası neden Action
    SU % kullanım ölçümü 80% aşıyor Yüksek bellek kullanımı. Bkz. Akış birimlerini anlama ve ayarlama. Daha fazla SU V2 ekleyin.
    Çıkış zaman damgası duvar saati zamanının gerisinde kalıyor Sorgu mantığınıza bağlı olarak çıkış zaman damgasının duvar saati saatinden bir mantık uzaklığı olabilir. Ancak, kabaca aynı hızda ilerlemelidir. Çıkış zaman damgası daha fazla ve daha fazla geride kalıyorsa bu, sistemin fazla çalışmakta olduğunu gösteren bir göstergedir. Sonuç, aşağı akış çıkış kaynağı sınırlaması veya yüksek CPU kullanımı olabilir. Stream Analytics şu anda CPU kullanım ölçümü sağlamadığından ikisini ayırt etmek zor olabilir. Sorun, hedefteki kısıtlamadan kaynaklanıyorsa çıkış bölümlerini (ve paralelliği korumak için giriş bölümlerini) artırın ya da hedef kaynaklarını artırın (örneğin, Azure Cosmos DB için İstek Birimleri).
    Bölüm başına birikmiş olay metriği artmaya devam ediyor (iş diyagramında görünür) Çıkış alıcısında kısıtlama veya yüksek CPU kullanımı Yukarıdakiyle aynıdır.
  5. Kapasiteyi doğrusal olarak tahmin edin. 1 SU V2'nin neleri işleyebileceğini belirledikten sonra, bölümler arasında veri dengesizliği olmadığını varsayarak orantılı olarak daha fazla SU ekleyin.

Uyarı

Doğru sayıda SU V2 seçin: Azure Stream Analytics, her SU V2 için bir işleme düğümü oluşturur. Bölümlerin eşit şekilde dağıtılması için, SU V2 sayısını giriş bölüm sayısının bir böleni olacak şekilde ayarlayın.

Örnek: 1 SU V2 işi, 4 giriş bölümüyle 4 MB/sn işler. Yaklaşık 8 MB/sn için 2 SU V2 veya yaklaşık 16 MB/sn için 4 SU V2 kullanın. Hedef giriş hızınıza göre SU V2 sayısını seçin.

Paralel olmayan bir sorguyu ölçeklendirin

Sorgunuz utanç verici derecede paralel değilse şu adımları izleyin:

  1. Karmaşıklığı önlemek için PARTITION BY olmadan başlayın. Maksimum aktarım hızını ölçmek için sorguyu 1 SU V2 ile çalıştırın. Önceki bölümde açıklanan kaynak sınırı belirtilerinin aynısını kontrol edin (SU kullanımının %80'i aşması, çıktı zaman damgasında gecikme, artan birikme).

  2. Hedef aktarım hızınıza ulaşırsanız işiniz biter. İsteğe bağlı olarak, senaryonuz için en düşük SU V2 sayısını bulmak için 2/3 SU V2 ve 1/3 SU V2 ile test edin.

  3. İstenen aktarım hızına ulaşamıyorsanız sorguyu birden çok adıma bölün. Her adım için en fazla 1 SU V2 ayırın. Örneğin, üç adımlı bir sorgu için 3 SU V2 gerekir. Azure Stream Analytics her adımı kendisine ayrılmış özel bir düğüme yerleştirir.

  4. Aktarım hızı hedefinize hala ulaşmadıysanız girişe daha yakın adımlar için PARTITION BY ekleyin. Doğal olarak bölümlenemeyen GROUP BY işlemleri için yerel/genel toplama desenini kullanın: önce bölümlenmiş GROUP BY , ardından bölümlenmemiş GROUP BY gerçekleştirin. Örneğin, hacim 1 SU V2'nin karşılayabileceğinden fazla olduğunda her gişeden geçen arabaları 3 dakikada bir saymak için:

    WITH Step1 AS (
    SELECT COUNT(*) AS Count, TollBoothId, PartitionId
    FROM Input1 Partition By PartitionId
    GROUP BY TumblingWindow(minute, 3), TollBoothId, PartitionId
    )
    SELECT SUM(Count) AS Count, TollBoothId
    FROM Step1
    GROUP BY TumblingWindow(minute, 3), TollBoothId
    

    Bu sorgu, Adım1'de bölüm başına gişe başına arabaları sayar ve son adımda bölümlenmiş sayıları toplar.

    Sorguyu bölümledikten sonra, her bir bölümün kendi işleme düğümünde çalışması için her adımın her bölümü için 1 SU V2 ayırın.

    Uyarı

    Sorgunuz bölümlenemiyorsa, çok adımlı bir sorguya daha fazla SU V2 eklemek aktarım hızını geliştirmeyebilir. Performans kazanmak için, 4. adımda gösterilen yerel/genel toplama desenini kullanarak ilk adımlardaki hacmi azaltın.

Tek bir işte birden çok bağımsız sorgu ölçeklendirme

Birden çok kiracılı Bağımsız Yazılım Sağlayıcısı (ISV) senaryolarında, tek bir Azure Stream Analytics işinde birden çok kiracıya ait verileri işlediğinizde (her kiracı için ayrı girişler ve çıkışlar ile), her bir alt sorgunun yükü genellikle düşüktür. Aşağıdaki adımları izleyin:

  1. Sorguda PARTITION BY kullanmayın.

  2. Azure Event Hubs kullanıyorsanız, giriş bölümü sayısını en az 2 değerine düşürün.

  3. Sorguyu 1 SU V2 ile çalıştırın. İş kaynak sınırlarına ulaşana kadar alt sorgular ekleyin. Belirtiler, tamamen paralelleştirilebilir bir sorgu için olanlarla aynıdır: %80'in üzerinde SU kullanımı, çıkış zaman damgası gecikmesi veya artan birikme.

  4. Alt sorgu sınırına ulaştıktan sonra, ayrı bir işe yeni alt sorgular ekleyin. İş sayısı, bağımsız sorgu sayısıyla (yük dengesizliği olmadığı varsayılarak) doğrusal olarak ölçeklendirilir. Daha sonra, hizmet vermek istediğiniz kiracı sayısına bağlı olarak kaç SU V2 işi çalıştırmanız gerektiğini tahmin edebilirsiniz.

  5. Referans verileriyle birleştirme işlemleri için, referans verileriyle birleştirmeden önce tüm girdileri bir araya getirin, ardından olayları yeniden ayırın. Aksi takdirde, her başvuru veri birleştirmesi bellekte başvuru verilerinin ayrı bir kopyasını tutar ve bu da gereksiz bellek kullanımına neden olabilir.

Uyarı

İş başına en fazla kiracı sayısı: 3/1 SU V2 işi için 40 kiracının, 3/2 ve 1 SU V2 işleri için 60 kiracının altında kalın. Çok sayıda alt sorgu, iş denetleyicisinin işleyebileceği karmaşık topolojiler oluşturur ve bu da işin başlatılmasını engeller.

Yardım alın

Daha fazla yardım için Azure Stream Analytics için Microsoft Soru-Cevap soru sayfasını deneyin.