美文网首页
hdfs集群间kerberos互信配置(转)

hdfs集群间kerberos互信配置(转)

作者: 你的努力时光不会辜负 | 来源:发表于2023-01-31 11:34 被阅读0次

    1.修改hdfs配置
    在两个集群的hdfs-site.xml中添加以下内容:

    <property>
        <name>dfs.namenode.rpc-bind-host</name>
        <value>0.0.0.0</value>
        <description></description>
    </property>
    <property>
        <name>dfs.namenode.servicerpc-bind-host</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>dfs.namenode.http-bind-host</name>
        <value>0.0.0.0</value>
        <description></description>
    </property>
    <property>
        <name>dfs.namenode.https-bind-host</name>
        <value>0.0.0.0</value>
        <description></description>
    </property>
    <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value>
        <description>Whether clients should use datanode hostnames when connecting to datanodes.
        </description>
    </property>
    <property>
        <name>dfs.datanode.use.datanode.hostname</name>
        <value>true</value>
        <description>Whether datanodes should use datanode hostnames when connecting to other datanodes for data transfer.</description>
    </property>
    <property>
        <name>dfs.namenode.kerberos.principal.pattern</name>
        <value>*</value>
        <description></description>
    </property>
    
    

    2.配置两个集群的hosts
    由于hadoop集群之间数据迁移是分布式数据传输,要求两个集群的主机都能识别对方集群的主机名,因此需要在两个集群的各个主机的/etc/hosts文件中,都配置两个集群所有主机的ip主机名映射。

    3.在两个集群中创建相同加密算法的共享principal
    在源集群ZETA_RANGER.COM中:

    kadmin.local: addprinc krbtgt/ZETA_RANGER.COM@PANEL.COM
    kadmin.local: addprinc krbtgt/PANEL.COM@ZETA_RANGER.COM
    

    在目的集群PANEL.COM中:

    kadmin.local: addprinc krbtgt/ZETA_RANGER.COM@PANEL.COM
    kadmin.local: addprinc krbtgt/PANEL.COM@ZETA_RANGER.COM
    

    注意:如果两个集群的kdc的默认加密算法不同,需要在addprinc时指定相同的加密算法,如:

    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/ZETA_RANGER.COM@PANEL.COM
    

    验证两个集群中新增后的principal加密算法是否相同:

    kadmin.local: getprinc krbtgt/ZETA_RANGER.COM@PANEL.COM
    kadmin.local: getprinc krbtgt/PANEL.COM@ZETA_RANGER.COM
    

    4.在两个hdfs集群中增加彼此域中受信任的principal的命名匹配规则
    在core-site.xml中通过hadoop.security.auth_to_local配置项增加受信任的kdc域的principal命名匹配规则,即让源集群和目的集群都信任对方的principal,增加如下内容:

    RULE:[2:$1@$0]([ndj]n/.*@PANEL.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hdfs/.*@PANEL.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hive/.*@PANEL.COM)s/.*/hive/
    RULE:[2:$1@$0]([ndj]n@PANEL.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hdfs@PANEL.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hive@PANEL.COM)s/.*/hive/
    RULE:[2:$1@$0]([nd]n@ZETA_RANGER.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hive@ZETA_RANGER.COM)s/.*/hive/
    RULE:[2:$1@$0]([nd]n/.*@ZETA_RANGER.COM)s/.*/hdfs/
    RULE:[2:$1@$0](hive/.*@ZETA_RANGER.COM)s/.*/hive/
    RULE:[1:$1@$0](^.*@ZETA_RANGER.COM$)s/^(.*)@ZETA_RANGER.COM$/$1/g
    RULE:[2:$1@$0](^.*@ZETA_RANGER.COM$)s/^(.*)@ZETA_RANGER.COM$/$1/g
    RULE:[1:$1@$0](^.*@PANEL.COM$)s/^(.*)@PANEL.COM$/$1/g
    RULE:[2:$1@$0](^.*@PANEL.COM$)s/^(.*)@PANEL.COM$/$1/g
    

    注意:为了保证对方kdc能够识别并匹配到相应的principal,这里最好将两个集群中我们需要使用到的principal的命名规则都配置上。

    5.修改两个集群所有主机的krb5.conf配置文件
    在源集群ZETA_RANGER.COM的所有节点的krb5.conf中增加:

    [capaths]
        ZETA_RANGER.COM = {
            PANEL.COM = .
        }
    

    在目的集群PANEL.COM的所有节点的krb5.conf中增加:

    [capaths]
        PANEL.COM = {
            ZETA_RANGER.COM = .
        }
    

    将[realms]中彼此的域添加到对方的文件中,类似这样:

    [realms]
        PANEL.COM = {
            kdc = cd-hadoop3-1
            admin_server = cd-hadoop3-1
        }
        ZETA_RANGER.COM = {
            kdc = sp-dev-1
            admin_server = sp-dev-1
        }
    

    [domain_realm]增加如下配置,让所有的主机都能被对方kdc识别:

    [domain_realm]
        .panel.com = PANEL.COM
        panel.com = PANEL.COM
        .zeta_ranger.com = ZETA_RANGER.COM
        zeta_ranger.com = ZETA_RANGER.COM
    

    6.重启两个集群的kdc
    service krb5kdc restart
    service kadmin restart
    7.重启两个集群的hdfs集群和yarn集群
    注意: 必须重启yarn,否则提交MR任务会失败

    8.查看对方hdfs上的文件目录

    hadoop fs -ls hdfs://cd-hadoop3-1:8020
    

    9.向对方hdfs集群上传文件

    hadoop fs -put /tmp/test hdfs://cd-hadoop3-1:8020/tmp
    

    10.使用distcp传输数据到对方hdfs集群

    hadoop distcp -D ipc.client.fallback-to-simple-auth-allowed=true -m 30 hdfs://sp-dev-2:8020/tmp/test hdfs://cd-hadoop3-1:8020/tmp
    

    注意:distcp实际上是运行的mr任务,如果向yarn提交任务的用户受权限控制,需要保证提交任务的用户有相应的权限。

    ————————————————
    版权声明:本文为CSDN博主「snail_bing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/snail_bing/article/details/120264129

    相关文章

      网友评论

          本文标题:hdfs集群间kerberos互信配置(转)

          本文链接:https://www.haomeiwen.com/subject/miovhdtx.html