Hadoop-23.0中国語ドキュメント——MapReduce次世代-Ecryped Shuffle

10900 ワード

概要
 Ecryped Shuffle capabilityは、HTTPSとオプションのクライアント検証(双方向のHTTPSとも呼ばれるか、クライアント証明書があるHTTPSともいう)でMapReduce shuffleを暗号化することができます.
HTTPとHTTPSとの間にshuffleを結びつける1つのHadoop構成keystoreとtrust store属性を指定するためのHadoopプロファイル(位置、タイプ、パスワード)は、shuffleサービスとreducerタスクのためにshuffleデータを取りに行きます.Trust storesをクラスタ内でクロスロードし(ノードが追加または削除されると)設定
core-site.xml 属性
shuffleを暗号化するには、coree-site.xmlでクラスタ内のすべてのノードに以下の属性を設定します.
属性
標準値
説明hadoop.ssl.require.client.certfalseクライアント証明書は必要ですか?hadoop.ssl.hostname.verifierDEFAULTHttpspURLConnectionsに提供するホスト名の検証器. DEFAULT STRICT、 STRICT_I 6, DEFAULT_AND_LOCALHOST ALLOW_とALLhadoop.ssl.keystores.factory.classorg.apache.hadoop.security.ssl.FileBasedKeyStoresFactory使用するKey Stress Factoryを実現しました.hadoop.ssl.server.confss-server.xmlkeystore情報を抽出するためのsslサーバのファイルです.この書類はクラスパスの中で探すべきです. Hadoop conf/カタログにあります.hadoop.ssl.client.confss-client.xmlkeystore情報を抽出するためのsslサーバのファイルです.この書類はクラスパスの中で探すべきです. Hadoop conf/カタログにあります.
重要: クライアント証明書をfalseに設定する必要があります.参照 Client Cerrtificat 詳細を取得するためのセクション.
重要:クラスタプロファイル内のすべての属性はfinalとしてマークされるべきである.
例:
    ...
    <property>
      <name>hadoop.ssl.require.client.cert</name>
      <value>false</value>
      <final>true</final>
    </property>

    <property>
      <name>hadoop.ssl.hostname.verifier</name>
      <value>DEFAULT</value>
      <final>true</final>
    </property>

    <property>
      <name>hadoop.ssl.keystores.factory.class</name>
      <value>org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory</value>
      <final>true</final>
    </property>

    <property>
      <name>hadoop.ssl.server.conf</name>
      <value>ssl-server.xml</value>
      <final>true</final>
    </property>

    <property>
      <name>hadoop.ssl.client.conf</name>
      <value>ssl-client.xml</value>
      <final>true</final>
    </property>
    ...
mapred-site.xml 属性
shuffleを暗号化するには、mapred-site.xmlでクラスタ内のすべてのノードに以下の属性を設定します.
属性
標準値
説明mapreduce.shuffle.ssl.enabledfalse暗号化shuffleが許可されていますか?
重要: クラスタプロファイルのこの属性はfinalとしてマークされるべきである.
例:
    ...
    <property>
      <name>mapreduce.shuffle.ssl.enabled</name>
      <value>true</value>
      <final>true</final>
    </property>
    ...
Linux容器アクチュエータは、ジョブ読取サーバのkeystore情報の遮断と、shuffleサーバ証明書の取得を行うように設定するべきである.
Hadoop Kerberssの構成を参考にして、ここでどうやって行うかの詳細を確認します.
KeystoreとTrust storeの設定
現在  FileBasedKeyStoresFactory はい、  KeyStoresFactory の唯一の実現  FileBasedKeyStoresFactory 下記の属性を使って、 ssl-server.xml 和 ssl-client.xml ファイルでは、keystorsとtrust storesを設定します.ssl-server.xml (Shuffle server)の構成:
mapredユーザは、ssl-server.xmlファイルを所有し、一意のアクセス権を持つべきである.
属性
標準値
説明ssl.server.keystore.typejksKeystoreファイルタイプssl.server.keystore.locationNONE
Keystoreファイルの位置.  mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.ssl.server.keystore.passwordNONE
Keystoreファイルのパスワードssl.server.truststore.typejksTrust storeファイルタイプssl.server.truststore.locationNONE
Trust store ファイルの場所  mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.ssl.server.truststore.passwordNONE
Trust storeファイルのパスワードssl.server.truststore.reload.interval10000
Trust storeのリロード間隔、ミリ秒値
例:
<configuration>

  <!-- Server Certificate Store -->
  <property>
    <name>ssl.server.keystore.type</name>
    <value>jks</value>
  </property>
  <property>
    <name>ssl.server.keystore.location</name>
    <value>${user.home}/keystores/server-keystore.jks</value>
  </property>
  <property>
    <name>ssl.server.keystore.password</name>
    <value>serverfoo</value>
  </property>

  <!-- Server Trust Store -->
  <property>
    <name>ssl.server.truststore.type</name>
    <value>jks</value>
  </property>
  <property>
    <name>ssl.server.truststore.location</name>
    <value>${user.home}/keystores/truststore.jks</value>
  </property>
  <property>
    <name>ssl.server.truststore.password</name>
    <value>clientserverbar</value>
  </property>
  <property>
    <name>ssl.server.truststore.reload.interval</name>
    <value>10000</value>
  </property>
</configuration>
ssl-client.xml (Reducer/Fetch) の設定:
mapredユーザはssl-server.xmlファイルを持つべきで、デフォルトの権限があるべきです.
属性
標準値
説明ssl.client.keystore.typejksKeystone ファイルタイプssl.client.keystore.locationNONE
Keystone ファイルの場所  mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.ssl.client.keystore.passwordNONE
Keystone ファイルのパスワードssl.client.truststore.typejksTrust store ファイルタイプssl.client.truststore.locationNONE
Trust store ファイルの場所  mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.ssl.client.truststore.passwordNONE
Trust store ファイルのパスワードssl.client.truststore.reload.interval10000
Trust store  リロード間隔、ミリ秒値
例:
<configuration>

  <!-- Client certificate Store -->
  <property>
    <name>ssl.client.keystore.type</name>
    <value>jks</value>
  </property>
  <property>
    <name>ssl.client.keystore.location</name>
    <value>${user.home}/keystores/client-keystore.jks</value>
  </property>
  <property>
    <name>ssl.client.keystore.password</name>
    <value>clientfoo</value>
  </property>

  <!-- Client Trust Store -->
  <property>
    <name>ssl.client.truststore.type</name>
    <value>jks</value>
  </property>
  <property>
    <name>ssl.client.truststore.location</name>
    <value>${user.home}/keystores/truststore.jks</value>
  </property>
  <property>
    <name>ssl.client.truststore.password</name>
    <value>clientserverbar</value>
  </property>
  <property>
    <name>ssl.client.truststore.reload.interval</name>
    <value>10000</value>
  </property>
</configuration>

            
            
            
            

Encrypted Shuffle

,   NodeManagers Encrypted Shuffle.

:  encrypted shuffle 。 , 1 shuffle 。(?)

ClientCertificates 

reducer 。 , ( )keystore 。 keystore , Shuffle 。 , JobToken, Shuffle server 。 , JobToken, 。

Truststores

, truststores 10 。 truststore , , 。 , / 。 , NodeManager ( ) truststore , NodeManager , 。

Debugging

:  debugging , 。 , 。( mapred.task.timeout , 。)

reducers SSL debugging, -Djavax.net.debug=all in the mapreduce.reduce.child.java.opts  ; :

  <property>
    <name>mapred.reduce.child.java.opts</name>
    <value>-Xmx-200m -Djavax.net.debug=all</value>
  </property>
ごとにこのようにしてもいいです.  mapred-site.xml 。NodeManagerにこの を するには、  yarn-env.sh ファイルの :
  YARN_NODEMANAGER_OPTS="-Djavax.net.debug=all $YARN_NODEMANAGER_OPTS"