Конфигурация и обеспечение безопасности PolyBase для Hadoop
Область применения: SQL Server — Только Управляемый экземпляр SQL Azure Windows
В этой статье содержатся сведения о различных параметрах конфигурации, которые влияют на возможность подключения PolyBase к Hadoop. Пошаговое руководство по использованию PolyBase с Hadoop см. в статье Настройка PolyBase для доступа к внешним данным в Hadoop.
Примечание.
Начиная с SQL Server 2022 (16.x), Hadoop больше не поддерживается в PolyBase.
Параметр Hadoop.RPC.Protection
Распространенный способ защиты обмена данными в кластере hadoop — изменение hadoop.rpc.protection
конфигурации на "Конфиденциальность" или "Целостность". По умолчанию PolyBase предполагает, что задана конфигурация Authenticate (Проверка подлинности). Чтобы переопределить это значение по умолчанию, добавьте в файл следующее core-site.xml
свойство. Изменение конфигурации позволит осуществлять безопасную передачу данных между узлами Hadoop и использовать TLS-подключение к SQL Server.
<!-- RPC Encryption information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG -->
<property>
<name>hadoop.rpc.protection</name>
<value></value>
</property>
Чтобы использовать "Конфиденциальность" или "Целостность" hadoop.rpc.protection
, версия экземпляра SQL Server должна иметь по крайней мере SQL Server 2016 с пакетом обновления 1 (SP1), SQL Server 2016 с пакетом обновления 2 (SP2) или SQL Server 2017 CU3.
Пример XML-файла для кластера CDH 5.X
Yarn-site.xml
с yarn.application.classpath
и mapreduce.application.classpath
конфигурацией.
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>yarn.resourcemanager.connect.max-wait.ms</name>
<value>40000</value>
</property>
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>30000</value>
</property>
<!-- Applications' Configuration-->
<property>
<description>CLASSPATH for YARN applications. A comma-separated list of CLASSPATH entries</description>
<!-- Please set this value to the correct yarn.application.classpath that matches your server side configuration -->
<!-- For example: $HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/* -->
<name>yarn.application.classpath</name>
<value>$HADOOP_CLIENT_CONF_DIR,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$MR2_CLASSPATH*</value>
</property>
<!-- kerberos security information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG
<property>
<name>yarn.resourcemanager.principal</name>
<value></value>
</property>
-->
</configuration>
Если вы решите разбить два параметра конфигурации на mapred-site.xml
и те yarn-site.xml
, то файлы будут следующими:
Для yarn-site.xml
:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>yarn.resourcemanager.connect.max-wait.ms</name>
<value>40000</value>
</property>
<property>
<name>yarn.resourcemanager.connect.retry-interval.ms</name>
<value>30000</value>
</property>
<!-- Applications' Configuration-->
<property>
<description>CLASSPATH for YARN applications. A comma-separated list of CLASSPATH entries</description>
<!-- Please set this value to the correct yarn.application.classpath that matches your server side configuration -->
<!-- For example: $HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/* -->
<name>yarn.application.classpath</name>
<value>$HADOOP_CLIENT_CONF_DIR,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
</property>
<!-- kerberos security information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG
<property>
<name>yarn.resourcemanager.principal</name>
<value></value>
</property>
-->
</configuration>
Для mapred-site.xml
:
Обратите внимание на свойство mapreduce.application.classpath
. В CDH 5.X значения конфигурации имеют тот же формат именования, что и в Ambari.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
<property>
<name>mapred.min.split.size</name>
<value>1073741824</value>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,$MR2_CLASSPATH</value>
</property>
<!--kerberos security information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG
<property>
<name>mapreduce.jobhistory.principal</name>
<value></value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value></value>
</property>
-->
</configuration>
Конфигурация Kerberos
Обратите внимание, что при проверке подлинности PolyBase в защищенном кластере Kerberos ожидается hadoop.rpc.protection
, что параметр "Аутентификация" по умолчанию. При этом обмен данными между узлами Hadoop остается в незашифрованном виде. Чтобы использовать параметры hadoop.rpc.protection
конфиденциальности или целостности, обновите core-site.xml
файл на сервере PolyBase. Дополнительные сведения см. в предыдущем разделе Подключение к кластеру Hadoop с параметром Hadoop.rpc.protection.
Чтобы подключиться к защищенному с помощью Kerberos кластеру Hadoop, используя MIT KDC, сделайте следующее:
Найдите каталог конфигурации Hadoop в каталоге установки SQL Server. Как правило, путь имеет значение
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf
.Найдите значение конфигурации для ключей конфигурации, перечисленных в таблице, на компьютере с Hadoop. (Найдите файлы в каталоге конфигурации Hadoop на этом же компьютере.)
Скопируйте значения конфигурации в свойство value соответствующих файлов на компьютере с SQL Server.
# Файл конфигурации Ключ конфигурации Действие 1 core-site.xml
polybase.kerberos.kdchost
Укажите имя узла KDC. Например: kerberos.your-realm.com
.2 core-site.xml
polybase.kerberos.realm
Укажите область Kerberos. Например, YOUR-REALM.COM
Примечание конфигурации. Имя области должно быть записано в верхнем регистре.
Многоуровневая область не поддерживается.3 core-site.xml
hadoop.security.authentication
Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например: KERBEROS
Примечание по безопасности:KERBEROS
необходимо написать в верхнем регистре.4 hdfs-site.xml
dfs.namenode.kerberos.principal
Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например: hdfs/_HOST@YOUR-REALM.COM
5 mapred-site.xml
mapreduce.jobhistory.principal
Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например: mapred/_HOST@YOUR-REALM.COM
6 mapred-site.xml
mapreduce.jobhistory.address
Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например: 10.xxx.xxx.174:10020
7 yarn-site.xml
yarn.resourcemanager.principal
Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например: yarn/_HOST@YOUR-REALM.COM
Создайте объект учетных данных для базы данных, чтобы указать аутентификационные сведения для каждого пользователя Hadoop. См. статью Объекты T-SQL PolyBase.
Следующие шаги
Дополнительные сведения см. в следующих статьях: