PolyBase の構成と Hadoop 用のセキュリティ
Applies to: SQL Server - Windows only Azure SQL Managed Instance
この記事では、Hadoop への PolyBase 接続に影響するさまざまな構成設定のリファレンスを示します。 PolyBase と Hadoop の連携方法に関するチュートリアルについては、「Hadoop 内の外部データにアクセスするように PolyBase を構成する」を参照してください。
Note
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 が少なくとも SQL Server 2016 SP1 CU7、SQL Server 2016 SP2、または SQL Server 2017 CU3 である必要があります。
CDH 5.X クラスター用のサンプル XML ファイル
yarn.application.classpath
と mapreduce.application.classpath
で構成された 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/,$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.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
各 Hadoop ユーザーの認証情報を指定するデータベース スコープ資格情報オブジェクトを作成します。 「 PolyBase T-SQL オブジェクト」を参照してください。
次のステップ
詳細については、次の記事を参照してください。