Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >0468-如何使用DBeaver访问Kerberos环境下的Hive

0468-如何使用DBeaver访问Kerberos环境下的Hive

作者头像
Fayson
发布于 2018-12-24 08:54:29
发布于 2018-12-24 08:54:29
5.6K00
代码可运行
举报
文章被收录于专栏:Hadoop实操Hadoop实操
运行总次数:0
代码可运行

1

文章编写目的

在前面Fayson的文章《Hadoop SQL客户端工具之Dbeaver安装及使用》介绍了DBeaver的安装以及访问非Kerberos环境下的Hive。本篇文章Fayson主要介绍如何使用DBeaver访问Kerberos环境下的Hive。

  • 测试环境

1.RedHat7.2

2.CM和CDH版本为5.15.0

3.Window Server 2012R2

2

安装Kerberos客户端

1.在Kerberos官网下载,地址如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://web.mit.edu/kerberos/dist/index.html

安装过程这里就不在详细说明了。

2.将CDH集群的/etc/krb5.conf文件,在Window客户端如下目录创建krb5.ini文件,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\ProgramData\MIT\Kerberos5\krb5.ini”
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = true
default_realm = FAYSON.COM
#default_ccache_name = KEYRING:persistent:%{uid}

[realms]
FAYSON.COM = {
  kdc = adserver.fayson.com
  admin_server = adserver.fayson.com
}

[domain_realm]
.fayson.com = FAYSON.COM
fayson.com = FAYSON.COM

3.配置环境变量,krb5.ini文件以及Kerberos Credential Cache File的路径

变量名:KRB5_CONFIG,变量值:C:\ProgramData\MIT\Kerberos5\krb5.ini

变量名:KRB5CCNAME,变量值:C:\temp\krb5cache

注意:KRB5CCNAME的路径默认是不存在的,因此需要在C盘下创建temp文件夹,krb5cache文件则不需要创建。

配置完环境变量后,重启计算机使其生效。

4.完成以上配置后,在Window客户端测试是否能够正常kinit

Kinit成功后

3

修改DBeaver配置

因为DBeaver通过JDBC的方式访问Hive,底层也是基于Java环境,所以这里需要在DBeaver的配置中增加JVM的参数,主要添加关于Kerberos相关的配置。

1.进入DBeaver的安装目录,找到dbeaver.ini配置文件,在配置文件末尾增加如下配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-Djavax.security.auth.useSubjectCredsOnly=false
-Djava.security.krb5.conf="C:\ProgramData\MIT\Kerberos5\krb5.ini"
-Dsun.security.krb5.debug=true

2.重新启动DBeaver客户端

4

基于Hive原生驱动创建连接

Hive原生驱动的获取方式在《0459-如何使用SQuirreL通过JDBC连接CDH的Hive(方式一)》文章中有说明使用Maven的方式获取Hive JDBC驱动,这里就不过多的再说明了。

1.在DBeaver上创建 Apache Hive的JDBC连接

2.编辑驱动设置,由于是Kerberos方式访问,在URL模板中增加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/;principal=hive/{host}@FAYSON.COM

添加JDBC驱动及依赖包,使用“找到类”查找驱动包中JDBC驱动类

3.完成驱动编辑后,点击确定即可

4.点击“测试连接”进行JDBC连接测试

5.进行访问显示如下

5

基于Cloudera驱动创建连接

Cloudera官网提供的JDBC驱动包比较简单只有一个jar包,Hive JDBC驱动包及其依赖包均打包在里面,但在JDBC URL的访问方式上也做了一定的调整。可能是为了兼容访问Impala而做,具体访问方式如下:

1.进入驱动设置界面,在URL模板中增加如下参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
;AuthMech=1;KrbRealm=FAYSON.COM;KrbHostFQDN={host};KrbServiceName=hive;KrbAuthType=2

添加Cloudera提供的Hive JDBC驱动

2.点击“确定”完成驱动设置,填写主机地址

3.点击“测试连接”

4.完成连接创建后即可正常访问Kerberos环境下的Hive库

6

总结

1.使用Hive原生JDBC驱动时,需要增加Hadoop相关的依赖包,否则会报版本啊什么的异常。

2.注意在使用Cloudera提供的Hive驱动包访问Kerberos环境下的Hive时注意JDBC URL地址配置方式。

3.Cloudera提供的Hive JDBC驱动与Hive原生的驱动类有些区别,驱动类需要指定为“com.cloudera.hive.jdbc41.HS2Driver”。使用Cloudera提供的驱动包不需要考虑驱动包依赖的问题,默认的将Hive驱动所依赖的包都打包在里面。

4.特别强调在Window机器上配置Kerberos客户端时,需要配置KRB5_CONF和KRB5CCNAME两个环境变量,否则在使用访问时会报“Unable to obtain Principal Name for authentication”

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python制作Windows系统服务Python制作Windows系统服务
Python制作Windows系统服务 最近有个Python程序需要安装并作为Windows系统服务来运行,过程中碰到一些坑,整理了一下。 Python服务类 首先Python程序需要调用一些Windows系统API才能作为系统服务,具体内容如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import time import win32api import win32event import win32service import
kongxx
2018/05/14
4.6K2
python 写window服务
import win32serviceutil import win32service import win32event import os import logging import inspect import servicemanager import sys
用户5760343
2019/08/06
1.3K1
使用Python写Windows Service服务程序
如果你想用Python开发Windows程序,并让其开机启动等,就必须写成windows的服务程序Windows Service,用Python来做这个事情必须要借助第三方模块pywin32,自己去下载然后安装。
用户8949263
2022/11/07
4.6K1
使用Python写Windows Service服务程序
python 写window服务(必须写在服务类里)
import win32serviceutil import win32service import win32event import os import logging import inspect import servicemanager import sys
用户5760343
2019/08/06
6790
使用Python写Windows Ser
如果你想用Python开发Windows程序,并让其开机启动等,就必须写成windows的服务程序Windows Service,用Python来做这个事情必须要借助第三方模块pywin32,自己去下载然后安装(注意下载符合自己OS的版本)
py3study
2020/01/10
1.4K0
使用Python写Windows Ser
python 编写服务
import win32timezone from logging.handlers import TimedRotatingFileHandler import win32serviceutil import win32service import win32event import os import logging import inspect import time import shutil
用户5760343
2019/07/08
1.1K0
Simple Windows Service in C++
本文是来自CodeProject中的一篇名为Simple Windows Service in C++的译文,原文地址为:https://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplus,作者为:Mohit Arora。
ccf19881030
2020/03/13
8480
深入浅出理解WaitForSingleObject:Windows同步编程核心函数详解
在多线程编程中,线程间的协调与同步是保证程序正确性的关键。Windows系统提供了丰富的内核对象和同步函数,其中WaitForSingleObject作为最基础也最常用的同步函数,承担着"线程等待"的核心职责。无论是等待线程结束、事件触发,还是资源释放,都离不开这个函数的支持。本文将从函数定义、工作原理到高级应用,全面解析WaitForSingleObject的使用方法与注意事项,帮助开发者掌握Windows同步编程的精髓。
码事漫谈
2025/08/01
1630
深入浅出理解WaitForSingleObject:Windows同步编程核心函数详解
黑客常用WinAPI函数整理
黑客常用WinAPI函数整理 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底层API编程。为了使读者对黑客常用的Windows API有个更全面的了解以及方便日后使用API方法的查询,特将这些常用的API按照7大分类进行整理如下,希望对大家的学习有所帮助。 一、进程 创建进程: CreateProcess("C:\\windows\\notepad.exe",0,0,0,0,0,0,0,&si,&pi); WinExec("notepad",SW_SHOW); S
Florian
2018/02/05
1.1K0
windows 多线程_关于多线程的技术分享
本文内容较为详细,关于更简短的一篇介绍,请看这里: https://blog.csdn.net/weixin_45525272/article/details/105057120
全栈程序员站长
2022/09/23
7870
如何利用Python杀进程并保持驻留后台检测
如何利用Python杀进程并保持后台检测驻留? 因为有一些软件一直驻留,想删的话之后又重新出现了,所以想到利用Python来进行杀进程。
繁华是客
2023/03/03
4770
Python 代码后台运行,不止 nohup,还有 Supervisor!
Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。
AirPython
2024/05/17
6390
Python 代码后台运行,不止 nohup,还有 Supervisor!
Windows平台使用Python切换用户运行程序
在Windows平台,如果需要以某个指定用户来运行程序,此时可以通过使用 Windows CreateProcessAsUser API来实现。但是要实现这个功能首先需要有要切换用户的用户名和密码。 import psutil import win32process import win32security import win32con import win32api import win32service import win32file import win32profile import pywin
kongxx
2018/05/14
2K0
Python黑科技 | Python中四种运行其他程序的方式
在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用win32process模块中的函数,如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. 【方式一】使用os.system()函数运行其他程序 os模块中的system()函数可以方便地运行其他程序或者脚本,模式如下: os.system(command) command: 要执行
小小科
2018/05/03
1.6K0
Python黑科技 | Python中四种运行其他程序的方式
Python wmi 模块的学习
# -*- coding:utf-8 -*- import datetime import os import wmi import time import _winreg import pythoncom import threading import win32api import win32con import Queue c = wmi.WMI() # 如果要连接远程机器,只需要在WMI构造器中指定远程机器名即可 # c = wmi.WMI("some_other_machine") # Li
py3study
2020/01/08
2.9K0
【python】云打印实现
记录一下这一篇,python云打印实现-朝花夕拾,代码通过监听文件夹有无产生新文件来判断是否执行,我尝试运行了下没问题,于是打算转载一下
德宏大魔王
2023/08/08
6800
【python】云打印实现
QT pyside2 线程嵌套子线程 实现开始运行和停止运行
QT是一种流行的跨平台应用程序开发框架,而PySide2是QT的一个Python绑定库。在QT和PySide2中使用多线程的主要原因是为了提高应用程序的性能和响应能力。
EXI-小洲
2023/10/16
1.1K0
QT pyside2 线程嵌套子线程 实现开始运行和停止运行
python–threading多线程总结[通俗易懂]
threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组,线程也不能被停止、暂停、恢复、中断。
全栈程序员站长
2022/09/06
8920
python win32api messagebox_如何在Python中使用Win32 API?
PyWin32是必经之路-但是如何使用它呢?一种方法是从遇到的具体问题开始并尝试解决它。PyWin32提供了许多Win32 API函数的绑定,您确实必须首先选择一个特定的目标。
全栈程序员站长
2022/09/27
1.2K0
绕过ppl保护关闭Windows Defender
可以关闭Windows Defender服务并通过提升权限删除ppl保护,然后删除Windows Defender中的DLL和其他文件,使Windows Defender服务无法运行,从而导致Windows Defender拒绝服务。
黑白天安全
2021/12/13
2.8K0
绕过ppl保护关闭Windows Defender
相关推荐
Python制作Windows系统服务Python制作Windows系统服务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验