Spark On kubernetes连接kerberos认证的hive

Spark通过yarn、kubernetes连接kerberos 认证的Hive,需要把hive-site.xml以及hadoop的conf下的xml文件,都放到Spark 的conf目录下,官网写的设置HADOOP_CONF_DIR环境变量我自己测试在容器外是无效的,到认证时,一直报错Failed to find any Kerberos tgt,且Kerberos Server也没有收到任何验证信息。需要将HADOOP_CONF_DIR环境变量以及对于的配置文件一起打到镜像内,如

        ENV HADOOP_CONF_DIR=/opt/spark/conf/

        CP hdfs-site.xml core-site.xml /opt/spark/conf 

其次,需要保证供kubernetes调用的spark镜像内,与KDC、Hadoop集群的网络、域名解析都是通畅的。

最后spark-submit时,传入参数

--conf spark.kerberos.keytab=<KEYTAB_FILE> \
 --conf spark.kerberos.principal=<PRINCIPAL> \
 --conf spark.kubernetes.kerberos.krb5.path=/etc/krb5.conf

这样在spark程序能直接enableHiveSupport,就可以连接上kerberos认证的hive

测试时不用测试spark standalone mode,截止至3.4.0版本,仅yarn 和kubernetes、mesos支持kerberos认证,其它模式均不支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark可以通过使用Hive的元数据来访问Hive表。要在Spark中整合Hive,需要在启动Spark时将Hive的JAR文件添加到Spark的CLASSPATH中。同时,还需要在SparkConf中设置hive.metastore.uris属性,以指定Hive元数据存储的位置。 在进行Kerberos认证时,需要在SparkConf中设置以下属性: - spark.authenticate.enableSasl:启用SASL认证。 - spark.yarn.security.credentials.hive.enabled:启用HiveKerberos认证。 - spark.hadoop.security.authentication:设置Hadoop的认证方式为Kerberos。 - spark.hadoop.security.authorization:启用Hadoop的授权功能。 此外,还需要在启动Spark时指定Kerberos的相关配置,包括Kerberos的keytab文件和principal。 例如,可以使用以下代码启动Spark并进行Kerberos认证: ``` val conf = new SparkConf() .setAppName("Spark Hive Kerberos") .setMaster("yarn") .set("spark.authenticate.enableSasl", "true") .set("spark.yarn.security.credentials.hive.enabled", "true") .set("spark.hadoop.security.authentication", "kerberos") .set("spark.hadoop.security.authorization", "true") .set("spark.executor.extraJavaOptions", "-Djava.security.auth.login.config=/path/to/jaas.conf") .set("spark.driver.extraJavaOptions", "-Djava.security.auth.login.config=/path/to/jaas.conf") UserGroupInformation.setConfiguration(conf) UserGroupInformation.loginUserFromKeytab("user@EXAMPLE.COM", "/path/to/user.keytab") val spark = SparkSession.builder() .config(conf) .enableHiveSupport() .getOrCreate() ``` 其中,/path/to/jaas.conf是Kerberos的JAAS配置文件,user@EXAMPLE.COM是Kerberos的principal,/path/to/user.keytab是Kerberos的keytab文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值