Hadoop 的 PolyBase 設定和安全性

適用於:SQL Server - 僅限 WindowsAzure SQL 受控執行個體

本文提供影響 PolyBase 連線至 Hadoop 的各種組態設定參考。 如需如何搭配使用 PolyBase 與 Hadoop 的逐步解說,請參閱設定 PolyBase 存取 Hadoop 中的外部資料

注意

從 SQL Server 2022 (16.x) 開始,PolyBase 不再支援 Hadoop。

Hadoop.RPC.Protection 設定

保護 hadoop 叢集通訊的常見方式是,將 hadoop.rpc.protection 變更為「隱私權」或「完整性」。 根據預設,PolyBase 假設設定是設定為「驗證」。 若要覆寫此預設,請新增下列屬性至 core-site.xml 檔案。 變更此設定可保護 Hadoop 節點之間的資料傳輸以及與 SQL Server 的 TLS 連線。

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

若要針對 hadoop.rpc.protection 使用「隱私權」或「完整性」,SQL 執行個體版本必須至少是 SQL Server 2016 SP1 CU7、SQL Server 2016 SP2 或 SQL Server 2017 CU3。

CDH 5.X 叢集的範例 XML 檔案

Yarn-site.xml 包含 yarn.application.classpathmapreduce.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.xmlyarn-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 設定

請注意,驗證 Kerberos 安全叢集時,PolyBase 會預期 hadoop.rpc.protection 設定預設為「驗證」。 這會導致 Hadoop 節點之間的資料通訊未加密。 若要使用 hadoop.rpc.protection 的「隱私權」或「完整性」設定,請更新 PolyBase 伺服器上的 core-site.xml 檔案。 如需詳細資訊,請參閱上一節:連線至 Hadoop 叢集與 Hadoop.rpc.protection

使用 MIT KDC 連線至 Kerberos 保護的 Hadoop 叢集:

  1. 在 SQL Server 的安裝路徑中,尋找 Hadoop 組態目錄。 檔案路徑通常是 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf

  2. 尋找資料表中所列之組態機碼的 Hadoop 端組態值。 (在 Hadoop 電腦上,尋找 Hadoop 組態目錄中的檔案)。

  3. 將組態值複製到 SQL Server 電腦上對應檔案中的 Value 屬性。

    # 組態檔 組態機碼 動作
    1 core-site.xml polybase.kerberos.kdchost 指定 KDC 主機名稱。 例如:kerberos.your-realm.com
    2 core-site.xml polybase.kerberos.realm 指定 Kerberos 領域。 例如:YOUR-REALM.COM

    設定注意事項:領域名稱必須大寫。

    不支援多領域。
    3 core-site.xml hadoop.security.authentication 尋找 Hadoop 端組態並複製到 SQL Server 電腦。 例如: KERBEROS

    安全性注意事項︰KERBEROS 必須大寫。
    4 hdfs-site.xml dfs.namenode.kerberos.principal 尋找 Hadoop 端組態並複製到 SQL Server 電腦。 例如: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal 尋找 Hadoop 端組態並複製到 SQL Server 電腦。 例如: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address 尋找 Hadoop 端組態並複製到 SQL Server 電腦。 例如: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal 尋找 Hadoop 端組態並複製到 SQL Server 電腦。 例如: yarn/_HOST@YOUR-REALM.COM
  4. 建立資料庫範圍的認證物件,以指定每個 Hadoop 使用者的驗證資訊。 請參閱 PolyBase T-SQL objects(PolyBase T-SQL 物件)。

後續步驟

如需詳細資訊,請參閱下列文章: