Hadoop에 대한 PolyBase 구성 및 보안

적용 대상:Windows Azure SQL Managed Instance의 SQL Server

이 문서에서는 Hadoop에 대한 PolyBase 연결에 영향을 주는 다양한 구성 설정에 대한 참조를 제공합니다. Hadoop에서 PolyBase를 사용하는 방법에 대한 연습은 Hadoop의 외부 데이터에 액세스하도록 PolyBase 구성을 참조하세요.

참고

SQL Server 2022(16.x)부터 Hadoop은 PolyBase에서 지원되지 않습니다.

Hadoop.rpc.protection 설정

하둡 클러스터에서 통신을 안전하게 보호하는 일반적인 방법은 구성을 PrivacyIntegrity또는 로 변경 hadoop.rpc.protection 하는 것입니다. 기본적으로 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>

Integrity에 대해 hadoop.rpc.protection 또는 Privacy을 사용하려면 SQL Server 인스턴스 버전이 최소 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 구성

PolyBase가 Kerberos로 보호된 클러스터에 인증하는 경우, 기본적으로 hadoop.rpc.protection 설정이 Authenticate로 설정되어 있기를 예상합니다. 이 설정은 하둡 노드 간 데이터 통신을 암호화하지 않은 상태로 유지합니다. hadoop.rpc.protection에 대해 Privacy 또는 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 컴퓨터의 해당 파일 내 value 속성에 복사합니다.

    # 구성 파일 구성 키 조치
    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 참고 자료를 참조하세요.