Konfigurasi dan keamanan PolyBase untuk Hadoop

Berlaku untuk:SQL Server - Hanya Windows Azure SQL Managed Instance

Artikel ini menyediakan referensi untuk berbagai pengaturan konfigurasi yang memengaruhi konektivitas PolyBase ke Hadoop. Untuk panduan tentang cara menggunakan PolyBase dengan Hadoop, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di Hadoop.

Catatan

Mulai SQL Server 2022 (16.x), Hadoop tidak lagi didukung di PolyBase.

Pengaturan Hadoop.RPC.Protection

Cara umum untuk mengamankan komunikasi dalam kluster hadoop adalah dengan mengubah hadoop.rpc.protection konfigurasi menjadi 'Privasi' atau 'Integritas'. Secara default, PolyBase mengasumsikan konfigurasi diatur ke 'Autentikasi'. Untuk mengambil alih default ini, tambahkan properti berikut ke core-site.xml file . Mengubah konfigurasi ini akan memungkinkan transfer data yang aman di antara node hadoop dan koneksi TLS ke SQL Server.

<!-- RPC Encryption information, PLEASE FILL THESE IN ACCORDING TO HADOOP CLUSTER CONFIG -->
   <property>
     <name>hadoop.rpc.protection</name>
     <value></value>
   </property>

Untuk menggunakan 'Privasi' atau 'Integritas' untuk hadoop.rpc.protection, versi instans SQL Server harus setidaknya SQL Server 2016 SP1 CU7, SQL Server 2016 SP2, atau SQL Server 2017 CU3.

Contoh file XML untuk kluster CDH 5.X

Yarn-site.xml dengan yarn.application.classpath dan mapreduce.application.classpath konfigurasi.

<?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>

Jika Anda memilih untuk memecah dua pengaturan konfigurasi Anda menjadi mapred-site.xml dan yarn-site.xml, maka filenya adalah sebagai berikut:

Untuk 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>

Untuk mapred-site.xml:

Perhatikan properti mapreduce.application.classpath. Di CDH 5.x Anda akan menemukan nilai konfigurasi di bawah konvensi penamaan yang sama di 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>

Konfigurasi Kerberos

Catatan, ketika PolyBase mengautentikasi ke kluster aman Kerberos, itu mengharapkan hadoop.rpc.protection pengaturannya adalah 'Autentikasi' secara default. Ini membuat komunikasi data antara node Hadoop tidak terenkripsi. Untuk menggunakan pengaturan 'Privasi' atau 'Integritas' untuk hadoop.rpc.protection, perbarui core-site.xml file di server PolyBase. Untuk informasi selengkapnya, lihat bagian Sebelumnya Menyambungkan ke Kluster Hadoop dengan Hadoop.rpc.protection.

Untuk menyambungkan ke kluster Hadoop yang diamankan Kerberos menggunakan MIT KDC:

  1. Temukan direktori konfigurasi Hadoop di jalur penginstalan SQL Server. Biasanya, jalurnya adalah C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf.

  2. Temukan nilai konfigurasi sisi Hadoop dari kunci konfigurasi yang tercantum dalam tabel. (Pada komputer Hadoop, temukan file di direktori konfigurasi Hadoop.)

  3. Salin nilai konfigurasi ke properti nilai dalam file yang sesuai di komputer SQL Server.

    # File konfigurasi Kunci konfigurasi Tindakan
    1 core-site.xml polybase.kerberos.kdchost Tentukan nama host KDC. Misalnya: kerberos.your-realm.com.
    2 core-site.xml polybase.kerberos.realm Tentukan realm Kerberos. Misalnya: YOUR-REALM.COM

    Catatan konfigurasi: Nama realm harus ditulis dalam huruf besar.

    Multi-realm tidak didukung.
    3 core-site.xml hadoop.security.authentication Temukan konfigurasi sisi Hadoop dan salin ke komputer SQL Server. Misalnya: KERBEROS

    Catatan keamanan:KERBEROS harus ditulis dalam huruf besar.
    4 hdfs-site.xml dfs.namenode.kerberos.principal Temukan konfigurasi sisi Hadoop dan salin ke komputer SQL Server. Misalnya: hdfs/_HOST@YOUR-REALM.COM
    5 mapred-site.xml mapreduce.jobhistory.principal Temukan konfigurasi sisi Hadoop dan salin ke komputer SQL Server. Misalnya: mapred/_HOST@YOUR-REALM.COM
    6 mapred-site.xml mapreduce.jobhistory.address Temukan konfigurasi sisi Hadoop dan salin ke komputer SQL Server. Misalnya: 10.xxx.xxx.174:10020
    7 yarn-site.xml yarn.resourcemanager.principal Temukan konfigurasi sisi Hadoop dan salin ke komputer SQL Server. Misalnya: yarn/_HOST@YOUR-REALM.COM
  4. Buat objek kredensial cakupan database untuk menentukan informasi autentikasi untuk setiap pengguna Hadoop. Lihat objek T-SQL PolyBase.

Langkah berikutnya

Untuk informasi selengkapnya, lihat artikel berikut ini: