適用対象:Windows 上の SQL Server
Azure 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.protectionにPrivacyまたはIntegrityを使用する場合、SQL Serverインスタンスのバージョンは少なくとも2016 SP1 CU7、SQL Server 2016 SP2、またはSQL Server 2017 CU3 SQL Serverである必要があります。
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>
2 つの構成設定を 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 コンピューター上の対応するファイル内の値プロパティにコピーします。
# 構成ファイル 構成キー アクション 1 core-site.xmlpolybase.kerberos.kdchostKDC のホスト名を指定します。 たとえば、「 kerberos.your-realm.com」のように入力します。2 core-site.xmlpolybase.kerberos.realmKerberos 領域を指定します。 例えば、 YOUR-REALM.COM1、23 core-site.xmlhadoop.security.authenticationHadoop 側の構成を検出して SQL Server コンピューターにコピーします。 例えば、 KERBEROS14 hdfs-site.xmldfs.namenode.kerberos.principalHadoop 側の構成を検出して SQL Server コンピューターにコピーします。 たとえば、 hdfs/_HOST@YOUR-REALM.COMのように指定します。5 mapred-site.xmlmapreduce.jobhistory.principalHadoop 側の構成を検出して SQL Server コンピューターにコピーします。 たとえば、 mapred/_HOST@YOUR-REALM.COMのように指定します。6 mapred-site.xmlmapreduce.jobhistory.addressHadoop 側の構成を検出して SQL Server コンピューターにコピーします。 たとえば、 10.xxx.xxx.174:10020のように指定します。7 yarn-site.xmlyarn.resourcemanager.principalHadoop 側の構成を検出して SQL Server コンピューターにコピーします。 たとえば、 yarn/_HOST@YOUR-REALM.COMのように指定します。1 この値は大文字で書かれなければなりません。
2 マルチレルムはサポートされていません。各 Hadoop ユーザーの認証情報を指定するデータベース スコープ資格情報オブジェクトを作成します。 詳細については PolyBase Transact-SQL 参考文献を参照してください。