PolyBase の構成と Hadoop 用のセキュリティ

適用対象:Windows 上の SQL ServerAzure SQL Managed Instance

この記事では、Hadoop への PolyBase 接続に影響するさまざまな構成設定のリファレンスを示します。 PolyBase と Hadoop の連携方法に関するチュートリアルについては、「Hadoop 内の外部データにアクセスするように PolyBase を構成する」を参照してください。

注意

SQL Server 2022 (16.x) 以降、Hadoop は PolyBase でサポートされなくなります。

Hadoop.rpc.protection 設定項目

Hadoopクラスターで通信を安全にする一般的な方法は、 hadoop.rpc.protection 構成を Privacy または Integrityに変更することです。 デフォルトでは、PolyBaseは設定が Authenticateに設定されていると仮定しています。 この既定値をオーバーライドするには、次のプロパティを 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.protectionPrivacyまたはIntegrityを使用する場合、SQL Serverインスタンスのバージョンは少なくとも2016 SP1 CU7、SQL Server 2016 SP2、またはSQL Server 2017 CU3 SQL Serverである必要があります。

CDH 5.xクラスタのXMLファイルの例

yarn-site.xmlyarn.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>

2 つの構成設定を 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 の構成

PolyBaseがKerberosで保護されたクラスタに認証する際、 hadoop.rpc.protection 設定がデフォルトで Authenticate されることを期待します。 この設定により、Hadoopノード間のデータ通信は暗号化されません。 hadoop.rpc.protectionPrivacyまたはIntegrity設定を使うには、PolyBaseサーバーのcore-site.xmlファイルを更新してください。 詳細については、前のセクションの「Hadoop.RPC.Protection 設定での Hadoop クラスターへの接続」を参照してください。

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 コンピューター上の対応するファイル内の値プロパティにコピーします。

    # 構成ファイル 構成キー アクション
    1 core-site.xml polybase.kerberos.kdchost KDC のホスト名を指定します。 たとえば、「 kerberos.your-realm.com 」のように入力します。
    2 core-site.xml polybase.kerberos.realm Kerberos 領域を指定します。 例えば、 YOUR-REALM.COM1、2
    3 core-site.xml hadoop.security.authentication Hadoop 側の構成を検出して SQL Server コンピューターにコピーします。 例えば、 KERBEROS1
    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 のように指定します。

    1 この値は大文字で書かれなければなりません。
    2 マルチレルムはサポートされていません。

  4. 各 Hadoop ユーザーの認証情報を指定するデータベース スコープ資格情報オブジェクトを作成します。 詳細については PolyBase Transact-SQL 参考文献を参照してください。