点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!
背 景
某业务两套hadoop集群,一套hadoop有kerberos认证A集群,一套hadoop没有认证B集群,目前客户端C属于A集群中的一员,现客户端C有向B集群传输数据和提交作业等需求。
解决方案
2.1 在C机器安装kerberos客户端
yum -y install krb5-libs krb5-workstation

2.2 修改客户端krb5相关配置,增加B集群kdc相关配置等

2.3 从B集群复制已有keytab秘钥相关文件,并鉴权
kinit -kt etc/security/ketabs/***ywhz.keytab ***ywhz.prod.hadoop.***com.cn

因需要访问B集群,故还需配置B集群的所有机器至hosts:

2.4 尝试直接hdfs ls B集群数据
hdfs dfs -ls hdfs://ip:port/tmp
报错:
SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]

原因是A集群默认是没有配置任何认证的,所以此处我们虽然鉴权了kerberos,但是认证模式依然是A集群中的authoentication false,所以我们需要在A集群上使用B集群的配置做客户端才可以访问B,但是A集群默认是已有配置的。
这里我们采用双配置的模式,方法如下:
step1 在A集群conf目录创建一个新的配置目录用来存放B集群配置
mkdir /etc/hadoop/conf.EMR/
然后将B集群的相关配置复制到此目录:

step2 当我们需要向B集群传输数据时,就使用export命令将B配置生效
export HADOOP_CONF_DIR=/etc/Hadoop/conf.EMR

step3 当不在需要访问B时,使用unset命令取消配置,hdfs命令即可访问A集群自身,达到随意切换的目的
unset HADOOP_CONF_DIR
step4 同理当我们需要使用spark、flink等组件提交作业时,也可使用相应组件的配置文件夹,当需要提交作业到B集群时,就export生效B集群配置
export SPARK_CONF_DIR=/etc/conf/spark.EMR
当需要回到A集群提交时,再unset SAPRK_CONF_DIR取消配置即可,以此可以达到单客户端就可以访问多个hadoop集群的目的。

本文作者:何 青(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




