Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
В этом разделе описаны методы по устранению неполадок с PolyBase.
Представления каталога
Ниже приведены представления каталога,с помощью которых можно управлять операциями PolyBase.
| Вид | Описание |
|---|---|
| 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 с помощью динамических управляющих представлений (DMVs)
Используйте следующие динамические административные представления (DMVs) для мониторинга и устранения неполадок с запросами 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. Поля dsql_operations с operation_types, которые не в состоянии "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 на головном узле группы.
Запустите DMV sys.dm_exec_compute_nodes (Transact-SQL), чтобы просмотреть все узлы PolyBase-группы.
Запустите DMV sys.dm_exec_compute_node_status (Transact-SQL), чтобы просмотреть состояние всех узлов в группе PolyBase.
Высокий уровень доступности узла имени Hadoop
PolyBase в настоящее время не взаимодействует со службами высокой доступности Name Node, такими как Zookeeper или Knox. Однако есть проверенное решение, которое можно использовать для обеспечения функциональности.
Обходной путь. Используйте DNS-имя для перенаправки подключений к активному узлу имен. Для этого необходимо, чтобы для взаимодействия с узлом внешний источник данных использовал DNS-имя. При переключении Name Node вам потребуется изменить IP-адрес, связанный с DNS-именем, используемым в определении внешнего источника данных. В результате все новые соединения будут перенаправляться на соответствующий узел имени. При резервном переключении существующие подключения прервутся. Чтобы автоматизировать этот процесс, периодический сигнал может проверить связь с активным узлом имени. Если heartbeat-сигнал завершается ошибкой, можно предположить, что произошло автоматическое переключение на резерв, и автоматически переключиться на 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 и возможные решения.