未能创建spark客户端

iyr7buue  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(389)

我们在使用spark引擎执行配置单元查询时遇到错误。
未能执行spark任务,出现异常“org.apache.hadoop.hive.ql.metadata.hiveexception(未能创建spark客户端。)”失败:执行错误,从org.apache.hadoop.hive.ql.exec.spark.sparktask返回代码1
以下属性设置为使用spark作为执行引擎,而不是mapreduce:

set hive.execution.engine=spark;
set spark.executor.memory=2g;

我还尝试更改以下属性。

set yarn.scheduler.maximum-allocation-mb=2048;
    set yarn.nodemanager.resource.memory-mb=2048;
    set spark.executor.cores=4;
    set spark.executor.memory=4g;
    set spark.yarn.executor.memoryOverhead=750;
    set hive.spark.client.server.connect.timeout=900000ms;

我需要设置其他属性吗?有人能建议吗?

kzipqqlq

kzipqqlq1#

看起来e容器内存比spark executor要求的要小。请将Yarn容器内存和最大值设置为大于spark executor内存+开销。
yarn.scheduler.maximum-allocation-mb最大分配
yarn.nodemanager.resource.memory-mb内存
yarn.nodemanager.resource.memory-mb:
可分配给容器的物理内存量(mb)。这意味着此节点上可以使用的内存量,因此此属性应低于该机器的总内存。

<name>yarn.nodemanager.resource.memory-mb</name>
<value>40960</value> <!-- 40 GB -->

下一步是就如何将可用的总资源分解到容器中提供指导。为此,您可以指定要为容器分配的最小ram单位。
在yarn-site.xml中

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container ->
 <value>2048</value>

yarn.scheduler.maximum-allocation-mb:
它定义了容器可用的最大内存分配(mb)
这意味着rm只能以“yarn.scheduler.minimum allocation mb”的增量向容器分配内存,并且不能超过“yarn.scheduler.maximum allocation mb”,并且不能超过节点的总分配内存。
在yarn-site.xml中

<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container->
 <value>8192</value>

同时转到spark history server:转到spark on Warn service instance>history server>history service webui>单击相关作业>单击相关失败作业>单击该作业的失败阶段,并查找“详细信息”部分。

相关问题