4. 如何为Hive配置OpenLDAP认证
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面的文章Fayson讲了《1.如何在CentOS6.5安装OpenLDAP并配置客户端》、《2.OpenLDAP集成SSH登录并使用SSSD同步用户》以及《3.如何实现OpenLDAP的主主同步》,在CDH中各个组件如何集成?本篇文章主要介绍如何为Hive配置OpenLDAP认证。
- 内容概述
1.测试环境描述
2.Hive集成OpenLDAP
3.Hive集成验证
- 测试环境
1.CentOS6.5
2.OpenLDAP版本2.4.40
3.CM和CDH版本为5.13.1
- 前置条件
1.OpenLDAP已安装且正常使用
2.集群未启用Kerberos
3.集群所有节点SSSD服务运行正常
2.测试环境描述
- OpenLDAP服务信息
IP地址 |
HOSTNAME |
描述 |
---|---|---|
172.31.7.172 |
ip-172-31-7-172.fayson.com |
OpenLDAP已安装 |
172.31.9.33 |
cdh04.fayson.com |
OpenLDAP已安装 |
这里我们将172.31.7.172做为OpenLDAP的主节点,172.31.9.33做为OpenLDAP的备节点。
- Hive服务信息
IP地址 |
HOSTNAME |
描述 |
---|---|---|
172.31.5.190 |
ip-172-31-5-190.fayson.com |
HiveServer2 |
172.31.6.148 |
ip-172-31-6-148.fayson.com |
HiveServer2 |
我们的测试集群安装了两个HiveServer2服务
3.Hive全局配置OpenLDAP
1.登录CM的Web控制台,进入Hive服务,关闭Hive的模拟功能
2.修改LDAP相关配置,通过这里可以进行全局配置,配置后所有的HiveServer2服务均使用该配置
保存配置,回到CM主页根据提示重启相应服务即可。
4.Hive集成OpenLDAP验证
1.faysontest用户不存在与操作系统,却存在于OpoenLDAP,可以使用id查看到该用户
操作系统/etc/passwd文件不存在faysontest用户
OpenLDAP存在该用户,提示:代码块部分可以左右滑动查看噢
[root@ip-172-31-6-148 ~]# ldapsearch -D "cn=Manager,dc=fayson,dc=com" -W |grep faysontest
在OS上使用id faysontest是可以看到该用户
注意:由于配置SSSD服务,在OS上可以查看到该用户并能使用SSH登录但该用户不存在本地OS的passwd文件中。一旦在OpenLDAP中新建用户,需要保证集群的所有节点上都有这个用户,如果你没启用SSSD,则需要手动在所有节点的OS中创建该用户,否则无法执行Hadoop的MapReduce/Spark/Impala等作业,因为Fayson的环境已经启用了SSSD,可以自动同步用户,所以可以省略该步骤。节点同步LDAP中的用户也可以使用其他商业或者开源工具。
2.通过beeline使用faysontest用户分别登录两个HiveServer2服务
都输入错误的用户的密码登录HiveServer2
可以看到用错误的密码登录两个HiveServer2服务均提示“Error validating the login”
3.使用正确密码登录两个HiveServer2服务,提示:代码块部分可以左右滑动查看噢
[root@ip-172-31-6-148 ~]# beeline
beeline> !connect jdbc:hive2://ip-172-31-6-148.fayson.com:10000
Enter username for jdbc:hive2://ip-172-31-6-148.fayson.com:10000: faysontest
Enter password for jdbc:hive2://ip-172-31-6-148.fayson.com:10000: ******
0: jdbc:hive2://ip-172-31-6-148.fayson.com:10> show databases;
提示:代码块部分可以左右滑动查看噢
[root@ip-172-31-6-148 ~]# beeline
beeline> !connect jdbc:hive2://ip-172-31-5-190.fayson.com:10000
Enter username for jdbc:hive2://ip-172-31-5-190.fayson.com:10000: faysontest
Enter password for jdbc:hive2://ip-172-31-5-190.fayson.com:10000: ******
0: jdbc:hive2://ip-172-31-5-190.fayson.com:10> show databases;
通过如上截图,我们可以看到使用正确的密码登录两个HiveServer2服务均能成功。
5.单个HiveServer2集成OpenLDAP
前面的配置可以对所有的HiveServer2服务生效,那么也可以针对单个HiveServer2服务进行配置,操作如下:
1.首先将集群OpenLDAP配置恢复至未集成状态
2.进入实例页面,我们选择172.31.5.190的HiveServer2进行配置
进入HiveServer2的配置页面
3.添加如下配置,提示:代码块部分可以左右滑动查看噢
<property>
<name>hive.server2.authentication</name>
<value>LDAP</value>
</property>
<property>
<name>hive.server2.authentication.ldap.url</name>
<value>ldap://ip-172-31-7-172.fayson.com</value>
</property>
<property>
<name>hive.server2.authentication.ldap.baseDN</name>
<value>ou=People,dc=fayson,dc=com</value>
</property>
保存配置,回到CM主页根据提示重启相应服务。
4.验证配置是否生效
使用Beeline连接172.31.5.190的HiveServer2服务
在使用faysontest用户登录190的HiveServer2时输入错误的密码提示”Error validating the login”。使用正确的密码登录显示成功:
使用beeline连接172.31.6.148的HiveServer2服务时,在不输入密码也是可以正常登录的:
由此可以看出,我们可以针对某个HiveServer2服务配置集成OpenLDAP。
6.总结
- 确保集群所有节点已配置OpenLDAP集成SSH登录并通过sssd同步用户
- 通过CM界面可以方便的为Hive服务启用并配置OpenLDAP服务
- 可以针对某个HiveServer2服务配置集成OpenLDAP,由于HiveServer2不能同时支持Kerberos和LDAP认证,如果在集群需要同时支持两种认证则需要配置多个HiveServer2服务。
- 一旦集群启用了Kerberos,HiveServer2默认使用Kerberos认证,不需要单独配置。注意这里和OpenLDAP认证的区别。
- 使用HiveCLI命令可以绕过OpenLDAP认证,为确保Hive访问的安全,这里我们可以禁用HiveCLI,具体禁用可以参考Fayson前面讲的《如何在CDH启用Kerberos的情况下安装及使用Sentry(一)》和《如何在CDH启用Kerberos的情况下安装及使用Sentry(二)》。
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 省略号——中英文以及数字1旁边的差异
- 两有序数组间相加的TOPK问题
- 关于url传值的问题—encodeURIComponent
- Markdown 调整图片位置与大小
- 展开与折叠菜单动画
- Vue 中使用Pug
- curl在raw.githubusercontent.com下载文件时出现无法链接问题
- linux查看端口进程信息—lsof工具
- vscode配置:双击选中连字符
- 实现简单登陆注册功能流程分析
- centos系统中yum安装应用出现doesn't have enough cached
- Mac os上显示与隐藏文件
- windows启动tomcat闪退,乱码问题解决
- Homebrew的安装
- 小程序轮播中嵌入视频-关于swiper、video组件与block标签