Конфигурация и обеспечение безопасности 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, сделайте следующее:

  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.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
  4. Создайте объект учетных данных для базы данных, чтобы указать аутентификационные сведения для каждого пользователя Hadoop. См. статью Объекты T-SQL PolyBase.

Следующие шаги

Дополнительные сведения см. в следующих статьях: