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

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

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



d93b307106c147e29b4eb4e0f8eae2a0.jpeg



0. 写在前面

  • Kerberos环境:已搭建好Kerberos并配置完成
  • 执行用户:root
  • Linux:CentOS7.5
  • Hadoop:Hadoop3.1.3
  • Hive:Hive3.1.2
  • Kerberos: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,选择 接受风险并继续 

1.jpeg


  • 直接搜索 network.negotiate-auth.trusted-uris ,修改值为要访问的主机名(node01)

2.jpeg


  • 搜索 network.auth.use-sspi ,双击将值变为false


3.jpeg


  • 重启火狐浏览器



3. 认证

  • 启动Kerberos客户端,点击 Get Ticket ,输入主体名Principal以及密码Password


  • 火狐浏览器访问:
https://node01:9871/
  • 选择 browse the file system ,输入主体名Principal以及密码Password,即可访问文件

4.jpeg


3. Web端依旧没有权限访问文件及报错解决


火狐浏览器输入主体名及密码,出现以下错误:

Ticket initialization failed. Kerberos 5: client not found in Kerberos database(error:1765328378)


5.png


我查找了很久,还是没有找到这个错误的解决方法。因为我的配置是没有问题的,所以猜想会不会是浏览器的问题,没想到, 重启火狐浏览器,再次访问HDFS 真的就可以有权限访问文件了


重启 万岁!!!


6.png


4. Hive Kerberos认证使用之DataGrip客户端


0. 前置芝士


因为Apache Hive使用的驱动是原生自带的Hive驱动,但是这个自带的Hive驱动不支持Kerberos认证。所以连接不上之前数仓分层时在DataGrip创建的Hive数据源。


7.png


8.png


1. 新建driver

9.png


2. 配置Driver


10.png


3. 新建连接


11.png

4. 配置连接


  • 基础配置


12.png

jdbc:hive2://node01:10000/;principal=hive/node01@EXAMPLE.COM


  • 高级配置


13.png


  • 配置参数:
-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=falsev

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. 测试连接失败

  • 报错信息

14.png


  • 原因分析


jdbc:hive2://node01:10000/;principal=hive/node01@EXAMPLE.COM 最后多了一个空格或者直接删掉DataGrip中的url,重新复制上文中的「4. 配置连接」的url


145png.png


顺利完成




相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
2月前
|
存储 JSON 大数据
大数据离线数仓---金融审批数仓
大数据离线数仓---金融审批数仓
161 1
|
2月前
|
存储 SQL HIVE
金融审批数仓(离线)--DWD层、ADS层
金融审批数仓(离线)--DWD层、ADS层
|
3月前
|
SQL 分布式计算 数据库
离线数仓--大数据技术之DolphinScheduler
离线数仓--大数据技术之DolphinScheduler
167 2
|
4月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
135 0
|
4月前
|
存储 分布式计算 关系型数据库
|
7月前
|
SQL 运维 数据挖掘
重构实时离线一体化数仓,Apache Doris 在思必驰的应用实践
作者:赵伟,思必驰大数据高级研发,10年大数据开发和设计经验,负责大数据平台基础技术和OLAP分析技术开发。社区贡献:Doris-spark-connector 的实时读写和优化。
146 0
|
9月前
|
SQL 消息中间件 JSON
4、离线数仓数据同步策略(全量表数据同步、增量表数据同步、首日同步、采集通道脚本)(二)
4、离线数仓数据同步策略(全量表数据同步、增量表数据同步、首日同步、采集通道脚本)(二)
|
9月前
|
消息中间件 canal SQL
4、离线数仓数据同步策略(全量表数据同步、增量表数据同步、首日同步、采集通道脚本)(一)
4、离线数仓数据同步策略(全量表数据同步、增量表数据同步、首日同步、采集通道脚本)(一)
|
10月前
|
存储 JSON 数据处理
零售行业消费者域离线数仓构建思考
该文章所有的思考都是个人理解,不一定准确,也不一定适合所有的零售行业,主要以“业务”,“建模”和“调优”三个大方向来讲述。
119 0
|
3月前
|
SQL 存储 数据管理
阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
【2月更文挑战第9天】阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
56 2