我们在使用spark引擎执行配置单元查询时遇到错误。
执行spark任务失败,但有异常 'org.apache.hadoop.hive.ql.metadata.HiveException(无法创建 火花客户端。)'失败:执行错误,返回代码1 org.apache.hadoop.hive.ql.exec.spark.SparkTask
以下属性设置为使用spark作为执行引擎而不是mapreduce:
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;
我也尝试更改以下属性。
screen_name, screen_name_retweet , screen_name_mention
我是否需要设置其他一些属性?谁有人建议?
答案 0 :(得分:1)
似乎e YARN Container Memory小于Spark Executor要求。请将YARN Container内存和最大值设置为大于Spark Executor Memory + Overhead。
<强> yarn.nodemanager.resource.memory-MB:强>
可以为容器分配的物理内存量(MB)。这意味着YARN可以在此节点上使用的内存量,因此该属性应该低于该计算机的总内存。
<name>yarn.nodemanager.resource.memory-mb</name>
<value>40960</value> <!-- 40 GB -->
下一步是提供有关如何分解容器中可用资源总量的YARN指南。您可以通过指定要为Container分配的最小RAM单位来执行此操作。
在yarn-site.xml中
<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container ->
<value>2048</value>
<强> yarn.scheduler.maximum分配-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:在YARN服务实例上转到Spark&gt; 历史服务器&gt;历史服务WebUI&gt;点击相关工作&gt;点击 关于相关的失败工作&gt;单击该作业的失败阶段并查看 对于“细节”部分。