Impala资源控制之-LIama

原创
2017/03/08 15:39
阅读数 564

背景介绍

        在使用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日志显示如下.....

 

 

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部