Aracılığıyla paylaş


PolyBase'i izleme ve sorunlarını giderme

Şunlar için geçerlidir: SQL Server

PolyBase sorunlarını gidermek için bu konuda bulunan teknikleri kullanın.

Katalog görünümleri

PolyBase işlemlerini yönetmek için burada listelenen katalog görünümlerini kullanın.

View Description
sys.external_tables (Transact-SQL) Dış tabloları tanımlar.
sys.external_data_sources (Transact-SQL) Dış veri kaynaklarını tanımlar.
sys.external_file_formats (Transact-SQL) Dış dosya biçimlerini tanımlar.

Dinamik yönetim görünümleri

PolyBase sorguları, sys.dm_exec_distributed_request_steps içinde bir dizi adıma ayrılır. Aşağıdaki tablo, adım adları ile ilişkili DMV'ler arasındaki eşleştirmeyi sağlar.

PolyBase Adımı İlişkili Motorlu Taşıtlar Dairesi (DMV)
HadoopJobOperation sys.dm_exec_external_operations
RandomIdOperation sys.dm_exec_distributed_request_steps
HadoopRoundRobinOperation sys.dm_exec_dms_workers
StreamingReturnOperation sys.dm_exec_dms_workers
OnOperation sys.dm_exec_distributed_sql_requests

DMV'leri kullanarak PolyBase sorgularını izleme

Aşağıdaki DMV'leri kullanarak PolyBase sorgularını izleyin ve sorunlarını giderin. SQL Server için PolyBase'de aşağıdaki performans konularını da göz önünde bulundurun.

  1. En uzun süre çalışan sorguları bulma

    En uzun süre çalışan sorgunun yürütme kimliğini kaydedin.

     -- Find the longest running query  
    SELECT execution_id, st.text, dr.total_elapsed_time  
    FROM sys.dm_exec_distributed_requests  dr  
          cross apply sys.dm_exec_sql_text(sql_handle) st  
    ORDER BY total_elapsed_time DESC;  
    
  2. Dağıtılmış sorgunun en uzun çalışan adımını bulma

    Önceki adımda kaydedilen yürütme kimliğini kullanın. En uzun çalışan adımın adım dizinini kaydedin.

    location_type En uzun çalışan adımı denetleyin:

    • Head veya Compute: SQL işlemini ifade eder. Adım 3a ile devam edin.

      • DMS: PolyBase Veri Taşıma Hizmeti işlemini ifade eder. 3b. Adımla devam edin.
      -- Find the longest running step of the distributed query plan  
      SELECT execution_id, step_index, operation_type, distribution_type,   
      location_type, status, total_elapsed_time, command   
      FROM sys.dm_exec_distributed_request_steps   
      WHERE execution_id = 'QID4547'   
      ORDER BY total_elapsed_time DESC;  
      
  3. En uzun çalışan adımın yürütme ilerlemesini bulma

    1. SQL adımının yürütme ilerleme durumunu bulma

      Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.

      -- Find the execution progress of SQL step    
      SELECT execution_id, step_index, distribution_id, status,   
      total_elapsed_time, row_count, command   
      FROM sys.dm_exec_distributed_sql_requests   
      WHERE execution_id = 'QID4547' and step_index = 1;  
      
    2. DMS adımının yürütme ilerleme durumunu bulma

      Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.

      -- Find the execution progress of DMS step    
      SELECT execution_id, step_index, dms_step_index, status,   
      type, bytes_processed, total_elapsed_time  
      FROM sys.dm_exec_dms_workers   
      WHERE execution_id = 'QID4547'   
      ORDER BY total_elapsed_time DESC;
      
  4. Dış DMS işlemleri hakkındaki bilgileri bulma

    Önceki adımlarda kaydedilen yürütme kimliğini ve adım dizinini kullanın.

    SELECT execution_id, step_index, dms_step_index, compute_node_id,   
    type, input_name, length, total_elapsed_time, status   
    FROM sys.dm_exec_external_work   
    WHERE execution_id = 'QID4547' and step_index = 7   
    ORDER BY total_elapsed_time DESC;  
    

PolyBase sorgu planını görüntüleme

SQL Server 2019'da (15.x), izleme bayrağı 6408'i kullanarak dış veri kaynağına geçirilen yürütme planını görüntüleyebilirsiniz. Daha fazla bilgi için bkz. Dış gönderimin gerçekleşip gerçekleşmediğini belirleme.

SQL Server 2016 (13.x) veya SQL Server 2017'de (14.x) bu alternatif strateji çalışır:

  1. SQL Server Management Studio'da Gerçek Yürütme Planını Dahil Et 'i (Ctrl + M) etkinleştirin ve sorguyu çalıştırın.

  2. Yürütme planı sekmesini seçin.

    PolyBase sorgu yürütme planının SQL Server Management Studio ekran görüntüsü.

  3. Uzak Sorgu işlecine sağ tıklayın ve Özellikler'i seçin.

  4. XML uzak sorgu planını görüntülemek için Uzak Sorgu değerini kopyalayıp bir metin düzenleyicisine yapıştırın. Aşağıda bir örnek gösterilmiştir.

Etiketler SQL sql_operation Server içindeki işlemleri gösterir. dsql_operations "ON" olmayan operation_types, PolyBase Veri Taşıma hizmeti tarafından kullanılan dış işleçleri gösterir.

<dsql_query number_nodes="1" number_distributions="8" number_distributions_per_node="8">  
   <sql>ExecuteMemo explain query</sql>  
   <dsql_operations total_cost="0" total_number_operations="6">  
     <dsql_operation operation_type="RND_ID">  
       <identifier>TEMP_ID_74</identifier>  
     </dsql_operation>  
     <dsql_operation operation_type="ON">  
       <location permanent="false" distribution="AllDistributions" />  
       <sql_operations>  
         <sql_operation type="statement">CREATE TABLE [tempdb].[dbo].[TEMP_ID_74] ([SensorKey] INT NOT NULL, [CustomerKey] INT NOT NULL, [GeographyKey] INT, [Speed] FLOAT(53) NOT NULL, [YearMeasured] INT NOT NULL ) WITH(DATA_COMPRESSION=PAGE);</sql_operation>  
       </sql_operations>  
     </dsql_operation>  
     <dsql_operation operation_type="ON">  
       <location permanent="false" distribution="AllDistributions" />  
       <sql_operations>  
         <sql_operation type="statement">EXEC [tempdb].[sys].[sp_addextendedproperty] @name=N'IS_EXTERNAL_STREAMING_TABLE', @value=N'true', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'TEMP_ID_74'</sql_operation>  
       </sql_operations>  
     </dsql_operation>  
     <dsql_operation operation_type="ON">  
       <location permanent="false" distribution="AllDistributions" />  
       <sql_operations>  
         <sql_operation type="statement">UPDATE STATISTICS [tempdb].[dbo].[TEMP_ID_74] WITH ROWCOUNT = 2401, PAGECOUNT = 7</sql_operation>  
       </sql_operations>  
     </dsql_operation>  
     <dsql_operation operation_type="MULTI">  
       <dsql_operation operation_type="STREAMING_RETURN">  
         <operation_cost cost="1" accumulative_cost="1" average_rowsize="24" output_rows="5762.1" />  
         <location distribution="AllDistributions" />  
         <select>SELECT [T1_1].[SensorKey] AS [SensorKey],  
          [T1_1].[CustomerKey] AS [CustomerKey],  
          [T1_1].[GeographyKey] AS [GeographyKey],  
          [T1_1].[Speed] AS [Speed],  
          [T1_1].[YearMeasured] AS [YearMeasured]  
   FROM   (SELECT [T2_1].[SensorKey] AS [SensorKey],  
                  [T2_1].[CustomerKey] AS [CustomerKey],  
                  [T2_1].[GeographyKey] AS [GeographyKey],  
                  [T2_1].[Speed] AS [Speed],  
                  [T2_1].[YearMeasured] AS [YearMeasured]  
           FROM   [tempdb].[dbo].[TEMP_ID_74] AS T2_1  
           WHERE  ([T2_1].[Speed] > CAST (6.50000000000000000E+001 AS FLOAT))) AS T1_1</select>  
       </dsql_operation>  
       <dsql_operation operation_type="ExternalRoundRobinMove">  
         <operation_cost cost="16.594848" accumulative_cost="17.594848" average_rowsize="24" output_rows="19207" />  
         <external_uri>hdfs://<ip address>:8020/Demo/car_sensordata.tbl/</external_uri>  
         <destination_table>[TEMP_ID_74]</destination_table>  
       </dsql_operation>  
     </dsql_operation>  
     <dsql_operation operation_type="ON">  
       <location permanent="false" distribution="AllDistributions" />  
       <sql_operations>  
         <sql_operation type="statement">DROP TABLE [tempdb].[dbo].[TEMP_ID_74]</sql_operation>  
       </sql_operations>  
     </dsql_operation>  
   </dsql_operations>  
</dsql_query>  

PolyBase grubundaki düğümleri izleme

PolyBase ölçek genişletme grubunun bir parçası olarak bir makine kümesini yapılandırdıktan sonra makinelerin durumunu izleyebilirsiniz. Ölçek genişletme grubu oluşturma hakkında ayrıntılı bilgi için bkz. PolyBase ölçek genişletme grupları.

  1. Bir grubun baş düğümünde SQL Server'a bağlanın.

  2. PolyBase Grubundaki tüm düğümleri görüntülemek için DMV sys.dm_exec_compute_nodes (Transact-SQL) çalıştırın.

  3. PolyBase Grubundaki tüm düğümlerin durumunu görüntülemek için DMV sys.dm_exec_compute_node_status (Transact-SQL) çalıştırın.

Hadoop ad düğümü yüksek kullanılabilirlik

PolyBase bugün Zookeeper veya Knox gibi Ad Düğümü HA hizmetleriyle arabirim oluşturmaz. Ancak, işlevselliği sağlamak için kullanılabilecek kanıtlanmış bir geçici çözüm vardır.

Geçici çözüm: Etkin Ad Düğümüne bağlantıları yeniden yönlendirmek için DNS adını kullanın. Bunu yapmak için Dış Veri Kaynağı'nın Ad Düğümü ile iletişim kurmak için bir DNS adı kullandığından emin olmanız gerekir. Ad Düğümü Yük Devretmesi gerçekleştiğinde, Dış Veri Kaynağı tanımında kullanılan DNS adıyla ilişkili IP adresini değiştirmeniz gerekir. Bu, tüm yeni bağlantıları doğru Ad Düğümüne yeniden yönlendirecektir. Yük devretme gerçekleştiğinde mevcut bağlantılar başarısız olur. Bu işlemi otomatikleştirmek için bir "heartbeat" etkin Name Node'a ping atabilir. Kalp atışı başarısız olursa yük devretme gerçekleştiği varsayılabilir ve otomatik olarak ikincil IP adresine geçilebilir.

Günlük dosyası konumları

Windows sunucularında, günlükler varsayılan olarak yükleme dizini yolunda bulunur: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\.

Linux sunucularında günlükler varsayılan olarak içinde /var/opt/mssql/log/polybasebulunur.

PolyBase veri taşıma günlük dosyaları:

  • <INSTANCENAME>_<SERVERNAME>_Dms_errors.log
  • <INSTANCENAME>_<SERVERNAME>_Dms_movement.log

PolyBase altyapısı hizmet günlük dosyaları:

  • <INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log
  • <INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log
  • <INSTANCENAME>_<SERVERNAME>_DWEngine_server.log

Windows'ta PolyBase Java günlük dosyaları:

  • <SERVERNAME> Dms polybase.log
  • <SERVERNAME>_DWEngine_polybase.log

Linux'ta PolyBase Java günlük dosyaları:

  • /var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log
  • /var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log

Hata iletileri ve olası çözümler

Yaygın sorun giderme senaryoları için bkz. PolyBase Hataları ve Olası Çözümler.