Hadoop-23.0中国語ドキュメント——MapReduce次世代-Ecryped Shuffle
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.cert
false
クライアント証明書は必要ですか?hadoop.ssl.hostname.verifier
DEFAULT
HttpspURLConnectionsに提供するホスト名の検証器. DEFAULT STRICT、 STRICT_I 6, DEFAULT_AND_LOCALHOST ALLOW_とALLhadoop.ssl.keystores.factory.class
org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory
使用するKey Stress Factoryを実現しました.hadoop.ssl.server.conf
ss-server.xml
keystore情報を抽出するためのsslサーバのファイルです.この書類はクラスパスの中で探すべきです. Hadoop conf/カタログにあります.hadoop.ssl.client.conf
ss-client.xml
keystore情報を抽出するための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.enabled
false
暗号化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.type
jks
Keystoreファイルタイプssl.server.keystore.location
NONEKeystoreファイルの位置. mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.
ssl.server.keystore.password
NONEKeystoreファイルのパスワード
ssl.server.truststore.type
jks
Trust storeファイルタイプssl.server.truststore.location
NONETrust store ファイルの場所 mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.
ssl.server.truststore.password
NONETrust storeファイルのパスワード
ssl.server.truststore.reload.interval
10000Trust 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.type
jks
Keystone ファイルタイプssl.client.keystore.location
NONEKeystone ファイルの場所 mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.
ssl.client.keystore.password
NONEKeystone ファイルのパスワード
ssl.client.truststore.type
jks
Trust store ファイルタイプssl.client.truststore.location
NONETrust store ファイルの場所 mapredユーザはこのファイルを所有し、一意のアクセス権を持つべきです.
ssl.client.truststore.password
NONETrust store ファイルのパスワード
ssl.client.truststore.reload.interval
10000Trust 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"