Megosztás:


A PolyBase monitorozása és hibaelhárítása

A következőkre vonatkozik:SQL Server

A PolyBase hibaelhárításához használja a jelen témakörben található technikákat.

Katalógusnézetek

A PolyBase-műveletek kezeléséhez használja az itt felsorolt katalógusnézeteket.

Megtekintés Leírás
sys.external_tables (Transact-SQL) Külső táblákat azonosít.
sys.external_data_sources (Transact-SQL) Külső adatforrásokat azonosít.
sys.external_file_formats (Transact-SQL) Azonosítja a külső fájlformátumokat.

Dinamikus felügyeleti nézetek

A PolyBase-lekérdezések lépéssorozatra vannak bontva a sys.dm_exec_distributed_request_steps-on belül. Az alábbi táblázat megadja a lépésnév és a társított DMV közötti leképezést.

PolyBase-lépés Társított Járművezetői Nyilvántartási Hivatal
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

PolyBase-lekérdezések monitorozása DMV-k használatával

A PolyBase-lekérdezések monitorozása és hibaelhárítása az alábbi DMV-k használatával. Vegye figyelembe az alábbi teljesítménybeli szempontokat is az SQL ServerPolyBase-ben.

  1. A leghosszabb ideig futó lekérdezések megkeresése

    Jegyezze fel a leghosszabb ideig futó lekérdezés végrehajtási azonosítóját.

     -- 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. Az elosztott lekérdezési leghosszabb futó lépésének megkeresése

    Használja az előző lépésben rögzített végrehajtási azonosítót. Rögzítse a leghosszabb futó lépés lépésindexét.

    Ellenőrizze a leghosszabb futó lépés location_type:

    • A „Head” vagy „Compute” egy SQL-műveletre utal. Folytassa a 3a. lépéssel.

      • DMS: PolyBase Data Movement Service-műveletet jelent. Folytassa a 3b. lépéssel.
      -- 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. A leghosszabb futó lépés végrehajtási folyamatának megkeresése

    1. SQL-lépés végrehajtási folyamatának megkeresése

      Használja az előző lépésekben rögzített végrehajtási azonosítót és lépésindexet.

      -- 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-lépés végrehajtási folyamatának megkeresése

      Használja az előző lépésekben rögzített végrehajtási azonosítót és lépésindexet.

      -- 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. Keresse meg a külső DMS műveleteiről szóló információt

    Használja az előző lépésekben rögzített végrehajtási azonosítót és lépésindexet.

    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;  
    

A PolyBase lekérdezési tervének megtekintése

Az SQL Server 2019 -ben (15.x) megtekintheti a külső adatforrásnak átadott végrehajtási tervet a 6408-at jelző nyomkövetési jelzővel. További információért lásd: Hogyan állapíthatja meg, hogy külső leküldés történt-e.

Az SQL Server 2016 (13.x) vagy az SQL Server 2017 (14.x) esetében ez az alternatív stratégia a következő módon működik:

  1. Az SQL Server Management Studióban engedélyezze a tényleges végrehajtási terv (Ctrl + M) használatát, és futtassa a lekérdezést.

  2. Válassza a Végrehajtási terv fület.

    Képernyőkép az SQL Server Management Studióból egy PolyBase-lekérdezés végrehajtási tervéről.

  3. Kattintson a jobb gombbal a Távoli lekérdezés operátorra, és válassza a Tulajdonságoklehetőséget.

  4. Másolja és illessze be a távoli lekérdezés értékét egy szövegszerkesztőbe az XML távoli lekérdezési terv megtekintéséhez. Alább egy példa látható.

A sql_operation címkék az SQL Serveren belüli műveleteket jelölik. A dsql_operations nem "ON" típusú operation_types jelzik a PolyBase Adatáthelyezési szolgáltatás által használt külső operátorokat.

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

Csomópontok monitorozása PolyBase-csoportban

Miután egy PolyBase-skálázási csoport részeként konfigurálta a gépeket, figyelheti a gépek állapotát. A vertikális felskálázási csoport létrehozásával kapcsolatos részletekért lásd PolyBase vertikális felskálázási csoportokat.

  1. Csatlakozás az SQL Serverhez egy csoport fő csomópontján.

  2. Futtassa a DMV sys.dm_exec_compute_nodes (Transact-SQL)-t a PolyBase-csoport összes csomópontjainak megtekintéséhez.

  3. Futtassa a DMV sys.dm_exec_compute_node_status (Transact-SQL) parancsot a PolyBase-csoport összes csomópontjának állapotának megtekintéséhez.

Hadoop-névcsomópont magas rendelkezésre állása

A PolyBase jelenleg nem illeszti a Name Node HA-szolgáltatásokat, például a Zookeepert vagy a Knoxot. Van azonban egy bevált áthidaló megoldás, amely a funkció biztosításához használható.

Megkerülő megoldás: A DNS-névvel átirányíthatja a kapcsolatokat az aktív névcsomóponthoz. Ehhez meg kell győződnie arról, hogy a külső adatforrás DNS-nevet használ a névcsomóponttal való kommunikációhoz. A névcsomópont feladatátvétele esetén módosítania kell a külső adatforrás definíciójában használt DNS-névhez társított IP-címet. Ezzel átirányítja az összes új kapcsolatot a megfelelő névcsomópontra. A meglévő kapcsolatok átálláskor kiesnek a működésből. A folyamat automatizálásához a "szívverés" pingelheti az aktív névcsomópontot. Ha a szívverés meghiúsul, feltételezhetjük, hogy feladatátvétel történt, és automatikusan átvált a másodlagos IP-címre.

Naplófájlok helyei

Windows-kiszolgálókon a naplók alapértelmezés szerint a telepítési könyvtár elérési útján találhatók: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\.

Linux-kiszolgálókon a naplók alapértelmezés szerint a /var/opt/mssql/log/polybasemappában találhatók.

PolyBase-adatáthelyezési naplófájlok:

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

PolyBase motorszolgáltatás naplófájljai:

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

Windows rendszerben a PolyBase Java naplófájljai:

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

Linux rendszeren a PolyBase Java naplófájljai:

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

Hibaüzenetek és lehetséges megoldások

Gyakori hibaelhárítási forgatókönyvek: PolyBase-hibák és lehetséges megoldások.