Hadoop에 대한 PolyBase 구성 및 보안PolyBase configuration and security for Hadoop

적용 대상: 예SQL Server(Windows만 해당) 아니요Azure SQL Database 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

이 문서에서는 PolyBase-Hadoop 연결에 영향을 주는 다양한 구성 설정의 참조를 제공합니다.This article provides a reference for various configuration settings that affect PolyBase connectivity to Hadoop. Hadoop에서 PolyBase를 사용하는 방법에 대한 연습 과정은 Hadoop의 외부 데이터에 액세스하도록 PolyBase 구성을 참조하세요.For a walkthrough on how to use PolyBase with Hadoop, see Configure PolyBase to access external data in Hadoop.

Hadoop.RPC.Protection 설정Hadoop.RPC.Protection setting

Hadoop 클러스터에서 통신을 보호하는 일반적인 방법은 '개인 정보' 또는 '무결성' hadoop.rpc.protection 구성을 변경하는 것입니다.A common way to secure communication in a hadoop cluster is by changing the hadoop.rpc.protection configuration to 'Privacy' or 'Integrity'. 기본적으로 PolyBase는 구성이 '인증'으로 설정되었다고 가정합니다.By default, PolyBase assumes the configuration is set to 'Authenticate'. 이 기본값을 재정의하려면 core-site.xml 파일에 다음 속성을 추가합니다.To override this default, add the following property to the core-site.xml file. 이 구성을 변경하면 SQL Server에 대한 SSL 연결 및 Hadoop 노드 간에 안전한 데이터 전송을 활성화합니다.Changing this configuration will enable secure data transfer among the hadoop nodes and SSL connection to SQL Server.

<!-- 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 Server가 SQL Server 2016 SP1 CU7, SQL Server 2016 SP2 또는 SQL Server 2017 CU3 이상이어야 합니다.To use 'Privacy' or 'Integrity' for hadoop.rpc.protection, SQL Server must be at least SQL Server 2016 SP1 CU7, SQL Server 2016 SP2, or SQL Server 2017 CU3.

CDH 5.X 클러스터의 예제 XML 파일Example XML files for CDH 5.X cluster

yarn.application.classpath 및 mapreduce.application.classpath 구성이 포함된 Yarn-site.xml입니다.Yarn-site.xml with yarn.application.classpath and mapreduce.application.classpath configuration.

<?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.xml 및 yarn-site.xml로 두 가지 구성 설정을 분리하도록 선택한 경우 파일은 다음과 같습니다.If you choose to break your two configuration settings into the mapred-site.xml and the yarn-site.xml then the files would be the following:

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

mapreduce.application.classpath 속성이 추가되었습니다.Note that we added the property mapreduce.application.classpath. CDH 5.x에서 Ambari의 동일한 명명 규칙에서 구성 값을 찾을 수 있습니다.In CDH 5.x you will find the configuration values under the same naming convention in 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 configuration

PolyBase가 Kerberos로 보호되는 클러스터에 인증하는 경우 기본적으로 hadoop.rpc.protection 설정이 인증이어야 합니다.Note, when PolyBase authenticates to a Kerberos secured cluster, it expects the hadoop.rpc.protection setting is 'Authenticate' by default. 이렇게 하면 암호화되지 않은 Hadoop 노드 간의 데이터 통신이 유지됩니다.This leaves the data communication between Hadoop nodes unencrypted. hadoop.rpc.protection에 대한 '개인 정보' 또는 '무결성' 설정을 사용하려면 PolyBase 서버에서 core-site.xml 파일을 업데이트합니다.To use 'Privacy' or 'Integrity' settings for hadoop.rpc.protection, update the core-site.xml file on the PolyBase server. 자세한 내용은 이전 섹션 Hadoop.rpc.protection을 사용하여 Hadoop 클러스터에 연결을 참조하세요.For more information, see the previous section Connecting to Hadoop Cluster with Hadoop.rpc.protection.

MIT KDC를 사용하여 Kerberos로 보호되는 Hadoop 클러스터에 연결하려면 다음을 수행합니다.To connect to a Kerberos-secured Hadoop cluster using MIT KDC:

  1. SQL Server의 설치 경로에서 Hadoop 구성 디렉터리를 찾습니다.Find the Hadoop configuration directory in the installation path of SQL Server. 일반적인 경로는 다음과 같습니다.Typically, the path is:

    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf  
    
  2. 아래 표에 나와 있는 구성 키의 Hadoop 쪽 구성 값을 찾습니다.Find the Hadoop side configuration value of the configuration keys listed in the table. 구성 파일은 Hadoop 컴퓨터의 Hadoop 구성 디렉터리에서 찾을 수 있습니다.(On the Hadoop machine, find the files in the Hadoop configuration directory.)

  3. 구성 값을 SQL Server 컴퓨터의 해당 파일 내 value 속성에 복사합니다.Copy the configuration values into the value property in the corresponding files on the SQL Server machine.

    # 구성 파일Configuration file 구성 키Configuration key 동작Action
    11 core-site.xmlcore-site.xml polybase.kerberos.kdchostpolybase.kerberos.kdchost KDC 호스트 이름을 지정합니다.Specify the KDC hostname. 예를 들면 kerberos.your-realm.com과 같습니다.For example: kerberos.your-realm.com.
    22 core-site.xmlcore-site.xml polybase.kerberos.realmpolybase.kerberos.realm Kerberos 영역을 지정합니다.Specify the Kerberos realm. 예를 들어 YOUR-REALM.COMFor example: YOUR-REALM.COM
    33 core-site.xmlcore-site.xml hadoop.security.authenticationhadoop.security.authentication Hadoop 쪽 구성을 찾아 SSQL Server 컴퓨터에 복사합니다.Find the Hadoop side configuration and copy to SQL Server machine. 예를 들어 KERBEROSFor example: KERBEROS
    보안 정보: KERBEROS는 대문자로 작성해야 합니다.Security note: KERBEROS must be written in upper case. 소문자로 작성되면 실행되지 않을 수 있습니다.If lower case, it might not be on.
    44 hdfs-site.xmlhdfs-site.xml dfs.namenode.kerberos.principaldfs.namenode.kerberos.principal Hadoop 쪽 구성을 찾아 SSQL Server 컴퓨터에 복사합니다.Find the Hadoop side configuration and copy to SQL Server machine. 예: hdfs/_HOST@YOUR-REALM.COMFor example: hdfs/_HOST@YOUR-REALM.COM
    55 mapred-site.xmlmapred-site.xml mapreduce.jobhistory.principalmapreduce.jobhistory.principal Hadoop 쪽 구성을 찾아 SSQL Server 컴퓨터에 복사합니다.Find the Hadoop side configuration and copy to SQL Server machine. 예: mapred/_HOST@YOUR-REALM.COMFor example: mapred/_HOST@YOUR-REALM.COM
    66 mapred-site.xmlmapred-site.xml mapreduce.jobhistory.addressmapreduce.jobhistory.address Hadoop 쪽 구성을 찾아 SSQL Server 컴퓨터에 복사합니다.Find the Hadoop side configuration and copy to SQL Server machine. 예를 들어 10.193.26.174:10020For example: 10.193.26.174:10020
    77 yarn-site.xml yarnyarn-site.xml yarn. yarn.resourcemanager.principalyarn.resourcemanager.principal Hadoop 쪽 구성을 찾아 SSQL Server 컴퓨터에 복사합니다.Find the Hadoop side configuration and copy to SQL Server machine. 예: yarn/_HOST@YOUR-REALM.COMFor example: yarn/_HOST@YOUR-REALM.COM
  4. 데이터베이스 범위 자격 증명 개체를 만들어 각 Hadoop 사용자에 대해 인증 정보를 지정합니다.Create a database-scoped credential object to specify the authentication information for each Hadoop user. PolyBase T-SQL 개체를 참조하세요.See PolyBase T-SQL objects.

다음 단계Next steps

자세한 내용은 다음 문서를 참조하세요.For more information, see the following articles:

Hadoop의 외부 데이터에 액세스하도록 PolyBase 구성 PolyBase 개요Configure PolyBase to access external data in Hadoop PolyBase overview