0808-7.1.1-如何在CDP7.1.1指定Hive SQL的资源池队列
文档编写目的
Fayson在CDP7.1.1 的使用过程中,发现在使用Hive SQL 中默认无法修改Hive 的资源池,只能提交到defalut 或者 root.hive 队列下,而且显示的提交用户都是hive。这对于一个生产环境中的资源池管理是致命的缺陷,本文主要介绍在CDP7.1.1中如何配置用户的Hive SQL 的资源池队列
- 测试环境
1.操作系统Redhat7.6
2.CDP DC7.1.1
操作步骤
Fayson使用test用户进行验证,创建了一个root.test 的资源池,设置放置规则test 用户放置到root.test 池下进行验证,具体操作如下:
1、首先确保你集群中的YARN Queue Manager是正常工作的,然后点击群集>动态资源池,在Yarn 创建资源池创建root.test 资源池,root.test资源池配置这里比例为10%,可根据资源情况自行调整
2、设置队列放置规则
Fayson 这里只针对test 用户,设置将test 用户的队列放置到root.test 资源池下
然后执行pyspark 命令验证已经生效。
3、进入beeline 命令或者在hue 中创建一个测试表,并插入一条数据验证
kinit test
create table test (s1 string,s2 string);
insert into test values ("test","abc");
然后查看执行结果和作业信息显示的池的default,用户是Hive 。在Hive SQL 中,并没有将作业正确的放置到用户的资源池队列
那么如何才能让Hive 作业正确的运行到指定的资源池下呢?
首先确报已禁用模拟功能hive.server2.enable.doAs=false
然后具体步骤如下:
CM -> YARN -> Configuration -> ResourceManager Advanced Configuration Snippet (Safety Valve) for yarn-site.xml 中添加以下参数:
yarn.resourcemanager.application-tag-based-placement.enable=true
yarn.resourcemanager.application-tag-based-placement.username.whitelist=hive
CM -> Hive_on_Tez -> Configuration -> Hive Service Advanced Configuration Snippet (Safety Valve) for hive-site.xml 中添加以下参数:
hive.server2.tez.initialize.default.sessions=false;
hive.server2.tez.queue.access.check=true;
hive.server2.tez.sessions.custom.queue.allowed=true;
设置完上述参数后,保存并重启服务生效。
然后重新提交insert 语句执行
查看资源池队列放置是否准确
CM 界面:
而提交任务的用户显示依旧为Hive, 因为 Hive 禁用模拟之后, 所有作业实际都是通过Hive用户提交的. 真实提交的用户显示 YARN Application Tag的一部分. 可以在 YARN Web UI 上看到 "Application Tag" 列会显示userid=XXX 的信息, 是实际的提交用户。
也可以通过 CM -> YARN -> Application 页面的右边 Select Attributes按钮点开 Application Tag, 接着在搜索框可以输入 application_tags RLIKE '.*userid=用户名' ,这样 CM 就会显示所有"用户名"提交的 Hive作业了。
文档总结
在CDP7.1.1中启用 Ranger 之后(类似于 Sentry), 由于鉴权的需要, Hive 始终是用 hive 用户提交作业的。开启 Ranger 之后, 默认 Hive 提交的 Tez 作业以hive用户执行, 所以不会以实际的登录 Hive 的用户来指派队列,需要手动在YARN 中开启Application Tag 功能和Tez中开启队列检查参数来正确放置队列和获取作业执行的用户。
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
- zookeeper配置详解
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
- zookeeper命令行(zkCli.sh&zkServer.sh)使用及四字命令
- [WCF的Binding模型]之三:信道监听器(Channel Listener)
- zookeeper监控告警
- 扩展ToolBarManager、ListView和Grid控件以实现气球式的ToolTip
- Linux同步机制 - 基本概念(死锁,活锁,饿死,优先级反转,护航现象)
- Linux同步机制 - 多线程开发总结
- 谷歌发布升级版语音合成系统,直接从字符合成语音
- 无锁编程 - 大纲
- 无锁编程(一) - Double-checked Locking
- 无锁编程(二) - 原子操作
- 我所理解的Remoting(3):创建CAO Service Factory使接口和实现相互分离
- 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 数组属性和方法
- 聊聊dubbo-go的kubernetesRegistry
- 《Java 开发手册》解读:三目运算符为何会导致 NPE?
- 11.实现AI对战AI的五子棋程序
- 8.wxPython设置图像遮罩(mask)的方法
- Logstash:Data转换,分析,提取,丰富及核心操作
- 7.wxPython制作一个桌面精灵
- html前端之css绘制形状
- Python 对列表中的字符串首字母大写处理
- 对加密-加签的完整流程
- 加密-解密详解
- 链表中的指针到底是啥 ?
- java8流处理遍历(仅供个人学习)
- Kubernetes 为什么需要策略支持
- iOS富文本之数字小角标
- 50. Vue名称案例-使用keyup事件监听