hive2 自定义验证登录

hive自定义安全认证登录 1、自定义认证需新添加一个jar #jar包我已经上传到我的资源里面了,有需要可以有偿下载 cp hive-server2.jar /data/apache-hive-1.2.1-bin/lib 2、修改hive-site.xml <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property& 阅读详情

本人也是刚学习hadoop/hive, 很多问题在探索中, 目前就遇到了一个测试hive自定义登录验证的问题.

先说下场景, hadoop2.7.0 已部署好, 写的程序也能运算出正确的结果, 现在就差把数据向外展示, 装上了hive2, 通过jdbc方式把数据拿出去

现在就遇到了验证的问题, 使用beeline测试了下, 报下面的错误:

beeline> !connect jdbc:hive2://localhost:10000 xiaokang kangyun9413
Connecting to jdbc:hive2://localhost:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hive/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.0/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate xiaokang (state=,code=0)


经过网上搜索了一番, 说要在hadoop 的core-site.xml 配置中增加如下配置

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

加上之后果然好了!


重要的自定义验证还没有说

HiveServer2支持多种用户安全认证方式:NONE,NOSASL, KERBEROS, LDAP, PAM ,CUSTOM等, 符合自身的仅研究了CUSTOM

自定义有两块东西要做, 1 是写一个验证类, 2是增加两处配置

验证类:

package hive.server2.auth;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import javax.security.sasl.AuthenticationException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hive.service.auth.PasswdAuthenticationProvider;

public class CustomHiveServer2Auth implements PasswdAuthenticationProvider {
	@Override
	public void Authenticate(String username, String password) throws AuthenticationException {

		boolean ok = false;
		String passMd5 = new MD5().md5(password);
		HiveConf hiveConf = new HiveConf();
		Configuration conf = new Configuration(hiveConf);
		String filePath = conf.get("hive.server2.custom.authentication.file");
		System.out.println("hive.server2.custom.authentication.file [" + filePath + "] ..");
		File file = new File(filePath);
		BufferedReader reader = null;
		try {
			reader = new BufferedReader(new FileReader(file));
			String tempString = null;
			while ((tempString = reader.readLine()) != null) {
				String[] datas = tempString.split(",", -1);
				if (datas.length != 2) {
					continue;
				}
				// ok
				if (datas[0].equals(username) && datas[1].equals(passMd5)) {
					ok = true;
					break;
				}
			}
			reader.close();
		} catch (Exception e) {
			e.printStackTrace();
			throw new AuthenticationException("read auth config file error, [" + filePath + "] ..", e);
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e1) {
				}
			}
		}
		if (ok) {
			System.out.println("user [" + username + "] auth check ok .. ");
		} else {
			System.out.println("user [" + username + "] auth check fail .. ");
			throw new AuthenticationException("user [" + username + "] auth check fail .. ");
		}
	}

	// MD5加密
	class MD5 {
		private MessageDigest digest;
		private char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

		public MD5() {
			try {
				digest = MessageDigest.getInstance("MD5");
			} catch (NoSuchAlgorithmException e) {
				throw new RuntimeException(e);
			}
		}

		public String md5(String str) {
			byte[] btInput = str.getBytes();
			digest.reset();
			digest.update(btInput);
			byte[] md = digest.digest();
			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			char strChar[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				strChar[k++] = hexDigits[byte0 >>> 4 & 0xf];
				strChar[k++] = hexDigits[byte0 & 0xf];
			}
			return new String(strChar);
		}
	}

}

需要引用的: hadoop-common-2.7.0.jar/hive-common-2.1.0.jar/hive-service-2.1.0.jar

然后打包成 HiveServer2Auth.jar, 上传到 $HIVE_HOME/lib下


2 增加配置

   1 在hive 的conf/hive-site.xml 中增加:

        <property>
                <name>hive.server2.authentication</name>
                <value>CUSTOM</value>
        </property>
        <property>
                <name>hive.server2.custom.authentication.class</name>
                <value>hive.server2.auth.CustomHiveServer2Auth</value>
        </property>
        <property>
                <name>hive.server2.custom.authentication.file</name>
                <value>/home/hive/apache-hive-2.1.0-bin/conf/user.password.conf</value>
        </property>

   2 创建 /home/hive/apache-hive-2.1.0-bin/conf/user.password.conf 文件

格式: root,cd4d65c296a84cb09e928cf9dba6f751

root是用户名, 后面是md5后的密码

在beeline 登录时, 输入的是明文密码!


接下来就要用jdbc测试下查询数据了 :)





hive配置用户密码Custom类型验证失败 今天跟着网络教程走,想要配置一下hive的用户、密码。(当知道了url就可以调取hive中的所有数据,不需要任何的用户、密码,这是非常不安全的) 网络教程就这两篇: https://blog.csdn.net/lr131425/article/details/72628001 https://blog.csdn.net/volitationlong/article/details/78354... 阅读详情

相关推荐

Hive 使用 Beeline 连接配置

Hive 使用 Beeline 连接配置 及连接可视化工具

weixin_67816885的博客 5846

Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.ap

这是hive想使用hiveserver2的服务时报错信息(首先要开启元数据服务,再开启hiveserver2服务,然后bin/beeline -u jdbc:hive2://hadoop102:10000 -n ding报错信息如下) Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop102:10000: Failed to open new session: java.lang.RuntimeException

csding11的博客 2263

hive 配置和java链接hive常见的一些问题

1 如何配置hive 使用which hive查找到hive安装路径,hive/conf/路径下的hive-site.xml文件。 以下4项分别配置使用jdbc链接hive底层元数据库的链接字符串、驱动类名、登录元数据库的用户名、登录元数据库的密码 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;javax.jdo.option.Conn...

wstcilct的专栏 1253

【Hive问题】Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteExceptio

Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User:xiaosiis not allowed to impersonate anonymous

小廖的博客 2696

Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1)

Hive 3.1.2安装(基于Centos7.x和Hadoop3.2.1) 背景 Hadoop大数据套件被应用后,进行数据处理就必须编写mapreduce代码。而相当一部分大数据处理需求都是进行数据的查询操作(实际数据库的操作中,读写操作比例也有80%:20%的说法) Facebook的工程师也遇到这个问题。编写mapreduce对于程序员还是有一定门槛,但是会使用sql的人群更庞大。所以Facebook就发明了Hive,一个把sql语句转换为mapreduce代码的转换器。 不过Hive的使用场景,还是

xiaohu21的博客 3122

基于centos7安装hive,hadoop版本2.7,hive-2.3.4

安装mysql 1、yum仓库下载MySQL:sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 2、yum安装MySQL:sudo yum install mysql-community-server 3、启动MySQL服务:sudo service mysqld sta...

onlylove777的博客 2095

HiveServer2的简单用户/密码身份验证(不使用Kerberos/LDAP)

从本质上讲,您必须提供一个可执行身份验证的Java应用程序.也许您正在向mysql或postgres数据库或平面文件等进行身份验证.您需要提供一个可以实现org.apache.hive.service.auth.PasswdAuthenticationProvider接口的jar.然后在hive-site.xml中,使用新创建的自定义身份验证jar。...

延宝小白马的博客 727

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

HiveServer2 简单用户/密码身份验证

HiveServer2 简单用户/密码身份验证

weixin_38751513的博客 2961

浅谈声发射振动复合传感器

浅谈声发射振动复合传感器 随着全球经济和自动化工业的迅速发展,人们对设备故障特别是轴承类的故障诊断也日益重视起来了。 为满足客户对旋转仪器轴承异常的精准诊断,单一的依靠振动信号或声信号分析,是很难兼顾轴承的多种异常情况的。 为此,市面上开始着手研发出了可同时分析机械设备的振动信号和声信号的复合型传感器。 初期的复合型传感器主要有 2 种类型,下面以 A、B 来举例说明。 A 型是在被测物表面不同的 2 个位置分别放置声发射(AE)传感器和加速度(ACC)传感器,它虽能一定程度...

pxtech的博客 1152

设计智能化的企业并购目标筛选多维度评估模型

企业并购是企业扩张和战略调整的重要手段,其目的在于实现资源的整合、优势互补和效率提升。评估指标单一:传统评估方法主要依赖财务指标,如净利润、市场份额等,忽视了企业其他重要的非财务指标,如品牌价值、客户满意度等。主观性较强:评估过程中,往往依赖于评估人员的经验和直觉,缺乏客观性,导致评估结果可能存在偏差。评估效率低:传统的评估方法通常需要大量的人力和时间,效率较低,难以应对大规模并购项目的需求。因此,设计一种智能化的企业并购目标筛选多维度评估模型,显得尤为必要。

SuperAGI2025 1034

Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException

User root is not allowed to impersonate anonymous 使用HiveServer2 and Beeline模式运行时,启动好HiveServer后运行 beeline -u jdbc:hive2://localhost:10000 -n root 连接server时 出现 java.lang.RuntimeException: o

swing2008的专栏 1万+

Himall商城ExpressDaDaHelper 取消订单(线上环境)

Himall商城ExpressDaDaHelper 取消订单(线上环境)

GZM888888的博客 399

探索Hive用户权限(二):HiveServer2安全访问Hive

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分

changlina_1989的博客 4829

【项目实战】TARA威胁分析和风险评估

TARA是信息安全领域中的一种风险评估方法,在汽车信息安全的上下文中,TARA分析特别重要,因为它可以帮助识别和管理与智能网联车辆相关的各种威胁,包括数据泄露、未经授权的访问、远程操控等。通过TARA分析,企业可以制定出针对性的安全目标、产品要求和产品安全声明,以确保汽车及其零部件符合相关的信息安全标准和法规。此外,TARA分析还可以与数字化建模系统结合,以更系统化和高效的方式进行风险评估和管理。

奶爸的编程之路,也就一周冷个三天 2712

【CUDA Runtime】第一个“Hello World“程序

CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的一个并行计算平台和编程模型,旨在通过利用 GPU 的强大计算能力来加速计算密集型应用。对于许多开发者而言,开始学习 CUDA 编程的第一步通常是编写一个简单的“Hello World”程序。尽管 CUDA 的实际应用远远超出一个简单的例子,但这个初步的示例能帮助开发者快速入门,理解基本的 CUDA 编程流程。

m0_62599305的博客 1507

hive开放平台设计--使用CUSTOM方式实现hiveserver2的登录管理

HiverServer2支持远程多客户端的并发和认证,支持通过JDBC、Beeline等连接操作,是一个比较方便并且安全的方式。 但是自己的开发集群上面为了方便开发都是做了不做权限监控的设定,即设定 <property> <name>hive.security.authorization.enabled</name> <value>f...

weixin_41008393的博客 1243

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 413

HIve安装配置(超详细)

文章目录Hive安装配置一、Hive安装地址二、Hive安装部署1. 把 `apache-hive-3.1.2-bin.tar.gz`上传到Linux的/export/software目录下2. 解压`apache-hive-3.1.2-bin.tar.gz`到/export/servers/目录下面3. 修改`apache-hive-3.1.2-bin.tar.gz`的名称为hive4. 修改/etc/profile,添加环境变量5. 初始化元数据库(默认是derby数据库)三、MySQL安装1. 安装M

W_chuanqi的博客 12万+

马达种类全解析:VCM、Stepper、Piezo 在手机相机中的驱动原理与工程差异

在现代手机影像系统中,马达承担着核心成像组件的动态调节任务,如自动对焦(AF)、光学防抖(OIS)以及变焦调节。目前主流采用三类驱动器件:VCM(Voice Coil Motor)、Stepper(步进马达)、Piezo(压电马达)。不同马达方案在结构复杂度、响应速度、功耗、驱动方式与模组厚度适配等方面差异显著,对成像系统的性能表现有直接影响。本文将结合最新旗舰设备的应用现状,系统剖析这三类驱动马达的工作原理、架构特点与工程应用经验,为工程实践中选型与调试提供参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3784

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

hiverserver2 用户登录验证: openldap

1,安装配置openldap yum install openldap-servers openldap-clients -y yum install migrationtools -y cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf sed -i '122irootpw 123456' /etc/openldap/slapd.conf sed -i 's@my-domain@cdh@g'

eyeofeagle的博客 1075

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HIVE 身份验证

简介 hive 默认情况下访问hiveserver2 是不需要身份验证的。 hive用户登录身份验证方式 默认是NONE 具有 KERBEROS LDAP PAM NOSASL CUSTOM 五中验证 hive-0.14 对应代码处: org.apache.hive.service.auth.HiveAuthFactory 本文主要针对CUSTOM 方式(方

wangwenting2016的博客 3938

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

hive 重启 hiveserver2

给大家整理了一些有关【Hive】的项目学习资料(附讲解~~):https://edu.51cto.com/course/31545.html如何重启 HiveServer2:新手指南 HiveServer2 是 Apache Hive 中用来接收客户端请求并协助进行 SQL 查询的服务。在开发或者维护过程中,重启 Hiv...

weixin_36059241的博客 1028

【赫兹威客】伪分布式Hive测试教程

本文档为伪分布式大数据环境(1台虚拟机:hadoop)中Hive组件的功能测试教程,涵盖Hive依赖服务启停、服务状态验证、Hive CLI及Beeline连接测试、核心SQL功能验证等核心场景。操作说明:在登录成功的Mobaxterm终端中,按依赖顺序启动相关服务(先启动基础依赖服务,再启动Hive服务)。操作说明:在终端中执行Hive服务状态查询命令,观察服务启动后的状态变化(首次查询可能异常,等待片刻后再次查询)。操作说明:在Beeline连接成功后,执行SQL命令,验证Hive的核心数据操作功能。

ykhZuojava的博客 1522

2.2 Hive 本地模式安装

任务目的 掌握使用 RPM 离线安装 MySQL 组件的方法 掌握初始化和登录 MySQL 的命令 掌握 Hive 的安装部署 掌握 Hive 元数据配置到 MySQL 的步骤 任务清单 任务1:安装 MySQL 任务2:Hive 安装部署 任务3:Hive 元数据配置到 MySQL 任务步骤 任务1:安装 MySQL 1.1 解压安装包   现在已经为大家下载好了 MySQL 5.7.25 的安装包,存放在/root/software目录下,首先进入此目录下,使用如下命令进行解压即..

c_lanxiaofang的博客 4175

Hive(九) Hive 权限

Hive 权限 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization Introduction Note that this documentation is referring to Authorization which is verifying if a user has permission to perform a certain action, and not about Authenti

奥迪的博客 1452
上一篇: svn post-commit hook faild(exit code 1) with output /Username not found 错误
下一篇: JDBC 连接 hive2 遇到的java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver
system1024
博客等级 码龄16年 11粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值