Partilhar via


Configuração e segurança do PolyBase para Hadoop

Aplica-se a:SQL Server no Windows Azure SQL Managed Instance

Este artigo fornece uma referência para várias definições de configuração que afetam a conectividade do PolyBase ao Hadoop. Para um guia sobre como usar o PolyBase com o Hadoop, consulte Configurar o PolyBase para aceder a dados externos no Hadoop.

Observação

A partir do SQL Server 2022 (16.x), o Hadoop deixou de ser suportado no PolyBase.

Configuração Hadoop.RPC.Protection

Uma forma comum de garantir a comunicação num cluster hadoop é alterando a hadoop.rpc.protection configuração para 'Privacidade' ou 'Integridade'. Por defeito, o PolyBase assume que a configuração está definida como 'Autenticar'. Para substituir este padrão, adicione a seguinte propriedade ao ficheiro core-site.xml. Alterar esta configuração permitirá a transferência segura de dados entre os nós hadoop e a ligação TLS para o 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 'Privacidade' ou 'Integridade' para hadoop.rpc.protection, a versão da instância do SQL Server deve ser pelo menos SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 ou SQL Server 2017 CU3.

Ficheiros XML de exemplo para cluster CDH 5.X

Yarn-site.xml com configuração de 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 optar por dividir as suas duas definições de configuração em mapred-site.xml e yarn-site.xml, então os ficheiros seriam os seguintes:

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:

Note a propriedade mapreduce.application.classpath. No CDH 5.x, encontrará os valores de configuração de acordo com a mesma convenção de nomenclatura em 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>

Configuração de Kerberos

Note que, quando o PolyBase autentica num cluster seguro Kerberos, espera que a hadoop.rpc.protection definição seja 'Autenticar' por defeito. Isto deixa a comunicação de dados entre os nós Hadoop não encriptada. Para usar as definições de 'Privacidade' ou 'Integridade' para hadoop.rpc.protection, atualize o core-site.xml ficheiro no servidor PolyBase. Para mais informações, consulte a secção anterior Ligação ao Cluster Hadoop com Hadoop.rpc.protection.

Para se ligar a um cluster Hadoop protegido por Kerberos usando o MIT KDC:

  1. Encontre o diretório de configuração do Hadoop no caminho de instalação do SQL Server. Normalmente, o caminho é C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Encontre o valor de configuração do lado Hadoop das chaves de configuração listadas na tabela. (Na máquina Hadoop, encontre os ficheiros no diretório de configuração Hadoop.)

  3. Copie os valores de configuração para a propriedade de valor nos ficheiros correspondentes na máquina SQL Server.

    # Arquivo de configuração Chave de configuração Action
    1 core-site.xml polybase.kerberos.kdchost Especifique o nome de host KDC. Por exemplo: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Especifique o reino de Kerberos. Por exemplo: YOUR-REALM.COM

    Nota de configuração: O nome do reino deve ser escrito em maiúsculas.

    Multi-reino não é suportado.
    3 core-site.xml hadoop.security.authentication Encontre a configuração do lado do Hadoop e copie para a máquina SQL Server. Por exemplo: KERBEROS

    Nota de segurança:KERBEROS Deve ser escrito em maiúsculas.
    4 hdfs-site.xml dfs.namenode.kerberos.principal Encontre a configuração do lado do Hadoop e copie para a máquina SQL Server. Por exemplo: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Encontre a configuração do lado do Hadoop e copie para a máquina SQL Server. Por exemplo: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Encontre a configuração do lado do Hadoop e copie para a máquina SQL Server. Por exemplo: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Encontre a configuração do lado do Hadoop e copie para a máquina SQL Server. Por exemplo: yarn/_HOST@YOUR-REALM.COM
  4. Crie um objeto credencial com âmbito de base de dados para especificar a informação de autenticação para cada utilizador Hadoop. Consulte objetos PolyBase T-SQL.

Próximos passos

Para obter mais informações, consulte os seguintes artigos: