Configuração e segurança do PolyBase para Hadoop
Aplica-se a: SQL Server - somente Windows Instância Gerenciada de SQL do Azure
Este artigo fornece uma referência para várias definições de configuração que afetam a conectividade do PolyBase com o Hadoop. Para obter instruções de como usar o PolyBase com o Hadoop, consulte Configurar o PolyBase para acessar dados externos no Hadoop.
Observação
A partir do SQL Server 2022 (16.x), o Hadoop não é mais compatível com o PolyBase.
Configuração do Hadoop.RPC.Protection
Uma maneira comum de proteger a comunicação em um cluster Hadoop é alterar a configuração de hadoop.rpc.protection
para “Privacidade” ou “Integridade”. Por padrão, o PolyBase assume que a configuração está definida como 'Autenticar'. Para substituir este padrão, adicione a propriedade a seguir ao arquivo core-site.xml
. A alteração dessa configuração permitirá a transferência de dados segura entre os nós do Hadoop e a conexão TLS com 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 ter pelo menos o SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 ou SQL Server 2017 CU3.
Arquivos XML de exemplo para cluster do CDH 5.X
Configuração do Yarn-site.xml
com 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 você optar por dividir as duas definições de configuração no mapred-site.xml
e yarn-site.xml
, os arquivos serão 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
:
Observe a propriedade mapreduce.application.classpath
. No CDH 5.x, você encontrará os valores de configuração com a mesma convenção de nomenclatura no 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 do Kerberos
Observe que, quando o PolyBase é autenticado em um cluster protegido pelo Kerberos, ele espera que a configuração do hadoop.rpc.protection
seja “Autenticar” por padrão. Isso faz com que a comunicação de dados entre os nós do Hadoop não seja criptografada. Para usar as configurações de “Privacidade” ou “Integridade” para hadoop.rpc.protection
, atualize o arquivo core-site.xml
no servidor do PolyBase. Para obter mais informações, confira a seção anterior Conectando-se ao cluster Hadoop com a configuração Hadoop.rpc.protection.
Para se conectar a um cluster Hadoop protegido por Kerberos usando MIT KDC:
Localize o diretório de configuração do Hadoop no caminho de instalação do SQL Server. Normalmente, o caminho é o
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf
.Localize o valor de configuração do lado do Hadoop nas chaves de configuração listadas na tabela. (No computador do Hadoop, localize os arquivos no diretório da configuração do Hadoop.)
Copie os valores de configuração na propriedade de valor nos arquivos correspondentes no computador do SQL Server.
# Arquivo de configuração Chave de configuração Ação 1 core-site.xml
polybase.kerberos.kdchost
Especifique o nome de host do KDC. Por exemplo: kerberos.your-realm.com
.2 core-site.xml
polybase.kerberos.realm
Especifique o realm do Kerberos. Por exemplo: YOUR-REALM.COM
Observação de configuração: o nome de realm deve ser escrito em letras maiúsculas.
Não há compatibilidade com multi-realm.3 core-site.xml
hadoop.security.authentication
Localize a configuração do lado do Hadoop e copie a máquina do SQL Server. Por exemplo: KERBEROS
Observação de segurança:KERBEROS
deve ser escrito em letras maiúsculas.4 hdfs-site.xml
dfs.namenode.kerberos.principal
Localize a configuração do lado do Hadoop e copie a máquina do SQL Server. Por exemplo: hdfs/_HOST@YOUR-REALM.COM
5 mapred-site.xml
mapreduce.jobhistory.principal
Localize a configuração do lado do Hadoop e copie a máquina do SQL Server. Por exemplo: mapred/_HOST@YOUR-REALM.COM
6 mapred-site.xml
mapreduce.jobhistory.address
Localize a configuração do lado do Hadoop e copie a máquina do SQL Server. Por exemplo: 10.xxx.xxx.174:10020
7 yarn-site.xml
yarn.resourcemanager.principal
Localize a configuração do lado do Hadoop e copie a máquina do SQL Server. Por exemplo: yarn/_HOST@YOUR-REALM.COM
Crie um objeto de credencial com escopo de banco de dados para especificar as informações de autenticação de cada usuário do Hadoop. Veja Objetos T-SQL do PolyBase.
Próximas etapas
Para obter mais informações, consulte os seguintes artigos: