Spark 本地连接远程服务器上带有kerberos认证的Hive

16 篇文章 1 订阅
本文详细介绍了如何在本地环境下通过Spark连接到远程服务器上带有kerberos认证的Hive。首先,讨论了在服务器上直接提交Spark程序进行认证的两种方法,接着详细阐述了本地连接的步骤,包括环境配置、核心配置文件的使用,以及遇到的异常及解决过程。最终,通过在代码中设置Spark和Hadoop的属性,并确保配置文件正确同步到classpath,成功解决了认证问题。
摘要由CSDN通过智能技术生成

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun

前言

因为公司的测试环境带有kerberos,而我经常需要本地连接测试集群上的hive,以进行源码调试。而本地认证远程集群的kerberos,并访问hive,和在服务器上提交Spark程序代码有些不同,所以专门研究了一下
并进行总结。

服务器上

在服务器上提交Spark程序认证kerberos比较简单,有两种方法:

  • 使用kinit 缓存票据 kinit -kt /etc/security/keytabs/hive.service.keytab hive/indata-192-168-44-128.indata.com@INDATA.COM,然后提交Spark程序即可
  • 在spark-submit 中添加参数 --principal hive/indata-192-168-44-128.indata.com@INDATA.COM --keytab /etc/security/keytabs/hive.service.keytab

本地

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
发出的红包

打赏作者

董可伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值