Мониторинг PolyBase и устранение неполадок
Область применения: SQL Server
В этом разделе описаны методы по устранению неполадок с PolyBase.
Представления каталога
Ниже приведены представления каталога,с помощью которых можно управлять операциями PolyBase.
Представления | Description |
---|---|
sys.external_tables (Transact-SQL) | Определяет внешние таблицы |
sys.external_data_sources (Transact-SQL) | Определяет источники внешних таблиц |
sys.external_file_formats (Transact-SQL) | Определяет форматы внешних файлов |
Динамические административные представления
Запросы PolyBase разбиваются на ряд шагов в пределах sys.dm_exec_distributed_request_steps
. В следующей таблице приводится сопоставление имен шагов и динамических административных представлений.
Шаг PolyBase | Связанное динамическое административное представление |
---|---|
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 с помощью динамических представлений
Здесь описаны динамические административные представления, которые можно использовать для мониторинга и устранения неполадок с запросами PolyBase. Рассмотрите также следующие рекомендации по повышению производительности в PolyBase для SQL Server.
Поиск запросов с наиболее длительным временем выполнения.
Запишите идентификатор выполнения запроса с наиболее длительным временем выполнения.
-- 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;
Поиск действия распределенного запроса с наиболее длительным временем выполнения.
Используйте идентификатор выполнения, записанный при выполнении предыдущего действия. Запишите индекс действия с наиболее длительным временем выполнения.
location_type
Проверьте самый длинный этап выполнения:Головной или вычислительный: подразумевается операция SQL. Перейдите к шагу 3a.
- DMS: подразумевается операция службы перемещения данных PolyBase. Перейдите к шагу 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;
Поиск данных о ходе выполнения действия с наиболее длительным временем выполнения.
Поиск данных о ходе выполнения действия SQL.
Используйте идентификатор выполнения и индекс действия, записанные при выполнении предыдущих действий.
-- 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;
Поиск данных о ходе выполнения действия DMS.
Используйте идентификатор выполнения и индекс действия, записанные при выполнении предыдущих действий.
-- 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;
Поиск сведений о внешних операциях DMS.
Используйте идентификатор выполнения и индекс действия, записанные при выполнении предыдущих действий.
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
В SQL Server 2019 (15.x) можно просмотреть план выполнения, переданный внешнему источнику данных с помощью флага трассировки 6408. Дополнительные сведения см. в разделе Как определить, произошел ли внешний pushdown.
В SQL Server 2016 (13.x) или SQL Server 2017 (14.x) эта альтернативная стратегия работает:
В СРЕДЕ SQL Server Management Studio включите фактический план выполнения (CTRL+M) и выполните запрос.
Перейдите на вкладку "План выполнения".
Щелкните правой кнопкой мыши оператор Удаленный запрос и выберите пункт Свойства.
Скопируйте и вставьте значение удаленного запроса в текстовый редактор, чтобы просмотреть план удаленного запроса XML. Ниже приведен соответствующий пример.
Теги sql_operation
указывают операции в SQL Server. operation_types
В этом dsql_operations
поле не указано значение ON, указывающее внешние операторы, используемые службой перемещения данных PolyBase.
<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
После настройки нескольких компьютеров в рамках группы горизонтального увеличения масштаба PolyBase можно отслеживать состояние компьютеров. Дополнительные сведения о создании группы горизонтального увеличения масштаба см. в разделе Группы горизонтального увеличения масштаба PolyBase.
Подключитесь к SQL Server на головном узле группы.
Запустите sys.dm_exec_compute_nodes dmV (Transact-SQL), чтобы просмотреть все узлы в группе PolyBase.
Запустите sys.dm_exec_compute_node_status dmV (Transact-SQL), чтобы просмотреть состояние всех узлов в группе PolyBase.
Высокий уровень доступности узла имени Hadoop
Сегодня PolyBase не взаимодействует со службами высокой доступности узла имени, такими как Zookeeper или Knox. Однако есть проверенное решение, которое можно использовать для обеспечения функциональности.
Обходной путь. Используйте DNS-имя для перенаправки подключений к активному узлу имен. Для этого необходимо, чтобы для взаимодействия с узлом внешний источник данных использовал DNS-имя. При возникновении отработки отказа следует изменить IP-адрес, связанный с DNS-именем, используемым в определении внешнего источника данных. В результате все новые соединения будут перенаправляться на соответствующий узел имени. В случае отработки существующие подключения завершатся ошибкой. Чтобы автоматизировать этот процесс, периодический сигнал может проверить связь с активным узлом имени. Если периодический сигнал завершается ошибкой, можно предположить, что возникла отработка отказа, и автоматически переключиться на IP-адреса дополнительных серверов.
Расположение файлов журналов
На серверах Windows журналы находятся в пути к каталогу установки по умолчанию: c:\Program Files\Microsoft SQL Server\MSSQLnn.InstanceName\MSSQL\Log\PolyBase\
На серверах Linux журналы расположены по умолчанию /var/opt/mssql/log/polybase
.
Файлы журналов перемещения данных PolyBase:
<INSTANCENAME>_<SERVERNAME>_Dms_errors.log
<INSTANCENAME>_<SERVERNAME>_Dms_movement.log
Файлы журналов службы ядра PolyBase:
<INSTANCENAME>_<SERVERNAME>_DWEngine_errors.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_movement.log
<INSTANCENAME>_<SERVERNAME>_DWEngine_server.log
Файлы журналов Java для PolyBase (в Windows):
<SERVERNAME> Dms polybase.log
<SERVERNAME>_DWEngine_polybase.log
Файлы журналов Java для PolyBase (в Linux):
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_pdw.log
/var/opt/mssql-extensibility/hdfs_bridge/log/hdfs_bridge_dms.log
Сообщения об ошибках и возможные решения
Распространенные сценарии устранения неполадок см. в статье Ошибки в PolyBase и возможные решения.