立即注册 登录
About云-梭伦科技 返回首页

阿飞的个人空间 https://www.aboutyun.com/?3890 [收藏] [复制] [分享] [RSS]

日志

关于uber运行模式带来的问题总结

已有 612 次阅读2019-9-25 17:37 |系统分类:大数据


以下问题,来自About云VIP讨论记录,防止被忘掉。


使用的hive,表中的数据非常少,使用select * from table where id=1,运行没有问题。
select count(1) from table where id=1,出现错误

error while processing statement failed exception excution error return code2 from org.apache.hadoop.hive.ql.exec.mr.MapredTask

思考过程:

排查1:
这里是由于count以及带有where的条件,都会走MapReduce,所以如果where可以,那么count肯定是没有问题的。
这里这个一条排除

排查2
那么接下到底是什么原因,只能查看详细日志了

上面看了日志,说是内存溢出,因此查看内存。有10G


看来不是内存的问题。

排查3

数据量非常少,会不会被认为小作业,也就是Uber运行模式。

cloudera我们禁用Uber模式:

或则如果原生的,我们同样可以通过配置禁用

<!--开启uber模式-->

<property>

   <name>mapreduce.job.ubertask.enable</name>

   <value>false</value>

</property>

问题解决,原因是因为让我们数据量非常小的时候,hadoop启用了Uber模式,内存配置不合适造成我们内存溢出。这样关闭Uber问题解决。

#############################
uber运行模式详解:

Uber运行模式对小作业进行优化,不会给每个任务分别申请分配Container资源,这些小任务将统一在一个Container中按照先执行map任务后执行reduce任务的顺序串行执行。那么什么样的任务,mapreduce框架会认为它是小任务呢?

map任务的数量不大于mapreduce.job.ubertask.maxmaps参数(默认值是9)的值;
reduce任务的数量不大于mapreduce.job.ubertask.maxreduces参数(默认值是1)的值;
输入文件大小不大于mapreduce.job.ubertask.maxbytes参数(默认为1个Block的字节大小)的值;
map任务和reduce任务需要的资源量不能大于MRAppMaster(mapreduce作业的ApplicationMaster)可用的资源总量;也就是说yarn.app.mapreduce.am.resource.mb必须大于mapreduce.map.memory.mb和mapreduce.reduce.memory.mb以及yarn.app .mapreduce.am.resource.cpu-vcores必须大于mapreduce.map.cpu.vcores和mapreduce.reduce.cpu.vcores以启用ubertask。 


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条