该错误发生在从hive ods层中向hive es外部表中插入数据时产生,大概率由于该文件数据量过大导致,该文件大小为700m左右。
环境为VMware虚拟机环境,为单台机器模拟的大数据开发环境;
该错误在hive中只是报简单的code2,没有说明具体原因,于是访问了hive historyserver web页面找到该任务,显示killed,点进任务中后看到下面的详细报错原因。
MAP capability required is more than the supported max container capability in the cluster. Killing the Job. mapResourceRequest: <memory:10150, vCores:1> maxContainerCapability:<memory:4096, vCores:32> Job received Kill while in RUNNING state.
翻译:
该错误表明Hive作业(或MapReduce作业)被杀死,原因是作业请求的资源超过了集群中允许的最大容器能力。具体来说,作业要求的内存是 10150 MB,而集群最大容器的内存能力是 4096 MB。
如何解决:
查询chatgpt3.5后,它给出下面的建议:
-
调整作业的资源请求: 检查您的Hive作业配置,尤其是与资源请求相关的配置。您可以尝试减少作业的内存需求,以使其适应集群的限制。这通常包括调整
mapreduce.map.memory.mb
和mapreduce.reduce.memory.mb
等配置项。 -
检查YARN配置: 确保YARN集群的配置与您的作业需求相匹配。您可以通过调整YARN的相关配置项,如
yarn.scheduler.maximum-allocation-mb
和yarn.scheduler.maximum-allocation-vcores
来增加集群的最大容器能力。 -
调整集群资源管理器的队列设置: 如果您的集群使用了资源管理器(如YARN),您可能需要调整队列的配置,以确保队列的最大容器能力足够大。
-
优化作业: 考虑优化您的Hive查询或MapReduce作业,以减少资源需求。这可能包括更有效地使用索引、分区等
-
联系集群管理员: 如果您不是集群管理员,您可能需要与负责集群管理的团队或个人联系。他们可以提供有关资源配额和配置的更多信息,并可能协助您解决问题。
通过hive-site.xml配置文件修改解决了问题:
注意:修改配置文件后请务必重启hive服务(直接kill后重启)
配置文件路径:/export/server/hive/conf/hive-site.xml
配置文件内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- Hive配置 -->
<property>
<name>hive.auto.convert.join.noconditionaltask.size</name>
<value>10000000</value>
</property>
<!-- MySQL连接信息 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://up01:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- Hive元存储配置 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<!-- Hive Thrift 服务配置 -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>up01</value>
</property>
<!-- YARN配置 -->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>12000</value> <!-- 根据实际情况调整 -->
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>4</value> <!-- 根据实际情况调整 -->
</property>
</configuration>
创作不易,如有帮助,请点赞支持,感谢