适用于:Windows
Azure SQL 托管实例上的 SQL Server
本文为影响 PolyBase 与 Hadoop 的连接的各种配置设置提供参考。 有关如何将 PolyBase 与 Hadoop 配合使用的演练,请参阅配置 PolyBase 以访问 Hadoop 中的外部数据。
注意
从 SQL Server 2022 (16.x) 开始,PolyBase 不再支持 Hadoop。
Hadoop.rpc.protection 设置
在Hadoop集群中保护通信的一种常见方法是将配置改 hadoop.rpc.protection 为 Privacy 或 Integrity。 默认情况下,PolyBase假设配置设置为 Authenticate。 要替代此默认设置,请将以下属性添加到 core-site.xml 文件。 更改该配置可实现Hadoop节点间的安全数据传输,并实现TLS与SQL Server的连接。
<!-- RPC Encryption information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG -->
<property>
<name>hadoop.rpc.protection</name>
<value></value>
</property>
要将 Privacy 或 Integrity 用于 hadoop.rpc.protection,SQL Server 实例的版本至少必须为 SQL Server 2016 SP1 CU7、SQL Server 2016 SP2 或 SQL Server 2017 CU3。
CDH 5.x 集群的示例 XML 文件
yarn-site.xml 与 yarn.application.classpath 和 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>
如果选择将两个配置设置拆分为 mapred-site.xml 和 yarn-site.xml,则这两个文件将如下所示:
对于 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>
对于 mapred-site.xml:
请注意属性 mapreduce.application.classpath。 在 CDH 5.x 中,你可以在 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 配置
当 PolyBase 对受 Kerberos 保护的群集进行身份验证时,默认情况下,它预期 hadoop.rpc.protection 设置为 Authenticate。 这种设置使得 Hadoop 节点之间的数据通信保持不加密。 若要对 hadoop.rpc.protection 使用 Privacy 或 Integrity 设置,请更新 PolyBase 服务器上的 core-site.xml 文件。 有关详细信息,请参阅上一节的使用 Hadoop.rpc.protection 连接到 Hadoop 群集。
使用 MIT KDC 连接到采用 Kerberos 安全保护的 Hadoop 群集:
在 SQL Server 的安装路径中查找 Hadoop 配置目录。 通常,路径为
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf。查找下表中列出的配置键的Hadoop端配置值。 (对于 Hadoop 计算机,在 Hadoop 配置目录中查找文件。)
将配置值复制到 SQL Server 计算机上对应文件的值属性中。
# 配置文件 配置密钥 Action 1 core-site.xmlpolybase.kerberos.kdchost指定 KDC 主机名。 例如, kerberos.your-realm.com。2 core-site.xmlpolybase.kerberos.realm指定 Kerberos 领域。 例如, YOUR-REALM.COM1,23 core-site.xmlhadoop.security.authentication查找 Hadoop 端配置并复制到 SQL Server 计算机。 例如, KERBEROS14 hdfs-site.xmldfs.namenode.kerberos.principal查找 Hadoop 端配置并复制到 SQL Server 计算机。 例如: hdfs/_HOST@YOUR-REALM.COM5 mapred-site.xmlmapreduce.jobhistory.principal查找 Hadoop 端配置并复制到 SQL Server 计算机。 例如: mapred/_HOST@YOUR-REALM.COM6 mapred-site.xmlmapreduce.jobhistory.address查找 Hadoop 端配置并复制到 SQL Server 计算机。 例如: 10.xxx.xxx.174:100207 yarn-site.xmlyarn.resourcemanager.principal查找 Hadoop 端配置并复制到 SQL Server 计算机。 例如: yarn/_HOST@YOUR-REALM.COM1 这个值必须用大写写成。
2 不支持多域。创建数据库范围内的凭据对象,以指定每个 Hadoop 用户的身份验证信息。 更多信息请参见 PolyBase Transact-SQL 参考文献。