文档章节

Impala资源控制之-LIama

China_OS
 China_OS
发布于 2017/03/08 15:39
字数 1712
阅读 49
收藏 0

背景介绍

        在使用Impala的项目中,我们会以Client/Server的部署方式在hadoop的集群节点启动impala-server、impala-state-store和impala-catalog服务,但是在使用中无法动态调整impala使用内存和CPU的分配。CDH5之后,Impala开始支持Impala-on-yarn模式,通过一个叫做Llama(Long-Lived Application Master)的中间系统协调Yarn和Impala,Llama的作用就是使Impala能够工作在YARN之上,使得Impala和YARN共享集群资源,提供低延迟的查询,Llama主要服务于Impala和Yarn之间的协作,因此安装Llama必须确保Impala和Yarn服务的安装。需要注意的是:Llama 仅支持 YARN,不能与 MRv1 结合使用,同时,Llama 也是通过 YARN 的配置文件与 Hadoop 进行协作的。

        Llama是位于 Cloudera Impala 和 Hadoop YARN 之间,用于协调资源管理的服务系统。在一个 Hadoop 集群中,Impala 可以通过 Llama 预约、使用以及释放资源分配,以减少执行Impala 查询时过多的资源管理用度。只有在 Impala 中启用资源管理,集群中的 Llama 服务才真正运作。默认情况下,YARN 根据 MapReduce 工作的需要按位分配资源,而 Impala 则需要所有资源在同一时间可用,以保证查询的中间结果能够在不同节点间交换,而不需要拖延查询时间来等待新的资源分配,Llama就是为了在每个 Impala 查询开始执行前就可保证其需要的资源都可用而出现。若一个查询执行完毕,Llama 会将资源进行缓存,确保在执行 Impala 子查询时可以使用。这种缓存机制避免了每个查询执行前都需要进行新的资源请求。同时,如果 YARN 需要该资源用于其他工作,Llama就会将这部分资源还给 YARN。

 

安装LIama AM(Application Master)

    实验平台 CDH-5.5,LIama AM需要一个本地hadoop客户端,并且可以访问hadoop集群

yum install llama-master

        配置文件目录 /etc/llama/conf/
        二进制文件目录 /usr/lib/llama/
        log目录 /var/log/llama/
        PID文件目录 /var/run/llama/

        /usr/lib/llama/libexec/llama-env.sh

    官方安装:LImam install

LIama AM配置文件

    LIama AM的配置文件目录里面有三个配置文件:

llamaadmin-site.xml  
llama-log4j.properties  修改完直接生效
llama-site.xml 修改完需要重启生效

    llamaadmin-site.xml配置

llamaadmin.server.thrift.address  配置为LIama AM的本地IP

    llama-site.xml配置

llama.am.server.thrift.address  修改为LIama AM的本地IP
llama.nm.server.thrift.address  修改为LIama NM的本地IP

配置LImam AM的YARN依赖

    LImam使用Hadoop YARN的Fair Scheduler队列对用户资源进行限制,所以,要使LIama正常工作,必须配置Fair Scheduler队列,fair-scheduler.xml配置文件必须在LIama AM的配置文件目录或者在LIama的CLASSPATH中。LIama只使用CPU或者Memory资源,运行LIama AM的用户必须在hadoop中配置为自己的代理用户。

    yarn-site.xml追加

<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
</property>

<property>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
</property>

    core-site.xml追加

<property>
    <name>hadoop.proxyuser.llama.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.llama.groups</name>
    <value>*</value>
</property>

 

安装LIama NM(NodeManager) Auxiliary Service

    LIama AM安装完毕后有一个lib目录(/usr/lib/llama/lib),该lib目录中的JAR文件必须添加到YARN集群中所有NodeManagers节点的CLASSPATH中。当配置完成后,LIama NM服务会随着YARN NM服务的启动而启动。

LIama NM配置

    LIama NM辅助服务的配置文件是llama-site.xml,它必须拷贝到NM的配置文件目录,任何llama-site.xml的变更,都需要重启生效。

配置LImam NM的YARN依赖

    yarn-site.xml追加

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle,llama_nm_plugin</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services.llama_nm_plugin.class</name>
    <value>com.cloudera.llama.nm.LlamaNMAuxiliaryService</value>
</property>

        ps:mapreduce_shuffle不是LIama NM必须的,mapreduce_shuffle是Map-Reduce Job在YARN中需要的

    Lib库引用

ln -s /usr/lib/llama/llama-1.0.0-cdh5.10.0.jar /usr/lib/hadoop/lib/
ln -s /usr/lib/llama/lib/metrics-core-3.0.1.jar /usr/lib/hadoop/lib/
ln -s /usr/lib/llama/lib/libthrift-0.9.0.jar /usr/lib/hadoop/lib/

 LIama HA(选做)

<property>
    <name>llama.am.ha.enabled</name>
    <value>false</value>
</property>

<property>
    <name>llama.am.ha.zk-quorum</name>
    <value></value>
</property>

<property>
    <name>llama.am.ha.zk-base</name>
    <value>/llama</value>
</property>

<property>
    <name>llama.am.ha.zk-timeout-ms</name>
    <value>10000</value>
</property>

<property>
    <name>llama.am.cluster.id</name>
    <value>llama</value>
</property>

Impala对接LIama

    impalad server安装cgroup

yum install libcgroup -y

    创建cpu hierarchy

mkdir /cgroup/cpu/

    启动cgroup

/etc/init.d/cgconfig start

    修改impalad配置

    /etc/default/impala文件中,MPALA_SERVER_ARGS追加

IMPALA_CATALOG_SERVICE_HOST=xxxxxx
IMPALA_STATE_STORE_HOST=xxxxxx
IMPALA_STATE_STORE_PORT=24000
IMPALA_BACKEND_PORT=22000
IMPALA_LOG_DIR=/var/log/impala

IMPALA_CATALOG_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}  -state_store_host=${IMPALA_STATE_STORE_HOST}"
IMPALA_STATE_STORE_ARGS=" -log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"
IMPALA_SERVER_ARGS=" \
    -use_local_tz_for_unix_timestamp_conversions=true \
    -convert_legacy_hive_parquet_utc_timestamps=true \
    -log_dir=${IMPALA_LOG_DIR} \
    -catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
    -state_store_port=${IMPALA_STATE_STORE_PORT} \
    -use_statestore \
    -state_store_host=${IMPALA_STATE_STORE_HOST} \
    -enable_rm=true \
    -fair_scheduler_allocation_path=/etc/hadoop/conf/fair-scheduler.xml \
    -rm_always_use_defaults=true \
    -llama_host=xxxxxx \
    -llama_port=15000 \
    -cgroup_hierarchy_path=/cgroup/cpu \
    -be_port=${IMPALA_BACKEND_PORT}" 

ENABLE_CORE_DUMPS=false

# LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib
# MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
# IMPALA_BIN=/usr/lib/impala/sbin
# IMPALA_HOME=/usr/lib/impala
# HIVE_HOME=/usr/lib/hive
# HBASE_HOME=/usr/lib/hbase
# IMPALA_CONF_DIR=/etc/impala/conf
# HADOOP_CONF_DIR=/etc/impala/conf
# HIVE_CONF_DIR=/etc/impala/conf
# HBASE_CONF_DIR=/etc/impala/conf

        官方配置详解:impala llama config

    参数解释

LIama 非HA模式下impala配置项:
-enable_rm: 该参数用于控制是否启用资源管理,类型为Boolean,默认值为false,表示资源管理未启用,只有在设置为 true 时,资源管理选项才可能生效
-llama_host:Llama 服务所在的主机名或 IP 地址,供 Impala 连接使用。默认值为 127.0.0.1;
-llama_port:Llama 服务端口,,供 Impala 连接使用。默认为 15000;
-llama_callback_port: Impala 启用 Llama 回调服务的端口。Llama 从该服务报告资源的批准或优先占有
-cgroup_hierarchy_path: YARN和Llama创建已批准资源的CGroups的路径,Impala假设一个已分配容器的CGroup在目录'cgroup_hierarchy_path +container_id'下创建。
-rm_always_use_defaults:impala忽略计算的估算值,并始终在查询开始时从LImam获取默认的内存和CPU分配,默认的估算值大约是2CPU/4Gmem,可能根据集群大小和工作负载稍有不同,建议开启,并忽略下面两个参数的值
-rm_default_memory:针对每次查询设置预估的内存使用量,可以是M或者G为单位
-rm_default_cpu_cores:针对每次查询设置预估的CPU使用个数
#-fair_cheduler_allocation_path: fair-scheduler.xml 文件存放位置。启用 Llama 后,YARN默认使用fair-scheduler.xml中定义的调度方式进行资源调度


LImam HA模式下impala的配置项:
-llama_addresses:逗号分隔的LImam HA host:port列表
-llama_max_request_attempts:重试请求的次数,直至请求被取消,默认是5
-llama_registration_timeout_secs:impala向LIama注册或者重新注册的超时时间,默认是30秒,-1表示无限尝试
-llama_registration_wait_secs:每次重复注册的时间间隔,默认3秒

    重启impala server

 

LIama重大问题

        LIama在CDH5.5之前版本都是可以使用的,我再次在CDH最新版5.10部署LIama,经过测试发现LIama已经被废弃了,impalad.INFO日志显示如下.....

 

 

 

 

© 著作权归作者所有

China_OS
粉丝 427
博文 463
码字总数 519985
作品 0
静安
技术主管
私信 提问
Impala内存优化实战案例

一. 引言 Hadoop生态中的NoSQL数据分析三剑客Hive、HBase、Impala分别在海量批处理分析、大数据列式存储、实时交互式分析各有所长。尤其是Impala,自从加入Hadoop大家庭以来,凭借其各个特点...

Zero零_度
2016/06/08
1K
0
Impala源码之资源管理与资源隔离

本文由 网易云 发布 前言 Impala是一个MPP架构的查询系统,为了做到平台化服务,首先需要考虑就是如何做到资源隔离,多个产品之间尽可能小的甚至毫无影响。对于这种需求,最好的隔离方案无疑...

wangyiyungw
2018/05/07
0
0
管理 Impala(部分翻译)

管理 Impala 作为管理员,你应监视 Impala 的资源使用情况,必要时采取行动以保证 Impala 平衡运行,避免与统一集群里的其他 Haoopd 组件冲突。当检测到已发生或将发生的问题时,你应重新配置...

weiqingbin
2013/12/17
1K
0
Apache Sentry实战之旅(一)—— Impala+Sentry整合

默认是以这个超级用户运行服务,执行和操作的,要实现不同用户之间细粒度的权限控制,需要与整合。是下的一个开源项目,它基于的授权模型实现了权限控制,与它整合以后,就能实现不同用户之间...

九州暮云
07/07
132
0
基于Impala平台打造交互查询系统

本文来自网易云社区 原创: 蒋鸿翔 DataFunTalk 本文根据网易大数据蒋鸿翔老师DataFun Talk——“大数据从底层处理到数据驱动业务”中分享的《基于Impala平台打造交互查询系统》编辑整理而成...

网易云
2018/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部