E-MapReduce中的Kerberos支持跨域访问,即不同的Kerberos集群之间可以互相访问。

工作准备

以Cluster-A跨域去访问Cluster-B中的服务为例。在emr-header-1节点上,执行hostname命令获取hostname。在emr-header-1节点的/etc/krb5.conf中获取realm
  • Cluster-A的emr-header-1节点:
    • hostname :emr-header-1.cluster-1234。
    • realm:EMR.1234.COM。
  • Cluster-B的emr-header-1节点:
    • hostname :emr-header-1.cluster-6789。
    • realm:EMR.6789.COM。

添加Principal

在Cluster-A和Cluster-B两个集群的emr-header-1节点,分别执行如下命令:
  • EMR-3.30.0及后续版本和EMR-4.5.1及后续版本:
    # root账号
    sh /usr/lib/has-current/bin/admin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
    HadminLocalTool.local: addprinc -pw 123456 krbtgt/EMR.6789.COM@EMR.1234.COM
  • EMR-3.30.0之前版本和EMR-4.5.1之前版本:
    # root账号
    sh /usr/lib/has-current/bin/hadmin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
    HadminLocalTool.local: addprinc -pw 123456 krbtgt/EMR.6789.COM@EMR.1234.COM
  • 123456是初始密码,您可以自定义。
  • EMR.6789.COM是Cluster-B的realm,即被访问的集群的realm。
  • EMR.1234.COM是Cluster-A的realm,即发起访问的集群realm。

配置Cluster-A的krb5.conf

在Cluster-A集群上配置[realms][domain_realm][capaths]
[libdefaults]
    kdc_realm = EMR.1234.COM
    default_realm = EMR.1234.COM
    udp_preference_limit = 4096
    kdc_tcp_port = 88
    kdc_udp_port = 88
    dns_lookup_kdc = false
[realms]
    EMR.1234.COM = {
                kdc = 10.81.49.3:88
    }
    EMR.6789.COM = {
                kdc = 10.81.49.7:88
    }
[domain_realm]
    .cluster-1234 = EMR.1234.COM
    .cluster-6789 = EMR.6789.COM
[capaths]
    EMR.1234.COM = {
       EMR.6789.COM = .
    }
    EMR.6789.COM = {
       EMR.1234.COM = .
    }

同步/etc/krb5.conf配置信息至Cluster-A所有节点。

拷贝Cluster-B集群节点/etc/hosts中信息(只需要长域名emr-xxx-x.cluster-xxx)至Cluster-A集群所有节点的/etc/hosts中。
10.**.**.**  emr-worker-1.cluster-xxx
10.**.**.**  emr-worker-2.cluster-xxx
10.**.**.**  emr-header-1.cluster-xxx
说明
  • 如果Cluster-A上需要运行作业访问Cluster-B,则需要先重启YARN。
  • 在Cluster-A的所有节点上,配置Cluster-B的host绑定信息。

访问Cluster-B服务

在Cluster-A上,您可以使用Cluster-A的Kerberos的keytab文件,访问Cluster-B的服务。

例如,访问Cluster-B的HDFS服务。
su has;
hadoop fs -ls hdfs://emr-header-1.cluster-6789:9000/
Found 4 items
-rw-r-----   2 has    hadoop         34 2017-12-05 18:15 hdfs://emr-header-1.cluster-6789:9000/abc
drwxrwxrwt   - hadoop hadoop          0 2017-12-05 18:32 hdfs://emr-header-1.cluster-6789:9000/spark-history
drwxrwxrwt   - hadoop hadoop          0 2017-12-05 17:53 hdfs://emr-header-1.cluster-6789:9000/tmp
drwxrwxrwt   - hadoop hadoop          0 2017-12-05 18:24 hdfs://emr-header-1.cluster-6789:9000/user