集群外节点部署不同版本的客户端(TDH-Client)

  其他常见问题
内容纲要

概要描述

当集群外服务器,希望部署多套 tdh-client 时,有时会因为版本差距较大,导致认证需要的环境变量出现不匹配的情况;

本文档提供一种在一台服务器上部署多个客户端的方法;

详细说明

大致的原理就是修改旧版本的 tdh-client init.sh 脚本,让每个客户端使用自己的环境变量;

安装 jdk1.8

yum -y list java*

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

配置JAVA_HOME

vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

file

准备客户端

在旧的 tdh-cleint 客户端的 init.sh 中,增加一个函数,以及函数的调用,如下图:

file


function processKrb5Config {
    export KRB5_CONFIG=$currentPath/kerberos/krb5.conf
    if [ -z $KRB5CCNAME ]; then
        randNum=cat /proc/sys/kernel/random/uuid
        TDH_ticketCachePath="/tmp/krb5cc_$randNum"
        export KRB5CCNAME=$TDH_ticketCachePath
    fi

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
    export YARN_OPTS="$YARN_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
    export ZOOKEEPER_OPTS="$ZOOKEEPER_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
    export HBASE_OPTS="$HBASE_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
    export SQOOP_OPTS="$SQOOP_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
    export KAFKA_OPTS="$KAFKA_OPTS -Djava.security.krb5.conf=$currentPath/kerberos/krb5.conf"
}

isProcessHostsOrNot
if [ "$ShouldProcessHosts" = "yes" ]; then
  processHosts
fi

if [ -z "$JAVA_HOME" ]; then
    echo "ERROR, can't find java, JAVA_HOME is empty."
else
  if [  -f $currentPath/kerberos/krb5.conf ]; then
    isProcessKerberosOrNot
    if [ "$ShouldProcessKerberos" = "yes" ]; then
      processKerberos
    fi
    processKrb5Config
  fi
  processServers
  deleteHdfsSecurityMapping
fi
echo "Init done!"

验证

如果访问A集群,就对A集群的TDH-Client做source init.sh;
如果访问B集群,就对B集群的TDH-Client做source init.sh

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。