前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >离线数仓之Kerberos基本使用及问题记录

离线数仓之Kerberos基本使用及问题记录

作者头像
WHYBIGDATA
发布2023-01-31 11:49:28
6590
发布2023-01-31 11:49:28
举报

离线数仓之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,并配置开机自启

代码语言:javascript
复制
[root@node01 ~]# systemctl start krb5kdc
[root@node01 ~]# systemctl enable krb5kdc

1. 安全模式下启动Hadoop集群

❝启动HDFS ❞

代码语言:javascript
复制
# 启动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 ❞

代码语言:javascript
复制
# 启动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 ❞

代码语言:javascript
复制
# 启动历史服务器
[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文件
代码语言:javascript
复制
[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
  • 火狐浏览器访问:
代码语言:javascript
复制
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. 配置连接

  • 基础配置
代码语言:javascript
复制
jdbc:hive2://node01:10000/;principal=hive/node01@EXAMPLE.COM
  • 高级配置
  • 配置参数:
代码语言:javascript
复制
-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认证授权服务)配置文件

代码语言:javascript
复制
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)执行以下命令

代码语言:javascript
复制
[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

❝顺利完成 ❞

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

本文分享自 WHYBIGDATA 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离线数仓之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. 测试连接失败
      相关产品与服务
      大数据
      全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档