Standalone Spark集群访问Kerberos认证Hadoop失败问题咨询
Standalone Spark集群访问Kerberos认证Hadoop的配置问题
环境信息
- Spark 3.3.1 Standalone集群(1主3从)
- Hadoop 3.3.2,已配置Kerberos认证
- Hive Metastore 3.0.0,作为Spark会话目录及Iceberg存储目录
- 客户端通过keytab可正常读写Hadoop;Hive Metastore配置
hive/fqdnprincipal后运行正常,使用该principal执行kinit并通过klist验证身份有效 - 已将Hadoop的
core-site.xml、hdfs-site.xml及Hive的hive-site.xml放入Spark集群所有节点的配置目录
尝试的配置及对应错误
尝试三种Kerberos身份认证配置方式,均出现spark-sql启动、建表、truncate表、查看表结构/列表正常,但insert等DML操作及select查询失败的情况,具体如下:
集群节点配置文件固定参数
- 在Spark主、从节点的
spark-defaults.conf中配置:spark.kerberos.keytab、spark.kerberos.principal(使用超级用户hdfs/fqdn) - 执行查询时错误:
Can't get Master Kerberos principal for use as renewer
- 在Spark主、从节点的
CLI命令行传递参数
- 不修改集群节点的
spark-defaults.conf,启动spark-sql时通过参数传递:spark-sql --keytab <keytab文件路径> --principal <principal> - 执行查询时错误:
Client cannot authenticate via:[TOKEN, KERBEROS]
- 不修改集群节点的
本地手动获取TGT后启动
- 不配置Spark的Kerberos相关参数,在执行spark-sql前,用目标principal执行
kinit获取TGT - 执行查询时错误:
SIMPLE authentication is not enabled
- 不配置Spark的Kerberos相关参数,在执行spark-sql前,用目标principal执行
补充说明
- 暂不考虑使用YARN模式部署Spark
- 本地模式测试结果:Hive格式表操作失败,但Iceberg表可正常执行DML及查询,不过本地模式无法满足集群扩容需求
问题咨询
- Standalone Spark集群是否支持访问开启Kerberos认证的Hadoop集群?
- 若支持,求正确的配置示例;若不支持,求Spark访问安全Hadoop的可行替代方案
内容的提问来源于stack exchange,提问作者robert
相关产品推荐
相关产品推荐

