配置llama实现impala on yarn-验证未通过,仅以此文作为参考
以下内容采自网络,目前验证未通过,仅以此作为参考:
简介:早期的Impala版本中,为了使用Impala,我们通常会在以Client/Server的结构在各个集群节点启动impala-server、impala-state-store和impala-catalog服务,并且在启动过程中无法动态调整内存和CPU的分配。CDH5之后,Impala开始支持Impala-on-yarn模式,通过一个叫做Llama(Long-Lived Application Master)的中间协调Yarn和Impala,向Hadoop Yarn资源管理器申请计算资源。
Llama (Low Latency Application MAster) 是一个 Yarn 的 Application Master,用于协调 Impala 和 Yarn 之间的集群资源的管理和监控。Llama 使 Impala 能够获取、使用和释放资源配额,而不需要 Impala 使用 Yarn 管理的 container 进程。Llama 提供了 Thrift API 来和 Yarn 交互。
1、Llama介绍
Llama(Long-LivedApplicationMaster)是位于ClouderaImpala和HadoopYARN之间,用于协调资源管理的服务系统。在一个Hadoop集群中,Impala可以通过Llama预约、使用以及释放资源分配,以减少执行Impala查询时过多的资源管理用度。只有在Impala中启用资源管理,集群中的Llama服务才真正运作。
默认情况下,YARN根据MapReduce工作的需要按位分配资源,而Impala则需要所有资源在同一时间可用,以保证查询的中间结果能够在不同节点间交换,而不需要拖延查询时间来等待新的资源分配,Llama就是为了在每个Impala查询开始执行前就可保证其需要的资源都可用而出现。
若一个查询执行完毕,Llama会将资源进行缓存,确保在执行Impala子查询时可以使用。这种缓存机制避免了每个查询执行前都需要进行新的资源请求。同时,如果YARN需要该资源用于其他工作,Llama就会将这部分资源还给YARN。
需要注意的是:Llama仅支持YARN,不能与MRv1结合使用,同时,Llama也是通过YARN的配置文件与Hadoop进行协作的。
2、控制计算资源预估
我们提交SQL到Impala后,有时会错误的预估该次查询可能消耗的计算资源,Impala支持用户设置默认的内存和CPU资源申请大小,SQL运行过程中,一旦资源开始紧缺时,Impala会通过Llama向Yarn申请更多的资源来扩展(expanding)当前的预留资源,一旦查询作业完成,Llama通常会将资源还给Yarn。用户可以在启动使用impalad进程时加上-rm_always_use_defaults参数(必选)以及-rm_default_memory=size and -rm_default_cpu_cores(可选),Cloudera官方建议使用Impala-on-yarn时加上这些启动参数,可以让查询资源动态扩展。
3、验证计算资源预估和实际使用
为了使用户能够方便的验证查询语句所使用的集群资源大小,使用EXPLAIN语句可以查询相关内存预估的信息,以及使用到virtual core的大小。使用EXPLAIN并不会真正提交查询
4、资源限制的原理
CPU限制是通过Linux CGroups机制,Yarn在各个节点启动符合CGroups形式的Container进程
内存限制是通过限制Impala的查询内存,一旦查询请求被授权,Impala会在执行前设置内存上限。
llama配置:
1、下载llama
从cloudera官网下载llama安装包:
http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.10.0/RPMS/noarch/llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.10.0/RPMS/noarch/llama-doc-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
http://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5.10.0/RPMS/noarch/llama-master-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
# ls llama-*
llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
llama-doc-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
llama-master-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
2、安装llama
llama需要安装在所有yarn节点上:
# rpm -ivh llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
warning: llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID e8f86acd: NOKEY
error: Failed dependencies:
hadoop-yarn is needed by llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch
# rpm -ivh llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm --nodeps
warning: llama-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID e8f86acd: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:llama-1.0.0+cdh5.10.0+0-1.cdh5.10################################# [100%]
# rpm -ivh llama-master-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm
warning: llama-master-1.0.0+cdh5.10.0+0-1.cdh5.10.0.p0.71.el7.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID e8f86acd: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:llama-master-1.0.0+cdh5.10.0+0-1.################################# [100%]
3、启动和停止
启动:
$ sudo service llama start
停止:
$ sudo service llama stop
4 配置 HA
Llama 使用 Zookeeper 来实现 HA,任一时刻,只有一个 Llama-master 实例是 active的以确保资源不会被分区。
为了从 Yarn 获取资源,Llama 启动 YARN application 并且运行未管理的ApplicationMaster。当一个 Llama 实例宕掉的时候,分配给该实例启动的 application 的所有资源将会被回首,直到这些 application 超时(默认超时时间为10分钟)。当 Llama 运行失败的时候,这些资源将会被杀掉他启动的application的 Llama 回收。
HA 相关配置参数在 /etc/llama/conf/llama-site.xml:
属性 描述 默认值
llama.am.cluster.id Cluster ID of the Llama pair, used to differentiate between different Llamas llama
llama.am.ha.enabled Whether to enable Llama HA false
llama.am.ha.zk-quorum ZooKeeper quorum to use for leader election and fencing
llama.am.ha.zk-base Base znode for leader election and fencing data /llama
llama.am.ha.zk-timeout-ms The session timeout, in milliseconds, for connections to ZooKeeper quorum 10000
llama.am.ha.zk-acl ACLs to control access to ZooKeeper world:anyone:rwcda
llama.am.ha.zk-auth Authorization information to go with the ACLs
上面必填的两个参数为:
llama.am.ha.enabled : true
llama.am.ha.zk-quorum : cdh1:21088,cdh2:21088
5 修改 Impala 启动参数
使用 jdbc 方式提交查询到 Impala 时,会出现 number of running queries 20 is over limit 20 的异常,这时候在 impala的 源代码中搜索关键字 number of running queries,可以找到https://github.com/cloudera/Impala/blob/cdh5-1.4_5.1.2/be/src/scheduling/admission-controller.cc,从源代码中可以看到出现该问题和 Llama 有关系,在找不到 llama 的相关配置时,impala 一个队列中能够接受的最大请求数为 20。代码见:RequestPoolService.java
@VisibleForTesting
TPoolConfigResult getPoolConfig(String pool) {
TPoolConfigResult result = new TPoolConfigResult();
int maxMemoryMb = allocationConf_.get().getMaxResources(pool).getMemory();
result.setMem_limit(
maxMemoryMb == Integer.MAX_VALUE ? -1 : (long) maxMemoryMb * ByteUnits.MEGABYTE);
if (llamaConf_ == null) { //llama配置为空
result.setMax_requests(LLAMA_MAX_PLACED_RESERVATIONS_DEFAULT);
result.setMax_queued(LLAMA_MAX_QUEUED_RESERVATIONS_DEFAULT);
} else {
// Capture the current llamaConf_ in case it changes while we're using it.
Configuration currentLlamaConf = llamaConf_;
result.setMax_requests(getLlamaPoolConfigValue(currentLlamaConf, pool,
LLAMA_MAX_PLACED_RESERVATIONS_KEY,
LLAMA_MAX_PLACED_RESERVATIONS_DEFAULT)); //20
result.setMax_queued(getLlamaPoolConfigValue(currentLlamaConf, pool,
LLAMA_MAX_QUEUED_RESERVATIONS_KEY,
LLAMA_MAX_QUEUED_RESERVATIONS_DEFAULT));
}
LOG.trace("getPoolConfig(pool={}): mem_limit={}, max_requests={}, max_queued={}",
new Object[] { pool, result.mem_limit, result.max_requests, result.max_queued });
return result;
}
目前,参考 Admission Control and Query Queuing,在不安装和使用 llama 情况下,找到的一种解决办法是:
修改 impala 启动参数(/etc/default/impala),添加 ` -default_pool_max_requests=-1`,该参数设置每一个队列的最大请求数,如果为-1,则表示不做限制。
6. 使用
6.1 Llama Application Master
6.2 Llama Admin Command Line tool
6.3 Llama Node Manager Auxiliary Service
配置llama实现impala on yarn-验证未通过,仅以此文作为参考的更多相关文章
- Llama-impala on yarn的中间协调服务
本文基于CDH发行版下的Hadoop Yarn和Impala 早期的Impala版本号中.为了使用Impala.我们一般会在以Client/Server的结构在各个集群节点启动impala-serve ...
- tomcat环境变量的配置(网上摘,全部验证通过)
tomcat环境变量的配置 1.===> 进入bin目录下,双击startup.bat看是否报错.一般肯定会报. 2.===> 右键我的电脑===>高级===>环境变量 ...
- fileinput 配置项大全,从源码中翻出了很多属性,没那么多时间一一验证,特发出来给大家参考参考
fileinput 配置项大全,从源码中翻出了很多属性,没那么多时间一一验证,特发出来给大家参考参考 fileinput 配置项大全 option 属性名 属性类型 描述说明 默认值 language ...
- 【tomcat】HTTPS访问配置 + restful调用远程HTTPS绕过验证
单向验证: 第一步: 生成key: keytool -genkey -alias mykey -keyalg RSA -keystore d:/key/testkey keytool -export ...
- Squid配置之使用帐号密码验证
转自: https://blog.csdn.net/atco/article/details/43448885 1.安装squid使用root用户进行操作.先使用rpm检测是否已经安装了sql ...
- Linux下ftp安装配置及三种用户的验证
一.原理简介 二.安装配置 三.三种用户的验证 一.简介 FTP即文件传输协议(File Transfer Protocol),完成各主机的文件共享功能,基于客户端-服务器的协议,工作在应用层,tcp ...
- 使用jquery.validation+jquery.poshytip做表单验证--未完待续
jqueryValidate的具体使用方法很多,这里就不在赘述,这一次只谈一下怎样简单的实现表单验证. 整片文章目的,通过JQvalidation按表单属性配置规则验证,并将验证结果通过poshyti ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- ASP.NET Core Web API + Angular 仿B站(三)后台配置 JWT 的基于 token 的验证
前言: 本系列文章主要为对所学 Angular 框架的一次微小的实践,对 b站页面作简单的模仿. 本系列文章主要参考资料: 微软文档: https://docs.microsoft.com/zh-cn ...
随机推荐
- 一个正整数表示为n个连续正整数之和(第1届第2题)
题目要求 问题描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 编写程序,根据输入的任何一个正整数,找出符合这 ...
- .NET开发微信公众号之创建自定义菜单
一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...
- easy_install与pip 区别
作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么...... easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键 ...
- C++11 列表初始化
在我们实际编程中,我们经常会碰到变量初始化的问题,对于不同的变量初始化的手段多种多样,比如说对于一个数组我们可以使用 int arr[] = {1,2,3}的方式初始化,又比如对于一个简单的结构体: ...
- 阅读《深入应用C++11:代码优化与工程级应用》
虽然一直是写C++的,但是却对C++11了解的不是太多,于是从图书馆借了本书来看 这本书分两大部分: 一.C++11的新特性讲解 二.工程级代码中C++11的应用 这样的安排很合理,第一部分把新特性讲 ...
- 【iCore4 双核心板_FPGA】例程十一:FSMC总线通信实验——独立地址模式
实验原理: STM32F767上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-6 底层驱动之触摸操作
源视频包下载地址: 链接:http://pan.baidu.com/s/1skQlWAT 密码:ymn7 银杏科技优酷视频发布区: http://i.youku.com/gingko8
- Hive数据倾斜解决办法总结
数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ...
- .net core读取json格式的配置文件
在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...
- Java知多少(12)运算符
Java中的运算符和C/C++相差无几. 数学运算符 数学运算,结果为一个数值.见下表: 运算符 说明 举例 + 加法 1 + 2 - 减法 4 - 3.4 * 乘法 7 * 1.5 / 除法 3.5 ...