Configurazione di PolyBase e sicurezza per Hadoop

Si applica a:SQL Server in Windows Istanza gestita di Azure SQL

Questo articolo include informazioni di riferimento per varie impostazioni di configurazione che influiscono sulla connettività di PolyBase con Hadoop. Per una procedura dettagliata su come usare PolyBase con Hadoop, vedere Configurare PolyBase per l'accesso a dati esterni in Hadoop.

Nota

A partire da SQL Server 2022 (16.x), Hadoop non è più supportato in PolyBase.

Impostazione di protezione Hadoop.RPC

Un modo comune per garantire la comunicazione in un cluster Hadoop è cambiare la hadoop.rpc.protection configurazione in Privacy o Integrity. Di default, PolyBase assume che la configurazione sia impostata su Authenticate. Per eseguire l'override di questa impostazione predefinita, aggiungere la proprietà seguente al file core-site.xml. Modificare questa configurazione consente il trasferimento sicuro dei dati tra i nodi Hadoop e la connessione 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>

Per usare 'Privacy' o 'Integrity' per hadoop.rpc.protection, è necessario usare almeno SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 o SQL Server 2017 CU3.

File XML di esempio per cluster CDH 5.X

yarn-site.xml con configurazione yarn.application.classpath e 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>

Se si sceglie di suddividere le due impostazioni di configurazione nei file mapred-site.xml and the yarn-site.xml, i file saranno come indicato di seguito:

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

Per mapred-site.xml:

Osservare la proprietà mapreduce.application.classpath. In CDH 5.x, i valori di configurazione si trovano con la stessa convenzione di denominazione in 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>

Configurazione di Kerberos

Si noti che se PolyBase esegue l'autenticazione in un cluster protetto con Kerberos, il parametro hadoop.rpc.protection deve essere impostato su 'Authenticate' per impostazione predefinita. La comunicazione dei dati tra i nodi Hadoop rimane non crittografata. Per usare le impostazioni 'Privacy' o 'Integrity' per hadoop.rpc.protection, aggiornare il file core-site.xml sul server PolyBase. Per altre informazioni, vedere la sezione precedente Connessione a un cluster Hadoop con l'impostazione hadoop.rpc.protection.

Per connettersi a un cluster Hadoop protetto con Kerberos tramite MIT KDC:

  1. Trovare la directory di configurazione Hadoop nel percorso di installazione di SQL Server. In genere il percorso è C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Trova il valore di configurazione lato Hadoop delle chiavi di configurazione elencate nella tabella seguente. Sulla macchina Hadoop, trova i file nella directory di configurazione Hadoop.

  3. Copiare i valori di configurazione nella proprietà valore nei file corrispondenti sulla macchina SQL Server.

    # File di configurazione Chiave di configurazione Azione
    1 core-site.xml polybase.kerberos.kdchost Specificare il nome host KDC. Ad esempio: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Specificare l'area di autenticazione Kerberos. Ad esempio: YOUR-REALM.COM

    Nota di configurazione: Il nome del regno deve essere scritto con la maiuscola.

    Il multi-reame non è supportato.
    3 core-site.xml hadoop.security.authentication Trovare la configurazione del lato Hadoop e copiarla nella macchina SQL Server. Ad esempio: KERBEROS

    Nota sulla sicurezza: è necessario scrivere KERBEROS in maiuscolo.
    4 hdfs-site.xml dfs.namenode.kerberos.principal Trovare la configurazione del lato Hadoop e copiarla nella macchina SQL Server. Ad esempio: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Trovare la configurazione del lato Hadoop e copiarla nella macchina SQL Server. Ad esempio: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Trovare la configurazione del lato Hadoop e copiarla nella macchina SQL Server. Ad esempio: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Trovare la configurazione del lato Hadoop e copiarla nella macchina SQL Server. Ad esempio: yarn/_HOST@YOUR-REALM.COM
  4. Creare un oggetto credenziali con ambito database per specificare le informazioni di autenticazione per ogni utente di Hadoop. Consulta Oggetti T-SQL PolyBase.

Passaggi successivi

Per altre informazioni, vedere gli articoli seguenti: