具体从网上看
http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication
一共提供了三种安全认证方式,我们通常采用的为第三种自定义的方式。
To implement custom authentication for HiveServer2, create a custom Authenticator class derived from the following interface:
从这段话看出来我们要实现一个接口:PasswdAuthenticationProvider (org.apache.hive.service.auth.PasswdAuthenticationProvider)我们来看看这个接口
public interface PasswdAuthenticationProvider { /** * The Authenticate method is called by the HiveServer2 authentication layer * to authenticate users for their requests. * If a user is to be granted, return nothing/throw nothing. * When a user is to be disallowed, throw an appropriate {@link AuthenticationException}. * * For an example implementation, see {@link LdapAuthenticationProviderImpl}. * * @param user - The username received over the connection request * @param password - The password received over the connection request * @throws AuthenticationException - When a user is found to be * invalid by the implementation */ void Authenticate(String user, String password) throws AuthenticationException; }
有一个方法要实现,实现了这个接口就可以自定义验证用户名密码了。代码不是太多
package org.apache.hadoop.hive.contrib.auth; import javax.security.sasl.AuthenticationException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.contrib.utils.MD5Util; import org.apache.hive.service.auth.PasswdAuthenticationProvider; public class XXXXPasswdAuthenticator implements PasswdAuthenticationProvider,Configurable { private static final Log LOG=LogFactory.getLog(XXXXPasswdAuthenticator.class); private Configuration conf=null; private static final String HIVE_JDBC_PASSWD_AUTH_PREFIX="hive.jdbc_passwd.auth.%s"; public XXXXPasswdAuthenticator() { init(); } /** * */ public void init(){ } @Override public void Authenticate(String userName, String passwd) throws AuthenticationException { LOG.info("user: "+userName+" try login."); String passwdMD5 = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName)); if(passwdMD5==null){ String message = "user's ACL configration is not found. user:"+userName; LOG.info(message); throw new AuthenticationException(message); } String md5 = MD5Util.md5Hex(passwd); if(!md5.equals(passwdMD5)){ String message = "user name and password is mismatch. user:"+userName; throw new AuthenticationException(message); } LOG.info("user "+userName+" login system successfully."); } @Override public Configuration getConf() { if(conf==null){ this.conf=new Configuration(); } return conf; } @Override public void setConf(Configuration arg0) { this.conf=arg0; } }
Add the following properties to the hive-site.xml file, then restart Hiveserver2:
开启自定义验证配置
<property> <name>hive.server2.authentication</name> <value>CUSTOM</value> </property> <property> <name>hive.server2.custom.authentication.class</name> <value>org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator</value> </property>
相信看懂代码的人应该明白怎么做了,我们要把用户名密码配置到hive-site.xml配置文件中。
<property> <name>hive.jdbc_passwd.auth.hive_r</name> <value>b531c271de4552ca2dec510d318c87f9</value> <description/> </property>
多个用户可以添加多个property,里面配置的即用户名密码了。
以上代码打包jar包,上传到hive/lib下即可实现HiveServer2的安全策略之自定义用户名密码验证了。
相关推荐
总结,设置 Hiveserver2 Beeline 连接的用户名和密码涉及到自定义认证类的编写、Hive 和 Hadoop 配置文件的修改以及服务的重启。通过这样的方式,你可以为你的大数据环境提供更安全的访问控制,确保只有经过验证的...
core-site.xml 的群集范围高级配置代码段(安全阀)添加 hadoop.proxyuser.hadoop.hosts * hadoop.proxyuser.hadoop.groups * 如图所示: 2)YARN (MR2 Included)修改core-site.xml配置 java.sql....
然而,手动启动和停止Hive的服务,如HiveServer2和Metastore,可能会变得繁琐和耗时。为了解决这个问题,我们可以创建自定义的Shell脚本以及使用systemd服务来实现一键启停Hive的相关服务。 首先,我们来看一下提供...
本文将详细介绍 HiveServer2 的安全机制,包括配置 Kerberos 认证、启用 Kerberos 认证、远程访问元数据的配置等。 在 CDH4 中,HiveServer2 的安全机制主要通过 Kerberos 认证来实现。Kerberos 是一种广泛使用的...
HiveServer2 账号密码鉴权类编译 Jar 包
Hiveserver2 Beeline连接设置用户名和密码,通用jar包。放到hive lib路径下即可。用户名密码在配置文件hive-site.xml中配置,具体的配置方式,请参考本站博文。 <name>hive.jdbc_passwd.auth.root</name><!--用户...
### CDH 6.3.2 升级 Hive 至 3.x 后登录 HiveServer2 连接失败问题分析及解决方法 #### 一、问题背景与现象 在将 Cloudera Data Hub (CDH) 6.3.2 版本中的 Hive 升级到 3.x 版本后,用户在尝试通过 JDBC 连接到 ...
HiveServer2 JDBC连接还支持配置参数,例如连接超时、重试次数等,可以通过URL中的分号(`;`)隔开的键值对进行设置。此外,对于安全性较高的环境,可能需要使用Kerberos认证,这时需要在URL中指定`principal`参数,并...
docker-hiveserver2
HiveServer2日志摘要器用法 #download latest scriptwget https://raw.githubusercontent.com/abajwa-hw/hiveServer2logparser/master/hiveServer2logparser.pl#run scriptperl hiveServer2logparser.pl <path>输出...
1. **执行Hive SQL语句**: 通过Hive的命令行界面或客户端工具(如Beeline)连接到HiveServer2,并执行一些基本的查询操作来验证安装与配置是否成功。 #### 八、注意事项 1. **遵循官方文档**: 在安装和配置过程中,...
php连接hive, 基于thrift2 & hiveserver2 Thrift/transport/TSaslClientTransport.php 这里的username password也得改.... 密码为空的话随便填一个 这个文件务必也要一起修改, 否则涉及mapreduce的计算都无法执行
6. **验证安装**:通过Hive CLI或者Beeline客户端连接HiveServer2,执行简单的SQL查询,检查Hive是否正常工作。 配置Hive的过程中,有几个关键点需要注意: 1. **元数据存储**:Hive的元数据包括表名、字段名、...
- 确保`hive-site.xml`等配置文件中的设置正确无误,特别是与HiveServer2相关的配置项,如`hive.metastore.uris`等。 4. **清理缓存信息**: - 如果之前的操作仍然没有解决问题,还可以考虑清理HiveServer2的相关...
在分布式环境中,可以将 Hive 配置为服务器模式,通过 HiveServer2 提供服务,允许客户端通过 JDBC 或 ODBC 连接进行远程查询。这需要配置 `hive.server2.enable.doAs` 为 true,以及相关安全认证设置。 **8. 性能...
【作品名称】:基于Django和Hadoop集群进行的大数据分析平台 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目...集群的hiveserver2服务要启动
hive自定义安全认证使用
3. 对集群 HiveServer2 进行第一次集群功能验证,然后执行节点故障模拟动作。 4. 对集群 HiveServer2 进行第二次集群功能验证,以确保系统的稳定运行。 三、系统架构 该系统架构如图所示: HiveServer2 集群 | |--...