Panoları kullanarak Azure Databricks ölçümlerini görselleştirme

Dekont

Bu makale, GitHub'da barındırılan bir açık kaynak kitaplığına dayanır: https://github.com/mspnp/spark-monitoring.

Özgün kitaplık, Azure Databricks Runtimes 10.x (Spark 3.2.x) ve önceki sürümleri destekler.

Databricks, aşağıdaki dalda Azure Databricks Runtimes 11.0 (Spark 3.3.x) ve üzerini l4jv2 desteklemek için güncelleştirilmiş bir sürüme katkıda bulunmuştur: https://github.com/mspnp/spark-monitoring/tree/l4jv2.

Databricks Runtimes'da kullanılan farklı günlük sistemleri nedeniyle 11.0 sürümünün geriye dönük olarak uyumlu olmadığını lütfen unutmayın. Databricks Runtime'ınız için doğru derlemeyi kullandığınızdan emin olun. Kitaplık ve GitHub deposu bakım modundadır. Daha fazla sürüm için plan yoktur ve sorun desteği yalnızca en iyi çabayı gösterir. Azure Databricks ortamlarınızı izlemek ve günlüğe kaydetmek için kitaplık veya yol haritasıyla ilgili ek sorularınız için lütfen ile iletişime geçin azure-spark-monitoring-help@databricks.com.

Bu makalede, performans sorunları için Azure Databricks işlerini izlemek için Grafana panosunun nasıl ayarlanacağı gösterilmektedir.

Azure Databricks , büyük veri analizi ve yapay zeka (AI) çözümlerini hızla geliştirmeyi ve dağıtmayı kolaylaştıran hızlı, güçlü ve işbirliğine dayalı bir Apache Spark tabanlı analiz hizmetidir. İzleme, Azure Databricks iş yüklerini üretim ortamında çalıştırmanın kritik bir bileşenidir. İlk adım, ölçümleri analiz için bir çalışma alanında toplamaktır. Azure'da günlük verilerini yönetmek için en iyi çözüm Azure İzleyici'dir. Azure Databricks, Günlük verilerinin Azure İzleyici'ye gönderilmesini yerel olarak desteklemez, ancak bu işleve yönelik bir kitaplık GitHub'da kullanılabilir.

Bu kitaplık, Azure Databricks hizmet ölçümlerinin yanı sıra Apache Spark yapısı akış sorgusu olay ölçümlerinin günlüğe kaydedilmesini sağlar. Bu kitaplığı bir Azure Databricks kümesine başarıyla dağıttıktan sonra, üretim ortamınızın bir parçası olarak dağıtabileceğiniz bir dizi Grafana panosunu daha fazla dağıtabilirsiniz.

Screenshot of the dashboard.

Önkoşullar

Azure Databricks kümenizi GitHub benioku dosyasında açıklandığı gibi izleme kitaplığını kullanacak şekilde yapılandırın.

Azure Log Analytics çalışma alanını dağıtma

Azure Log Analytics çalışma alanını dağıtmak için şu adımları izleyin:

  1. Dizine /perftools/deployment/loganalytics gidin.

  2. logAnalyticsDeploy.json Azure Resource Manager şablonunu dağıtın. Resource Manager şablonlarını dağıtma hakkında daha fazla bilgi için bkz . Resource Manager şablonları ve Azure CLI ile kaynakları dağıtma. Şablon aşağıdaki parametrelere sahiptir:

    • konum: Log Analytics çalışma alanının ve panoların dağıtıldığı bölge.
    • serviceTier: Çalışma alanı fiyatlandırma katmanı. Geçerli değerlerin listesi için buraya bakın.
    • dataRetention (isteğe bağlı): Günlük verilerinin Log Analytics çalışma alanında kaç gün tutuldu? Varsayılan değer 30 gündür. Fiyatlandırma katmanı ise Free, veri saklama yedi gün olmalıdır.
    • workspaceName (isteğe bağlı): Çalışma alanı için bir ad. Belirtilmezse, şablon bir ad oluşturur.
    az deployment group create --resource-group <resource-group-name> --template-file logAnalyticsDeploy.json --parameters location='East US' serviceTier='Standalone'
    

Bu şablon çalışma alanını oluşturur ve ayrıca pano tarafından kullanılan önceden tanımlanmış bir sorgu kümesi oluşturur.

Grafana'yı sanal makinede dağıtma

Grafana, Azure İzleyici için Grafana eklentisini kullanarak Azure Log Analytics çalışma alanınızda depolanan zaman serisi ölçümlerini görselleştirmek için dağıtabileceğiniz açık kaynak bir projedir. Grafana bir sanal makinede (VM) yürütülür ve depolama hesabı, sanal ağ ve diğer kaynaklar gerektirir. Bitnami sertifikalı Grafana görüntüsüne ve ilişkili kaynaklara sahip bir sanal makine dağıtmak için şu adımları izleyin:

  1. Grafana için Azure Market görüntü koşullarını kabul etmek için Azure CLI'yi kullanın.

    az vm image terms accept --publisher bitnami --offer grafana --plan default
    
  2. GitHub deposunun /spark-monitoring/perftools/deployment/grafana yerel kopyasındaki dizine gidin.

  3. grafanaDeploy.json Resource Manager şablonunu aşağıdaki gibi dağıtın:

    export DATA_SOURCE="https://raw.githubusercontent.com/mspnp/spark-monitoring/master/perftools/deployment/grafana/AzureDataSource.sh"
    az deployment group create \
        --resource-group <resource-group-name> \
        --template-file grafanaDeploy.json \
        --parameters adminPass='<vm password>' dataSource=$DATA_SOURCE
    

Dağıtım tamamlandıktan sonra Grafana'nın bitnami görüntüsü sanal makineye yüklenir.

Grafana parolasını güncelleştirme

Kurulum işleminin bir parçası olarak, Grafana yükleme betiği yönetici kullanıcı için geçici bir parola oluşturur. Oturum açmak için bu geçici parolaya ihtiyacınız vardır. Geçici parolayı almak için şu adımları izleyin:

  1. Azure portalında oturum açın.
  2. Kaynakların dağıtıldığı kaynak grubunu seçin.
  3. Grafana'nın yüklendiği VM'yi seçin. Dağıtım şablonunda varsayılan parametre adını kullandıysanız, VM adı sparkmonitoring-vm-grafana ile önceden oluşturulmuş olur.
  4. Destek + sorun giderme bölümünde Önyükleme tanılaması'na tıklayarak önyükleme tanılama sayfasını açın.
  5. Önyükleme tanılama sayfasında Seri günlük'e tıklayın.
  6. Şu dizeyi arayın: "Bitnami uygulama parolasını olarak ayarlama".
  7. Parolayı güvenli bir konuma kopyalayın.

Ardından, aşağıdaki adımları izleyerek Grafana yönetici parolasını değiştirin:

  1. Azure portalında VM'yi seçin ve Genel Bakış'a tıklayın.
  2. Genel IP adresini kopyalayın.
  3. Bir web tarayıcısı açın ve şu URL'ye gidin: http://<IP address>:3000.
  4. Grafana oturum açma ekranında kullanıcı adı için admin girin ve önceki adımlarda yer alan Grafana parolasını kullanın.
  5. Oturum açtıktan sonra Yapılandırma 'yı (dişli simgesi) seçin.
  6. Sunucu Yönetici'ı seçin.
  7. Kullanıcılar sekmesinde yönetici oturum açma bilgilerini seçin.
  8. Parolayı güncelleştirin.

Azure İzleyici veri kaynağı oluşturma

  1. Grafana'nın Log Analytics çalışma alanınıza erişimi yönetmesini sağlayan bir hizmet sorumlusu oluşturun. Daha fazla bilgi için bkz . Azure CLI ile Azure hizmet sorumlusu oluşturma

    az ad sp create-for-rbac --name http://<service principal name> \
                    --role "Log Analytics Reader" \
                    --scopes /subscriptions/mySubscriptionID
    
  2. Bu komutun çıktısındaki appId, password ve tenant değerlerini not edin:

    {
        "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "displayName": "azure-cli-2019-03-27-00-33-39",
        "name": "http://<service principal name>",
        "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    
  3. Daha önce açıklandığı gibi Grafana'da oturum açın. Yapılandırma (dişli simgesi) ve ardından Veri Kaynakları'nı seçin.

  4. Veri Kaynakları sekmesinde Veri kaynağı ekle'ye tıklayın.

  5. Veri kaynağı türü olarak Azure İzleyici'yi seçin.

  6. Ayarlar bölümünde, Ad metin kutusuna veri kaynağı için bir ad girin.

  7. Azure İzleyici API'sinin Ayrıntıları bölümünde aşağıdaki bilgileri girin:

    • Abonelik Kimliği: Azure abonelik kimliğiniz.
    • Kiracı Kimliği: Önceki kiracı kimliği.
    • İstemci Kimliği: Önceki "appId" değeri.
    • İstemci Gizli Anahtarı: Önceki "parola" değeri.
  8. Azure Log Analytics API'si Ayrıntıları bölümünde Azure İzleyici API'si ile Aynı Ayrıntılar onay kutusunu işaretleyin.

  9. Kaydet ve Test'e tıklayın. Log Analytics veri kaynağı doğru yapılandırıldıysa, bir başarı iletisi görüntülenir.

Panoyu oluşturma

Aşağıdaki adımları izleyerek Grafana'da panolar oluşturun:

  1. GitHub deposunun /perftools/dashboards/grafana yerel kopyasındaki dizine gidin.

  2. Şu betiği çalıştırın:

    export WORKSPACE=<your Azure Log Analytics workspace ID>
    export LOGTYPE=SparkListenerEvent_CL
    
    sh DashGen.sh
    

    Betiğin çıktısı SparkMonitoringDash.json adlı bir dosyadır.

  3. Grafana panosuna dönün ve Oluştur'u (artı simgesi) seçin.

  4. İçeri aktar'ı seçin.

  5. .json Dosyasını Karşıya Yükle'ye tıklayın.

  6. 2. adımda oluşturulan SparkMonitoringDash.json dosyasını seçin.

  7. Seçenekler bölümünde, ALA'nın altında daha önce oluşturulan Azure İzleyici veri kaynağını seçin.

  8. İçe aktar'a tıklayın.

Panolardaki görselleştirmeler

Hem Azure Log Analytics hem de Grafana panoları bir dizi zaman serisi görselleştirme içerir. Her grafik, Apache Spark işi, işin aşamaları ve her aşamayı oluşturan görevlerle ilgili ölçüm verilerinin zaman serisi çizimidir.

Görselleştirmeler şunlardır:

İş gecikme süresi

Bu görselleştirme, bir işin genel performansına ilişkin kaba bir görünüm olan işin yürütme gecikme süresini gösterir. Başlangıçtan tamamlanmaya kadar olan iş yürütme süresini görüntüler. İş başlangıç saatinin, iş gönderme zamanıyla aynı olmadığını unutmayın. Gecikme süresi, küme kimliği ve uygulama kimliğiyle dizine alınan iş yürütmesinin yüzdebirlik dilimleri (%10, %30, %50, %90) olarak temsil edilir.

Aşama gecikme süresi

Görselleştirme, küme başına, uygulama başına ve tek tek aşama başına her aşamanın gecikme süresini gösterir. Bu görselleştirme, yavaş çalışan belirli bir aşamayı tanımlamak için kullanışlıdır.

Görev gecikme süresi

Bu görselleştirme, görev yürütme gecikme süresini gösterir. Gecikme süresi, küme, aşama adı ve uygulama başına görev yürütme yüzdebirliği olarak temsil edilir.

Konak başına Toplam Görev Yürütme

Bu görselleştirme, bir kümede çalışan konak başına görev yürütme gecikme süresinin toplamını gösterir. Konak başına görev yürütme gecikme süresini görüntülemek, genel görev gecikme süresi diğer konaklara göre çok daha yüksek olan konakları tanımlar. Bu, görevlerin konaklara verimsiz veya eşit olmayan bir şekilde dağıtıldığı anlamına gelebilir.

Görev ölçümleri

Bu görselleştirme, belirli bir görevin yürütülmesi için bir dizi yürütme ölçümünü gösterir. Bu ölçümler arasında veri karıştırmanın boyutu ve süresi, serileştirme ve seri durumdan çıkarma işlemlerinin süresi ve diğerleri bulunur. Ölçüm kümesinin tamamı için panelin Log Analytics sorgusunu görüntüleyin. Bu görselleştirme, bir görevi oluşturan işlemleri anlamak ve her işlemin kaynak tüketimini tanımlamak için kullanışlıdır. Grafikteki ani artışlar, araştırılması gereken yüksek maliyetli işlemleri temsil eder.

Küme aktarım hızı

Bu görselleştirme, küme ve uygulama başına yapılan iş miktarını göstermek için küme ve uygulama tarafından dizine alınan iş öğelerinin üst düzey bir görünümüdür. Küme, uygulama ve aşama başına tamamlanan iş, görev ve aşama sayısını bir dakikalık artışlarla gösterir.

Akış Aktarım Hızı/Gecikme Süresi

Bu görselleştirme, yapılandırılmış akış sorgusuyla ilişkili ölçümlerle ilgilidir. Grafikte saniye başına giriş satırı sayısı ve saniye başına işlenen satır sayısı gösterilir. Akış ölçümleri de uygulama başına temsil edilir. Yapılandırılmış akış sorgusu işlenirken OnQueryProgress olayı oluşturulduğunda ve görselleştirme bir sorgu toplu işlemini yürütmek için milisaniye cinsinden geçen süre olarak akış gecikme süresini temsil ettiğinde bu ölçümler gönderilir.

Yürütücü başına kaynak tüketimi

Sonraki bölümde pano için belirli bir kaynak türünü ve her kümede yürütücü başına nasıl kullanılacağını gösteren bir görselleştirme kümesi yer alır. Bu görselleştirmeler yürütücü başına kaynak tüketimindeki aykırı değerlerin belirlenmesine yardımcı olur. Örneğin, belirli bir yürütücü için iş ayırması dengesizse, kaynak tüketimi kümede çalışan diğer yürütücülere göre yükseltilir. Bu, bir yürütücü için kaynak tüketimindeki ani artışlarla tanımlanabilir.

Yürütücü işlem süresi ölçümleri

Sonraki bölümde, yürütücü seri hale getirme süresinin, seri durumdan çıkarma süresinin, CPU süresinin ve Java sanal makine süresinin genel yürütücü işlem süresine oranını gösteren bir pano görselleştirme kümesi yer alır. Bu, bu dört ölçümün her birinin genel yürütücü işlemeye ne kadar katkıda bulunduğunu görsel olarak gösterir.

Ölçümleri karıştırma

Son görselleştirme kümesi, tüm yürütücüler arasında yapılandırılmış bir akış sorgusuyla ilişkili veri karıştırma ölçümlerini gösterir. Bunlar, dosya sisteminin kullanıldığı sorgularda okunan karışık baytları, yazılan karışık baytları, karışık belleği ve disk kullanımını içerir.

Sonraki adımlar