内容纲要
概要描述
当集群外服务器,希望部署多套 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
准备客户端
在旧的 tdh-cleint 客户端的 init.sh 中,增加一个函数,以及函数的调用,如下图:
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