基于FI/MRS平台使使用客户端连接hive和hdfs认证问题总结
【摘要】 基于MRS的一些DAYU数据服务可能需要自己创建一些数据连接去使用MRS/FI集群的hive ,中间经常会遇到一些问题。该部分总结基于安全模式的FusionInsight平台或者安全模式的MRS集群§ 建立hive数据连接时的认证问题§ driver端进行hive认证首先要知道hive用户的keytab位置、kdc.conf位置和hive用户名(用户是FI的用户)然后使用以下代码,进行认证登...
基于MRS的一些DAYU数据服务可能需要自己创建一些数据连接去使用MRS/FI集群的hive ,中间经常会遇到一些问题。
该部分总结基于安全模式的FusionInsight平台或者安全模式的MRS集群
§ 建立hive数据连接时的认证问题
§ driver端进行hive认证
首先要知道hive用户的keytab位置、kdc.conf位置和hive用户名(用户是FI的用户)
然后使用以下代码,进行认证登录
1javax.security.auth.login.Configuration.setConfiguration(new ZKSignerSecretProvider.JaasConfiguration("Client",2loginUser, keytabPath));
hiveurl参考:
jdbc:hive2://18.211.150.241:24002,18.211.150.246:24002,18.211.151.36:24002/dqc;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/hadoop.hadoop.com@HADOOP.COM;
/dqc是hive库名
§ executor端进行hive认证
由于executor端是不知道keytab文件路径的,并且使用beam的jdbcIO读hive时,是没法做keytab认证的,因此要做一些特殊处理
在spark.default配置中增加spark.yarn.dist.innerfiles一项,填入keytab文件位置。这样就会传到spark的executor上,并会处于当前jvm程序的执行目录下。
hive的连接url改一下,在末尾加上user.principal(用户名)和user.keytab(用不带路径的keytab名字), 变成
jdbc:hive2://18.211.150.241:24002,18.211.150.246:24002,18.211.151.36:24002/dqc;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/hadoop.hadoop.com@HADOOP.COM;user.principal=dqcuser;user.keytab=dqcuser.keytaborg.apache.hive.hive-jdbc版本使用FI提供的1.3.0版本
§ hdfs认证
beam提供的hdfs sdk不适用于安全模式的FI集群,需要自己写1个hdfsClient,然后用在processElement中。如果hdfsClient未初始化或者未认证,则进行认证操作,然后再进行读或者写hdfs。
hdfs认证需要 keytab文件、kdf.conf、hdfs-site.xml和core-site.xml, 需要的文件较多,我们可以在提交spark任务时,把这4个文件打成zip压缩包,然后通过spark-default配置的spark.yarn.dist.innerarchives配置,在里面增加这个压缩包的路径。
添加之后,当程序运行在executor节点时,会自动把该压缩包解压成 压缩包名.zip的目录,然后从这个目录里去读文件即可。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)