Конфигурация и обеспечение безопасности PolyBase для Hadoop

Применимо к: SQL Server на Windows, Управляемый экземпляр Azure SQL

В этой статье содержатся сведения о различных параметрах конфигурации, которые влияют на возможность подключения PolyBase к Hadoop. Пошаговое руководство по использованию PolyBase с Hadoop см. в статье Настройка PolyBase для доступа к внешним данным в Hadoop.

Примечание.

Начиная с SQL Server 2022 (16.x), Hadoop больше не поддерживается в PolyBase.

Параметр Hadoop.rpc.protection

Распространённый способ обеспечения безопасности связи в кластере Hadoop — изменение hadoop.rpc.protection конфигурации на Privacy или Integrity. По умолчанию 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>

Для использования Privacy или Integrity для hadoop.rpc.protection, версия экземпляра SQL Server должна быть не ниже SQL Server 2016 SP1 CU7, SQL Server 2016 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 задано значение Authenticate. Эта настройка оставляет передачу данных между узлами Hadoop незашифрованной. Чтобы использовать параметры Privacy или hadoop.rpc.protection для core-site.xml, обновите файл Integrity на сервере PolyBase. Дополнительные сведения см. в предыдущем разделе Подключение к кластеру Hadoop с параметром Hadoop.rpc.protection.

Чтобы подключиться к защищенному с помощью Kerberos кластеру Hadoop, используя MIT KDC, сделайте следующее:

  1. Найдите каталог конфигурации Hadoop в каталоге установки SQL Server. Как правило, путь имеет значение C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Найдите значение конфигурации на стороне Hadoop для ключей конфигурации, перечисленных в следующей таблице. (Найдите файлы в каталоге конфигурации Hadoop на этом же компьютере.)

  3. Скопируйте значения конфигурации в свойство 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.COM1, 2
    3 core-site.xml hadoop.security.authentication Найдите конфигурацию для Hadoop и скопируйте ее на компьютер с SQL Server. Например, KERBEROS1
    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

    1 Это значение должно быть записано заглавными буквами.
    2 Multi-realm не поддерживается.

  4. Создайте объект учетных данных, охватывающий базу данных, чтобы указать данные аутентификации для каждого пользователя Hadoop. Для получения дополнительной информации см. справочник по PolyBase Transact-SQL.