Configuración y seguridad de PolyBase para Hadoop

Se aplica a:SQL Server en Instancia administrada de Windows Azure SQL

En este artículo se proporciona una referencia para distintos valores de configuración que afectan a la conectividad de PolyBase con Hadoop. Para ver un tutorial sobre cómo usar PolyBase con Hadoop, eche un vistazo a Configure PolyBase to access external data in Hadoop (Configuración de PolyBase para acceder a datos externos en Hadoop).

Nota:

A partir de SQL Server 2022 (16.x), Hadoop ya no se admite en PolyBase.

Configuración de Hadoop.rpc.protection

Una forma común de asegurar la comunicación en un clúster Hadoop es cambiando la hadoop.rpc.protection configuración a Privacy o Integrity. Por defecto, PolyBase asume que la configuración está configurada como Authenticate. Para reemplazar esta configuración predeterminada, agregue la siguiente propiedad al archivo core-site.xml. Cambiar esta configuración permite la transferencia segura de datos entre los nodos Hadoop y la conexión TLS a SQL Server.

<!-- RPC Encryption information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG -->
   <property>
     <name>hadoop.rpc.protection</name>
     <value></value>
   </property>

Para usar Privacy o Integrity para hadoop.rpc.protection, la versión de la instancia de SQL Server debe ser al menos SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 o SQL Server 2017 CU3.

Ejemplos de archivos XML para el clúster CDH 5.x

yarn-site.xml con la configuración yarn.application.classpath y 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>

Si decide dividir las dos opciones de configuración en mapred-site.xml y yarn-site.xml, los archivos serán los siguientes:

Para 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>

Para mapred-site.xml:

Tenga en cuenta la propiedad mapreduce.application.classpath. En CDH 5.x, puedes encontrar los valores de configuración bajo la misma convención de nombres en 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>

Configuración de Kerberos

Cuando PolyBase se autentica en un clúster asegurado por Kerberos, espera que la hadoop.rpc.protection configuración sea Authenticate por defecto. Esta configuración deja la comunicación de datos entre nodos Hadoop sin cifrar. Para usar Privacy o Integrity configurar , hadoop.rpc.protectionactualiza el core-site.xml archivo en el servidor PolyBase. Para obtener más información, consulte la sección anterior titulada Conectarse al clúster de Hadoop con la opción de configuración Hadoop.RPC.Protection.

Para conectarse a un clúster de Hadoop protegido con Kerberos mediante MIT KDC:

  1. Busque el directorio de configuración de Hadoop en la ruta de acceso de instalación de SQL Server. Normalmente, la ruta de acceso es C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Encuentra el valor de configuración del lado de Hadoop de las claves de configuración listadas en la siguiente tabla. (En el equipo de Hadoop, busque los archivos en el directorio de configuración de Hadoop).

  3. Copie los valores de configuración en la propiedad de valor en los archivos correspondientes en la máquina de SQL Server.

    # Archivo de configuración Clave de configuración Action
    1 core-site.xml polybase.kerberos.kdchost Especifique el nombre de host KDC. Por ejemplo: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Especifique el ámbito Kerberos. Por ejemplo, YOUR-REALM.COM1, 2
    3 core-site.xml hadoop.security.authentication Busque la configuración del lado de Hadoop y cópiela en el equipo de SQL Server. Por ejemplo, KERBEROS1
    4 hdfs-site.xml dfs.namenode.kerberos.principal Busque la configuración del lado de Hadoop y cópiela en el equipo de SQL Server. Por ejemplo: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Busque la configuración del lado de Hadoop y cópiela en el equipo de SQL Server. Por ejemplo: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Busque la configuración del lado de Hadoop y cópiela en el equipo de SQL Server. Por ejemplo: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Busque la configuración del lado de Hadoop y cópiela en el equipo de SQL Server. Por ejemplo: yarn/_HOST@YOUR-REALM.COM

    1 Este valor debe escribirse en mayúsculas.
    No se soporta Multi-reino 2.

  4. Cree un objeto de credencial con ámbito de base de datos para especificar la información de autenticación para cada usuario de Hadoop. Para más información, consulta PolyBase Transact-SQL referencia.