Hive on Spark:如何提高yarn并发运行app的数量?

问题:无法创建spark客户端

jdbc连接hive,当两个窗口都执行insert语句时(每个窗口都相当于是一个独立的客户端,各自提交自己的application),会报错:

[42000][30041] Error while processing statement: FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 6d681888-113a-46c6-bb5d-7283c88e2cda

无法创建spark客户端,就无法启动application,就提交不了sql,也就无法运行。

web端口会出现如下情况:

Hive on Spark:如何提高yarn并发运行app的数量?

 

什么是ACCEPTED状态?

往yarn提交job时,要先创建一个客户端,客户端向RM请求创建application,application在yarn上运行的第一步是运行一个进程--applicationMaster,AM向RM申请资源(container)运行MT/RT或spark的executor,而AM也是一个进程,所以也需要一个container来运行,

所以在yarn运行的第一步是先找一个container运行applicationMaster,如果applicationMaster可以运行,就是RUNNING状态,如果不可以运行就是ACCEPTED状态。

为什么后执行的一个application的状态始终是ACCEPTED?

1、队列是先进先出FIFO

查看Scheduler Type:Capacity Scheduler,所以排除这个原因。

2、集群资源不够

查看其实是够的,所以排除这个原因。

Hive on Spark:如何提高yarn并发运行app的数量?

 

3、集群资源够,但是不给资源---

查看默认队列的相关配置:

Hive on Spark:如何提高yarn并发运行app的数量?

 

Configured Max Application Master Limit: 10.0

Maximum percent of resources in the cluster which can be used to run application masters i.e. controls number of concurrent running applications.(可以控制同时并发运行的application的数量)

已经配置过的最大的Application Master的限制是10%,也就是说队列的资源最大程度上只能提供10%给Application Master使用,所以在已经给了一个applicationMastrt资源之后,不够资源给第二个了。

想要同时运行,就要调大这个参数,在/opt/module/hadoop/etc/hadoop修改capacity-schdualer.xml:将yarn.scheduler.capacity.maximum-am-resource-percent改为0.5。 改完之后分发(因为是给nodeManager看的,nodeManager最终负责提供容器),分发之后重启yarn

再次查看:

Hive on Spark:如何提高yarn并发运行app的数量?

 

重新在两个窗口提交insert,查看web页面,两个application状态均为RUNNING:

Hive on Spark:如何提高yarn并发运行app的数量?

 

如何调大集群总的资源:

修改yarn-site.xml:将下面三个配置删掉。删掉之后重启yarn

<!-- yarn容器允许分配的最大最小内存 -->

    <property>

        <name>yarn.scheduler.minimum-allocation-mb</name>

        <value>512</value>

    </property>

    <property>

        <name>yarn.scheduler.maximum-allocation-mb</name>

        <value>4096</value>

    </property>



    <!-- yarn容器允许管理的物理内存大小 -->

    <property>

        <name>yarn.nodemanager.resource.memory-mb</name>

        <value>4096</value>

</property>

查看:

Hive on Spark:如何提高yarn并发运行app的数量?

 

上一篇:Spring Boot 入门(十四)使用dubbo(用redis作为注册中心)


下一篇:Alibaba竟流出全套的Java核心技术手册,果然香