Konfiguracja i zabezpieczenia technologii PolyBase dla usługi Hadoop

Dotyczy:SQL Server na Windows Azure SQL Managed Instance

Ten artykuł zawiera informacje dotyczące różnych ustawień konfiguracji, które mają wpływ na łączność technologii PolyBase z usługą Hadoop. Aby zapoznać się z przewodnikiem na temat używania technologii PolyBase z usługą Hadoop, zobacz Konfigurowanie technologii PolyBase w celu uzyskiwania dostępu do danych zewnętrznych w usłudze Hadoop.

Uwaga / Notatka

Począwszy od programu SQL Server 2022 (16.x), platforma Hadoop nie jest już obsługiwana w programie PolyBase.

Ustawienie parametru Hadoop.rpc.protection

Powszechnym sposobem zabezpieczenia komunikacji w klastrze Hadoop jest zmiana hadoop.rpc.protection konfiguracji na Privacy lub Integrity. Domyślnie PolyBase zakłada, że konfiguracja jest ustawiona na .Authenticate Aby zastąpić tę wartość domyślną, dodaj następującą właściwość do core-site.xml pliku. Zmiana tej konfiguracji umożliwia bezpieczny transfer danych między węzłami Hadoop oraz połączenie TLS z SQL Server.

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

Aby użyć Privacy lub Integrity dla hadoop.rpc.protection, wersja instancji SQL Server musi być co najmniej SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 lub SQL Server 2017 CU3.

Przykładowe pliki XML dla klastra CDH 5.x

yarn-site.xml z konfiguracją yarn.application.classpath i 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>

Jeśli zdecydujesz się podzielić dwa ustawienia konfiguracji na mapred-site.xml i yarn-site.xml, pliki będą następujące:

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

Dla mapred-site.xml:

Zanotuj właściwość mapreduce.application.classpath. W CDH 5.x wartości konfiguracyjne można znaleźć w Ambari zgodnie z tym samym schematem nazewnictwa.

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

Konfiguracja protokołu Kerberos

Gdy PolyBase uwierzytelnia się w klastrze zabezpieczonym za pomocą protokołu Kerberos, oczekuje, że ustawienie hadoop.rpc.protection będzie domyślnie ustawione na Authenticate. To ustawienie pozostawia komunikację danych między węzłami Hadoop nieszyfrowaną. Aby użyć ustawień Privacy lub Integrity dla hadoop.rpc.protection, zaktualizuj plik core-site.xml na serwerze PolyBase. Aby uzyskać więcej informacji, zobacz poprzednią sekcję Connecting to Hadoop Cluster with Hadoop.rpc.protection (Łączenie z klastrem Hadoop.rpc.protection).

Aby nawiązać połączenie z klastrem Hadoop zabezpieczonym przy użyciu protokołu Kerberos przy użyciu usługi MIT KDC:

  1. Znajdź katalog konfiguracji usługi Hadoop w ścieżce instalacji programu SQL Server. Zazwyczaj ścieżka to C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Znajdź wartość konfiguracji po stronie Hadoop dla kluczy konfiguracyjnych wymienionych w poniższej tabeli. (Na maszynie hadoop znajdź pliki w katalogu konfiguracji usługi Hadoop).

  3. Skopiuj wartości konfiguracji do właściwości wartości w odpowiednich plikach na serwerze SQL Server.

    # Plik konfiguracji Klucz konfiguracji Action
    1 core-site.xml polybase.kerberos.kdchost Określ nazwę hosta KDC. Na przykład kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Określ domenę Kerberos. Na przykład YOUR-REALM.COM1, 2
    3 core-site.xml hadoop.security.authentication Znajdź konfigurację po stronie usługi Hadoop i skopiuj ją na maszynę z programem SQL Server. Na przykład KERBEROS1
    4 hdfs-site.xml dfs.namenode.kerberos.principal Znajdź konfigurację po stronie usługi Hadoop i skopiuj ją na maszynę z programem SQL Server. Na przykład hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Znajdź konfigurację po stronie usługi Hadoop i skopiuj ją na maszynę z programem SQL Server. Na przykład mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Znajdź konfigurację po stronie usługi Hadoop i skopiuj ją na maszynę z programem SQL Server. Na przykład 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Znajdź konfigurację po stronie usługi Hadoop i skopiuj ją na maszynę z programem SQL Server. Na przykład yarn/_HOST@YOUR-REALM.COM

    1 Ta wartość musi być zapisana wielką literą.
    2 Multi-realm nie jest obsługiwany.

  4. Utwórz obiekt poświadczeń ograniczony do bazy danych, aby określić informacje uwierzytelniające dla każdego użytkownika Hadoop. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną języka Transact-SQL dla technologii PolyBase.