Share via


PolyBase-configuratie en -beveiliging voor Hadoop

Van toepassing op:SQL Server in Windows Azure SQL Managed Instance

Dit artikel bevat een overzicht van verschillende configuratie-instellingen die van invloed zijn op PolyBase-connectiviteit met Hadoop. Zie PolyBase configureren voor toegang tot externe gegevens in Hadoop voor een overzicht van het gebruik van PolyBase met Hadoop.

Opmerking

Vanaf SQL Server 2022 (16.x) wordt Hadoop niet meer ondersteund in PolyBase.

Hadoop.RPC.Protection-instelling

Een veelgebruikte manier om communicatie in een hadoop-cluster te beveiligen, is door de hadoop.rpc.protection configuratie te wijzigen in 'Privacy' of 'Integriteit'. In PolyBase wordt standaard ervan uitgegaan dat de configuratie is ingesteld op 'Verifiëren'. Als u deze standaardwaarde wilt overschrijven, voegt u de volgende eigenschap toe aan het core-site.xml bestand. Als u deze configuratie wijzigt, wordt beveiligde gegevensoverdracht mogelijk tussen de hadoop-knooppunten en tls-verbinding met SQL Server.

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

Als u Privacy of Integriteit wilt gebruiken, hadoop.rpc.protectionmoet de versie van het SQL Server-exemplaar ten minste SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 of SQL Server 2017 CU3 zijn.

Voorbeeld-XML-bestanden voor CDH 5.X-cluster

Yarn-site.xml met yarn.application.classpath en mapreduce.application.classpath configuratie.

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

Als u ervoor kiest om uw twee configuratie-instellingen op te splitsen in de mapred-site.xml en de yarn-site.xml, dan zijn de bestanden het volgende:

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

Voor mapred-site.xml:

Noteer de eigenschap mapreduce.application.classpath. In CDH 5.x vindt u de configuratiewaarden onder dezelfde naamconventie 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>

Kerberos-configuratie

Wanneer PolyBase wordt geverifieerd bij een beveiligd Kerberos-cluster, wordt verwacht dat de hadoop.rpc.protection instelling standaard 'Verifiëren' is. Hierdoor wordt de gegevenscommunicatie tussen Hadoop-knooppunten niet versleuteld. Voor het gebruik van de instellingen 'Privacy' of 'Integriteit' voor hadoop.rpc.protection, werkt u het core-site.xml-bestand bij op de PolyBase-server. Zie de vorige sectie Verbinding maken met Hadoop-cluster met Hadoop.rpc.protection voor meer informatie.

Verbinding maken met een Met Kerberos beveiligd Hadoop-cluster met behulp van MIT KDC:

  1. Zoek de Hadoop-configuratiemap in het installatiepad van SQL Server. Meestal is het pad C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Zoek de hadoop-configuratiewaarde van de configuratiesleutels die in de tabel worden vermeld. (Zoek op de Hadoop-computer de bestanden in de Hadoop-configuratiemap.)

  3. Kopieer de configuratiewaarden naar de waarde-eigenschap in de bijbehorende bestanden op de SQL Server-computer.

    # Configuratiebestand Configuratiesleutel Action
    1 core-site.xml polybase.kerberos.kdchost Geef de KDC-hostnaam op. Voorbeeld: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Geef de Kerberos-realm op. Bijvoorbeeld: YOUR-REALM.COM

    Configuratienotitie: Realmnaam moet in hoofdletters worden geschreven.

    Multi-realm wordt niet ondersteund.
    3 core-site.xml hadoop.security.authentication Zoek de hadoop-zijdeconfiguratie en kopieer deze naar de SQL Server-machine. Bijvoorbeeld: KERBEROS

    Beveiligingsnotitie:KERBEROS moet in hoofdletters worden geschreven.
    4 hdfs-site.xml dfs.namenode.kerberos.principal Zoek de hadoop-zijdeconfiguratie en kopieer deze naar de SQL Server-machine. Bijvoorbeeld: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Zoek de hadoop-zijdeconfiguratie en kopieer deze naar de SQL Server-machine. Bijvoorbeeld: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Zoek de hadoop-zijdeconfiguratie en kopieer deze naar de SQL Server-machine. Bijvoorbeeld: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Zoek de hadoop-zijdeconfiguratie en kopieer deze naar de SQL Server-machine. Bijvoorbeeld: yarn/_HOST@YOUR-REALM.COM
  4. Maak een referentieobject met databasebereik om de verificatiegegevens voor elke Hadoop-gebruiker op te geven. Zie PolyBase T-SQL-objecten.

Volgende stappen

Zie de volgende artikelen voor meer informatie: