离线数仓之Kerberos基本使用及问题记录
2023-02-26 09:48:06 时间
离线数仓之Kerberos基本使用及问题记录
- 0. 写在前面
- 1. Kerberos基本使用
- 0. 启动Kerberos相关服务
- 1. 安全模式下启动Hadoop集群
- 2. 安装Kerberos客户端访问HDFS页面
- 0. Windows下安装MIT Kerberos Ticket Manager
- 1. 使用「MIT Kerberos Ticket Manager」
- 2. 配置火狐浏览器
- 3. 认证
- 3. Web端依旧没有权限访问文件及报错解决
- 4. Hive Kerberos认证使用之DataGrip客户端
- 0. 前置芝士
- 1. 新建driver
- 2. 配置Driver
- 3. 新建连接
- 4. 配置连接
- 5. 编写JAAS(Java认证授权服务)配置文件
- 6. 为用户生成keytab文件,在krb5kdc所在节点(node01)执行以下命令
- 7. 传输atguigu.keytab文件
- 8. 测试连接失败
0. 写在前面
- Kerberos环境:已搭建好Kerberos并配置完成
- 执行用户:root
- Linux:CentOS7.5
- Hadoop:Hadoop3.1.3
- Hive:Hive3.1.2
- Krberos:Kerberos5
❝集群规划: ❞
- node01:NN、DN、historyserver、Hive、Kerberos服务端、Kerberos客户端
- node02:NM、RM、Kerberos客户端
- node03:DN、2NN、Kerberos客户端
1. Kerberos基本使用
0. 启动Kerberos相关服务
在主节点(node01)启动KDC,并配置开机自启
[root@node01 ~]# systemctl start krb5kdc
[root@node01 ~]# systemctl enable krb5kdc
1. 安全模式下启动Hadoop集群
❝启动HDFS ❞
# 启动NameNode
[root@root ~]# sudo -i -u hdfs hdfs --daemon start namenode
# 启动DataNode
[root@node01 ~]# sudo -i -u hdfs hdfs --daemon start datanode
[root@node01 ~]# sudo -i -u hdfs hdfs --daemon start datanode
[root@node01 ~]# sudo -i -u hdfs hdfs --daemon start datanode
# 启动SecondaryNameNode
[root@node01 ~]# sudo -i -u hdfs hdfs --daemon start secondarynamenode
❝启动Yarn ❞
# 启动ResourceManager
[root@node02 ~]# sudo -i -u yarn yarn --daemon start resourcemanager
# 启动NodeManager
[root@node01 ~]# sudo -i -u yarn yarn --daemon start nodemanager
[root@node02 ~]# sudo -i -u yarn yarn --daemon start nodemanager
[root@node03 ~]# sudo -i -u yarn yarn --daemon start nodemanager
❝启动HistoryServer ❞
# 启动历史服务器
[root@node01 ~]# sudo -i -u mapred mapred --daemon start historyserver
2. 安装Kerberos客户端访问HDFS页面
0. Windows下安装MIT Kerberos Ticket Manager
一路next即可,安装后会提醒是否立即重启电脑
❝有遇到过没有提醒直接重启电脑的,为了保险起见,建议安装之前先将集群的各个服务停止,关闭虚拟机 ❞
1. 使用「MIT Kerberos Ticket Manager」
- 编辑C:\ProgramData\MIT\Kerberos5\krb5.ini文件
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
forwardable = true
rdns = false
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = node01
admin_server = node01
}
[domain_realm]
2. 配置火狐浏览器
- 在地址栏输入“about:config”,直接Enter,选择
接受风险并继续
- 直接搜索“network.negotiate-auth.trusted-uris”,修改值为要访问的主机名(node01)
- 搜索“network.auth.use-sspi”,双击将值变为false
- 重启火狐浏览器
3. 认证
- 启动Kerberos客户端,点击
Get Ticket
,输入主体名Principal以及密码Password - 火狐浏览器访问:
https://node01:9871/
- 选择
browse the file system
,输入主体名Principal以及密码Password,即可访问文件
3. Web端依旧没有权限访问文件及报错解决
火狐浏览器输入主体名及密码,出现以下错误:
❝Ticket initialization failed. Kerberos 5: client not found in Kerberos database(error:1765328378) ❞
我查找了很久,还是没有找到这个错误的解决方法。因为我的配置是没有问题的,所以猜想会不会是浏览器的问题,没想到,重启火狐浏览器,再次访问HDFS
真的就可以有权限访问文件了
❝
重启
万岁 ❞
4. Hive Kerberos认证使之DataGrip客户端
0. 前置芝士
❝因为Apache Hive使用的驱动是原生自带的Hive驱动,但是这个自带的Hive驱动不支持Kerberos认证。所以连接不上之前数仓分层时在DataGrip创建的Hive数据源。 ❞
1. 新建driver
2. 配置Driver
3. 新建连接
4. 配置连接
- 基础配置
jdbc:hive2://node01:10000/;principal=hive/node01@EXAMPLE.COM
- 高级配置
- 配置参数:
-Djava.security.krb5.conf="C:\\ProgramData\\MIT\\Kerberos5\\krb5.ini"
-Djava.security.auth.login.config="C:\\ProgramData\\MIT\\Kerberos5\\atguigu.conf"
-Djavax.security.auth.useSubjectCredsOnly=false
5. 编写JAAS(Java认证授权服务)配置文件
com.sun.security.jgss.initiate{
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
useTicketCache=false
keyTab="C:\\ProgramData\\MIT\\Kerberos5\\atguigu.keytab"
principal="atguigu@EXAMPLE.COM";
};
6. 为用户生成keytab文件,在krb5kdc所在节点(node01)执行以下命令
[root@hadooop102]# kadmin.local -q"xst -norandkey -k /home/atguigu/atguigu.keytab atguigu"
7. 传输atguigu.keytab文件
将上一步生成的atguigu.keytab
文件,置于Windows中的特定路径,该路径须与5中的keyTab属性的值保持一致
。
❝XFTP传输atguigu.keytab若不成功,将其
chmod 777
❞
8. 测试连接失败
- 报错信息
- 原因分析
jdbc:hive2://node01:10000/;principal=hive/node01@EXAMPLE.COM
最后多了一个空格或者直接删掉DataGrip中的url,重新复制上文中的「4. 配置连接」的url
❝顺利完成 ❞
相关文章
- 在 Linux 命令行中格式化输出 json
- 无栈协程:用户态的Linux进程调度
- openEuler委员会主席江大勇:跨越生态拐点 欧拉逐梦新征程
- 试试这个 Linux 网络浏览器作为你的文件管理器
- Manjaro Linux 22.0 发布
- openEuler项目群成立,欧拉进入开源治理新阶段
- GitHub 上 yyds 的前端 UI 框架!
- Google终于开始革C++的命了!
- 谷歌 Chrome 浏览器将推新安全选项:阻止用户通过不安全的 HTTP 链接下载文件
- Go 程序太大了,能要个延迟初始化不?
- 操作系统产业峰会2022召开 openEuler(欧拉)成为数字基础设施坚实底座
- 在 Linux 上微调 Nginx 获得优秀性能的八种方法
- Cloudera推出首款一体化数据湖仓云服务
- 分享一个小工具:duf 命令
- Linux 6.3 将进一步改进可重启序列(RSEQ),以提升运算性能
- 关联数据赋能智能化业务
- 解锁暗数据潜在业务价值的关键方法
- 基于OpenHarmony的智联北斗海防系统
- Zadig 面向开发者的自测联调子环境技术方案详解
- 深入理解 Linux 物理内存分配全链路实现