Dela via


Övervaka och felsöka PolyBase

gäller för:SQL Server

Om du vill felsöka PolyBase använder du de tekniker som finns i det här avsnittet.

Katalogvyer

Använd katalogvyerna som anges här för att hantera PolyBase-åtgärder.

Utsikt Beskrivning
sys.external_tables (Transact-SQL) Identifierar externa tabeller.
sys.external_data_sources (Transact-SQL) Identifierar externa datakällor.
sys.external_file_formats (Transact-SQL) Identifierar externa filformat.

Dynamiska hanteringsvyer

PolyBase-frågor delas in i en serie steg inom sys.dm_exec_distributed_request_steps. Följande tabell innehåller en mappning från stegnamnet till den associerade DMV:en.

PolyBase-steg Associerad 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

Övervaka PolyBase-frågor med DMV:er

Övervaka och felsöka PolyBase-frågor med hjälp av följande DMV:er. Överväg även följande prestandaöverväganden i PolyBase för SQL Server.

  1. Hitta de frågor som körs längst

    Registrera körnings-ID:t för den längsta frågan som körs.

     -- 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. Hitta det längsta steget i den distribuerade frågan

    Använd körnings-ID:t som registrerades i föregående steg. Registrera stegindexet för det längsta steget som körs.

    Kontrollera location_type för det längst körande steget:

    • Head eller Compute: innebär en SQL-åtgärd. Fortsätt med steg 3a.

      • DMS: innebär en PolyBase Data Movement Service-åtgärd. Fortsätt med steg 3b.
      -- 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. Hitta körningsstatusen för det längsta steget som körs

    1. Hitta exekveringsförloppet för ett SQL-steg

      Använd körnings-ID och stegindex som registrerats i de föregående stegen.

      -- 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. Hitta körningsstatusen för ett DMS-steg

      Använd körnings-ID och stegindex som registrerats i föregående steg.

      -- 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. Hitta information om externa DMS-åtgärder

    Använd körnings-ID och stegindex som registrerats i föregående steg.

    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;  
    

Visa PolyBase-frågeplanen

I SQL Server 2019 (15.x) kan du visa körningsplanen som skickas till den externa datakällan med hjälp av spårningsflagga 6408. Mer information finns i Så här anger du om en extern nedtryckning har inträffat.

I SQL Server 2016 (13.x) eller SQL Server 2017 (14.x) fungerar den här alternativa strategin:

  1. I SQL Server Management Studio ska du aktivera Inkludera faktisk körningsplan (Ctrl + M) och köra frågan.

  2. Välj fliken Körningsplan.

    Skärmbild från SQL Server Management Studio av en PolyBase-frågekörningsplan.

  3. Högerklicka på operatorn Fjärrfråga och välj Egenskaper.

  4. Kopiera och klistra in värdet Fjärrfråga i en textredigerare för att visa XML-fjärrfrågeplanen. Ett exempel visas nedan.

Taggarna sql_operation anger åtgärder i SQL Server. dsql_operations med operation_types som inte är "ON" anger de externa operatörer som används av PolyBase Data Movement-tjänsten.

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

Övervaka noder i en PolyBase-grupp

När du har konfigurerat en uppsättning datorer som en del av en PolyBase-skalningsgrupp kan du övervaka status för datorerna. För mer information om att skapa en utskalningsgrupp, se PolyBase-utskalningsgrupper.

  1. Anslut till SQL Server på huvudnoden i en grupp.

  2. Kör DMV-sys.dm_exec_compute_nodes (Transact-SQL) för att visa alla noder i PolyBase-gruppen.

  3. Kör DMV-sys.dm_exec_compute_node_status (Transact-SQL) för att visa status för alla noder i PolyBase-gruppen.

Hög tillgänglighet för Hadoop-namnnod

PolyBase samverkar inte med Name Node HA-tjänster som Zookeeper eller Knox idag. Det finns dock en beprövad lösning som kan användas för att tillhandahålla funktionerna.

Lösning: Använd DNS-namn för att omdirigera anslutningar till den aktiva namnnoden. För att kunna göra detta måste du se till att den externa datakällan använder ett DNS-namn för att kommunicera med namnnoden. När failover av Namnnod inträffar måste du ändra IP-adressen som är associerad med DNS-namnet som används i den externa datakällans definition. Då omdirigeras alla nya anslutningar till rätt namnnod. Befintliga anslutningar kommer att misslyckas när failover inträffar. För att automatisera den här processen kan ett "pulsslag" pinga den aktiva namnnoden. Om hjärtats slag misslyckas kan man anta att en övergång har inträffat och automatiskt växla till IP-adressen för sekundära.

Loggfilsplatser

I Windows-servrar finns loggarna som standard i standardsökvägen för installationskatalogen: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\.

I Linux-servrar finns loggarna som standard i /var/opt/mssql/log/polybase.

PolyBase-loggfiler för dataflytt:

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

Tjänstloggfiler för PolyBase-motorn:

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

I Windows-miljön, PolyBase Java-loggfiler:

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

I Linux, PolyBase Java-loggfiler:

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

Felmeddelanden och möjliga lösningar

Vanliga felsökningsscenarier finns i PolyBase-fel och möjliga lösningar.