2つのオープンHadoopクラスタのKerberos認証の後、クラスタ間には、本質的にKerberosレルムにアクセスのチケット実現を使用してHadoopクラスタにのクライアントアクセスサービスのHadoopクラスタBを(使用して、Kerberosの間の相互信頼を達成する必要が互いへのアクセス権を持っていませんレルムBサービス)。
前提条件:
1)は、2つのクラスタ(XDF.COMとHADOOP.COM)はKerberos認証オンさ
2)がKerberos領域に設定されXDF.COMとHADOOP.COMあり
、以下のステップ:
1枚のチケットKDC構成との間の信頼
達成DXDF.COMとHADOOP.COM例えば間のクロスドメインの信頼、XDF.COMクライアントアクセスHADOOP.COMサービスでは、2 REALMという名前の共同所有者のkrbtgt /必要と[email protected]元本の2つのキーがパスワード、同じバージョン番号と暗号化を確保する必要があります。デフォルトでは、信頼関係が一方向である、 HADOOP.COMクライアントアクセスXDF.COMのサービスは、2 REALMはKRBTGT /必要です[email protected]の校長を。
二つのクラスタへのkrbtgtプリンシパルを追加します。
#XDF CLUSTER
kadmin.local: addprinc –e “aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal ” krbtgt/[email protected]
kadmin.local: addprinc –e “aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal ” krbtgt/[email protected]
#HADOOP CLUSTER
kadmin.local: addprinc –e “aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal ” krbtgt/[email protected]
kadmin.local: addprinc –e “aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal ” krbtgt/[email protected]
2つのエントリが一致するKVNOと暗号化の種類、ビューコマンドgetprinc <principal_nameの>を持っていることを確認するために、
kadmin.local: getprinc krbtgt/[email protected]
Principal: krbtgt/[email protected]
Expiration date: [never]
Last password change: Wed Jul 05 14:18:11 CST 2017
Password expiration date: [none]
Maximum ticket life: 1 day 00:00:00
Maximum renewable life: 30 days 00:00:00
Last modified: Wed Jul 05 14:18:11 CST 2017 (admin/[email protected])
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 7
Key: vno 1, aes128-cts-hmac-sha1-96
Key: vno 1, des3-cbc-sha1
Key: vno 1, arcfour-hmac
Key: vno 1, camellia256-cts-cmac
Key: vno 1, camellia128-cts-cmac
Key: vno 1, des-hmac-sha1
Key: vno 1, des-cbc-md5
MKey: vno 1
Attributes:
Policy: [none]
kadmin.local: getprinc addprinc krbtgt/[email protected]
usage: get_principal [-terse] principal
kadmin.local: getprinc krbtgt/[email protected]
Principal: krbtgt/[email protected]
Expiration date: [never]
Last password change: Wed Jul 05 14:17:47 CST 2017
Password expiration date: [none]
Maximum ticket life: 1 day 00:00:00
Maximum renewable life: 30 days 00:00:00
Last modified: Wed Jul 05 14:17:47 CST 2017 (admin/[email protected])
Last successful authentication: [never]
Last failed authentication: [never]
Failed password attempts: 0
Number of keys: 7
Key: vno 1, aes128-cts-hmac-sha1-96
Key: vno 1, des3-cbc-sha1
Key: vno 1, arcfour-hmac
Key: vno 1, camellia256-cts-cmac
Key: vno 1, camellia128-cts-cmac
Key: vno 1, des-hmac-sha1
Key: vno 1, des-cbc-md5
MKey: vno 1
Attributes:
Policy: [none]
コアサイト2とユーザ設定プリンシパルマッピング規則
ユーザーにプリンシパルに使用されているhadoop.security.auth_to_localパラメータを設定し、SASL RPCクライアントはKerberosプリンシパルリモートサーバーは、構成自体で元本と一致する必要が問題に注意を払う必要があります。NN / H用の名前ノードkerbeorsプリンシパル名で、ソースクラスタとサービスのソースと宛先クラスタに割り当てられた同じpricipal名必要pricipal NN / Hに設定された宛先クラスタの@ XDF.COM、名前ノードを @ HADOOP.COM( )nn2/h***@HADOOP.COM設定することができない、例えば:
コアサイトにXDFクラスタとHADOOPクラスタの増加。
<property>
<name>hadoop.security.auth_to_local</name>
<value>
RULE:[1:$1@$0](^.*@HADOOP\.COM$)s/^(.*)@HADOOP\.COM$/$1/g
RULE:[2:$1@$0](^.*@HADOOP\.COM$)s/^(.*)@HADOOP\.COM$/$1/g
RULE:[1:$1@$0](^.*@XDF\.COM$)s/^(.*)@XDF\.COM$/$1/g
RULE:[2:$1@$0](^.*@XDF\.COM$)s/^(.*)@XDF\.COM$/$1/g
DEFAULT
</value>
</property>
使用Hadoopのorg.apache.hadoop.security.HadoopKerberosName <校長名>例えば、達成確認します。
[root@node1a141 ~]# hadoop org.apache.hadoop.security.HadoopKerberosName hdfs/[email protected]
Name: hdfs/[email protected] to hdfs
3 krb5.confの中に信頼関係を設定します
3.1コンフィギュレーションcapaths
最初の方法は、これがデフォルトであり、比較的簡単な方法、第二の方法は、第二のアプローチ複雑ですが、より柔軟なkrb5.confファイル、でcapathsを変更することで、名前の共有階層を設定することです。
例えば、2つのクラスタノード/etc/krb5.confのファイル内のドメインとレルムとの間のマッピングを設定:XDFクラスタ構成にします。
[capaths]
XDF.COM = {
HADOOP.COM = .
}
Hadoopクラスタ構成ではその中:
[capaths]
HADOOP.COM = {
XDF.COM = .
}
「」配置された中間の王国ではありません
3.2レルムを設定します
同じに対し、以下に説明するようにKDCのHADOOP XDFアクセスできるようにするために、KDCサーバHADOOPは、XDF Cluster構成する必要があります。
[realms]
XDF.COM = {
kdc = {host}.XDF.COM:88
admin_server = {host}.XDF.COM:749
default_domain = XDF.COM
}
HADOOP.COM = {
kdc = {host}.HADOOP.COM:88
admin_server = {host}.HADOOP.COM:749
default_domain = HADOOP.COM
}
3.3のdomain_realm
「.XDF.COM」と 『XDF.COM』形式へのdomain_realmで、一般的な構成「」プレフィックス全てXDF.COMはホストがXDF.COMレルムにマッピングされるケルベロスことを確実にします。クラスタのホスト名がXDF.COMサフィックス形式にない場合は、あなたがXDF.nn.localがXDF.COMにマッピングされ、たとえば、ホストとののdomain_realm領域との間のマッピングを設定する必要があり、必要がXDF.nn.local =を高めるためにXDF.COM。
[domain_realm]
.hadoop.com=HADOOP.COM
hadoop.com=HADOOP.COM
.xdf.com=XDF.COM
xdf.com=XDF.COM
node1a141 = XDF.COM
node1a143 = XDF.COM
node1a210 = HADOOP.COM
node1a202 = HADOOP.COM
node1a203 = HADOOP.COM
Kerberosサービスを再起動します。
3.4コンフィギュレーションHDFS-site.xmlの
HDFS-site.xmlで、レルムを可能にするために設けられている
「*」のようdfs.namenode.kerberos.principal.pattern HDFS-site.xmlのを配置
これは、パラメータが設定されていない場合は、次の例外があり、認証レルムを許可するようにクライアントを制御するためのマッチングルールです:
java.io.IOException: Failed on local exception: java.io.IOException:
java.lang.IllegalArgumentException:
Server has invalid Kerberosprincipal:nn/ HADOOP.COM@ XDF.COM;
Host Details : local host is: "host1.XDF.COM/10.181.22.130";
destination host is: "host2.HADOOP.COM":8020;
4試験
1)HDFSを使用して試験し、HADOOP XDFクラスタ間のデータアクセスをコマンドのkinitでXDFクラスタにおける例示[email protected]ため、HDFSは、コマンドを実行します。
[root@node1a141 ~]# kdestroy
[root@node1a141 ~]# kinit admin
Password for [email protected]:
[root@node1a141 ~]# hdfs dfs -ls /
Found 3 items
drwxrwxrwx+ - hdfs supergroup 0 2017-06-13 15:13 /tmp
drwxrwxr-x+ - hdfs supergroup 0 2017-06-22 15:55 /user
drwxrwxr-x+ - hdfs supergroup 0 2017-06-14 14:11 /wa
[root@node1a141 ~]# hdfs dfs -ls hdfs://node1a202:8020/
Found 9 items
drwxr-xr-x - root supergroup 0 2017-05-27 18:55 hdfs://node1a202:8020/cdtest
drwx------ - hbase hbase 0 2017-05-22 18:51 hdfs://node1a202:8020/hbase
drwx------ - hbase hbase 0 2017-07-05 19:16 hdfs://node1a202:8020/hbase1
drwxr-xr-x - hbase hbase 0 2017-05-11 10:46 hdfs://node1a202:8020/hbase2
drwxr-xr-x - root supergroup 0 2016-12-01 17:30 hdfs://node1a202:8020/home
drwxr-xr-x - mdss supergroup 0 2016-12-13 18:30 hdfs://node1a202:8020/idfs
drwxr-xr-x - hdfs supergroup 0 2017-05-22 18:51 hdfs://node1a202:8020/system
drwxrwxrwt - hdfs supergroup 0 2017-05-31 17:37 hdfs://node1a202:8020/tmp
drwxrwxr-x+ - hdfs supergroup 0 2017-05-04 15:48 hdfs://node1a202:8020/user
HADOOP.COMと同様の操作
2)以下のようにクラスタにdistcp XDFのHadoopデータをコピーするためのプログラムを実行し、コマンドは次のとおりです。
[root@node1a141 ~]# hadoop distcp hdfs://node1a141:8020/tmp/test.sh hdfs://node1a202:8020/tmp/
付録5
以下の2つのクラスタの完全なファイルの内容の/etc/krb5.conf:
[root@node1a141 xdf]# cat /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = XDF.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 7d
renew_lifetime = 30
forwardable = true
renewable=true
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
HADOOP.COM = {
kdc = node1a198
admin_server = node1a198
default_realm = HADOOP.COM
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
XDF.COM = {
kdc = node1a141
admin_server = node1a141
default_realm = XDF.COM
supported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
[domain_realm]
.hadoop.com=HADOOP.COM
hadoop.com=HADOOP.COM
.xdf.com=XDF.COM
xdf.com=XDF.COM
node1a141 = XDF.COM
node1a143 = XDF.COM
node1a210 = HADOOP.COM
node1a202 = HADOOP.COM
node1a203 = HADOOP.COM
[capaths]
XDF.COM = {
HADOOP.COM = .
}