Konfigurace a zabezpečení PolyBase pro Hadoop

Platí pro:SQL Server na Windows Azure SQL Managed Instance

Tento článek obsahuje referenční informace o různých nastaveních konfigurace, která ovlivňují připojení PolyBase k Systému Hadoop. Návod, jak používat PolyBase s Hadoopem, najdete v tématu Konfigurace PolyBase pro přístup k externím datům v Hadoopu.

Poznámka:

Od verze SQL Server 2022 (16.x) se v PolyBase už Hadoop nepodporuje.

Nastavení Hadoop.rpc.protection

Běžným způsobem zabezpečení komunikace v Hadoop clusteru je změna hadoop.rpc.protection konfigurace na Privacy nebo Integrity. Ve výchozím nastavení PolyBase předpokládá, že konfigurace je nastavena na Authenticate. Chcete-li toto výchozí nastavení přepsat, přidejte do core-site.xml souboru následující vlastnost. Změna této konfigurace umožňuje bezpečný přenos dat mezi Hadoop uzly a TLS spojení se SQL Server.

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

Pro použití Privacy nebo Integrity pro hadoop.rpc.protection, musí být verze instance SQL Server alespoň SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 nebo SQL Server 2017 CU3.

Příklady XML souborů pro CDH 5.x cluster

yarn-site.xml s konfigurací yarn.application.classpath a 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>

Pokud se rozhodnete rozdělit dvě nastavení konfigurace do mapred-site.xml a pak yarn-site.xmlsoubory budou následující:

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

Pro mapred-site.xml:

Poznamenejte si vlastnost mapreduce.application.classpath. V CDH 5.x najdete konfigurační hodnoty pod stejným pojmenováním v 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>

Konfigurace protokolu Kerberos

Když se PolyBase autentizuje do clusteru zabezpečeného Kerberosem, očekává, že toto hadoop.rpc.protection nastavení bude Authenticate výchozí. Toto nastavení ponechává datovou komunikaci mezi Hadoop uzly nešifrovanou. Chcete-li použít nastavení Privacy nebo Integrity pro hadoop.rpc.protection, aktualizujte soubor core-site.xml na serveru PolyBase. Další informace najdete v předchozí části Připojení ke clusteru Hadoop pomocí hadoop.rpc.protection.

Připojení ke clusteru Hadoop zabezpečenému protokolem Kerberos pomocí MIT KDC:

  1. Vyhledejte konfigurační adresář Hadoop v instalační cestě SQL Serveru. Obvykle je cesta C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Najděte konfigurační hodnotu na straně Hadoop pro konfigurační klíče uvedené v následující tabulce. (Na počítači Hadoop vyhledejte soubory v konfiguračním adresáři Hadoop.)

  3. Zkopírujte konfigurační hodnoty do vlastnosti v odpovídajících souborech na serveru SQL.

    # Konfigurační soubor Konfigurační klíč Action
    1 core-site.xml polybase.kerberos.kdchost Zadejte název hostitele služby KDC. Například: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Zadejte sféru Kerberos. Například YOUR-REALM.COM1, 2
    3 core-site.xml hadoop.security.authentication Vyhledejte konfiguraci na straně Hadoopu a zkopírujte ji na počítač s SQL Serverem. Například KERBEROS1
    4 hdfs-site.xml dfs.namenode.kerberos.principal Vyhledejte konfiguraci na straně Hadoopu a zkopírujte ji na počítač s SQL Serverem. Příklad: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Vyhledejte konfiguraci na straně Hadoopu a zkopírujte ji na počítač s SQL Serverem. Příklad: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Vyhledejte konfiguraci na straně Hadoopu a zkopírujte ji na počítač s SQL Serverem. Příklad: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Vyhledejte konfiguraci na straně Hadoopu a zkopírujte ji na počítač s SQL Serverem. Příklad: yarn/_HOST@YOUR-REALM.COM

    1 Tato hodnota musí být napsána velkými písmeny.
    2 Multi-realm není podporován.

  4. Vytvořte objekt přihlašovacích údajů v oboru databáze, který určuje ověřovací informace pro každého uživatele Hadoopu. Pro více informací viz PolyBase Transact-SQL referenci.