【原创】大叔问题定位分享(33)oozie提交任务报错ArithmeticException: / by zero

oozie提交workflow后执行task报错:

2019-07-04 17:19:00,559 ERROR [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: ERROR IN CONTACTING RM.
java.lang.ArithmeticException: / by zero
    at org.apache.hadoop.mapreduce.v2.app.rm.ResourceCalculatorUtils.computeAvailableContainers(ResourceCalculatorUtils.java:38)
    at org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator$ScheduledRequests.assign(RMContainerAllocator.java:981)
    at org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator$ScheduledRequests.access$200(RMContainerAllocator.java:873)
    at org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator.heartbeat(RMContainerAllocator.java:252)
    at org.apache.hadoop.mapreduce.v2.app.rm.RMCommunicator$1.run(RMCommunicator.java:282)
    at java.lang.Thread.run(Thread.java:748)

查看代码

org.apache.hadoop.mapreduce.v2.app.rm.ResourceCalculatorUtils

    public static int computeAvailableContainers(Resource available, Resource required, EnumSet<SchedulerResourceTypes> resourceTypes) {
        return resourceTypes.contains(SchedulerResourceTypes.CPU)?Math.min(available.getMemory() / required.getMemory(), available.getVirtualCores() / required.getVirtualCores()):available.getMemory() / required.getMemory();
    }

应该是以下两者之一为0

required.getMemory()
required.getVirtualCores()

注意之前的日志还有一行

2019-07-04 17:18:58,557 INFO [Thread-51] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: mapResourceRequest:<memory:0, vCores:1>

问题在于required.getMemory()=0

从job history server查看失败task对应的application的conf发现问题

              <tr>
                <td>
                  mapreduce.map.memory.mb
                </td>
                <td>
                  0
                </td>
                <td>
                  job.xml ⬅ programatically
                </td>
              </tr>

查看oozie代码发现

org.apache.oozie.action.hadoop.JavaActionExecutor

    private static void injectLauncherProperties(Configuration srcConf, Configuration launcherConf) {
        for (Map.Entry<String, String> entry : srcConf) {
            if (entry.getKey().startsWith("oozie.launcher.")) {
                String name = entry.getKey().substring("oozie.launcher.".length());
                String value = entry.getValue();
                // setting original KEY
                launcherConf.set(entry.getKey(), value);
                // setting un-prefixed key (to allow Hadoop job config
                // for the launcher job
                launcherConf.set(name, value);
            }
        }
    }

所有的hadoop配置,都需要增加 oozie.launcher. 前缀(大量的组件都是这么搞得),即需要传递参数

oozie.launcher.mapreduce.map.memory.mb=1024

问题解决

原文地址:https://www.cnblogs.com/barneywill/p/11140996.html

时间: 2024-08-03 16:01:09

【原创】大叔问题定位分享(33)oozie提交任务报错ArithmeticException: / by zero的相关文章

微软私有云分享(R2)10-SCVMM报错干货一小波

对于运维工作而言,稳定运行当然没啥说的,让人头痛的都是出现了一大波错误却无法解决. 今天为大家分享一下我在SCVMM2012(SP1和R2) 中遇到的一大波错误. =======都是干货============ 12704,无法连接到Hyper-V服务,一般来说这时候是网络有问题造成SCVMM2012 R2与Hyper-V主机主机失去联系.这时候要先排查网络,看用Hyper-V能否连接,连接不了就重启机器吧. 25322,群集悲剧,新增加的群集节点配置和其他节点不一样,这个就是看提示,慢慢让全新

MyEclipse8.6中提交SVN报错

上周五(11月27日)的时候,从TortoiseSVN提交项目报错,然后直接从MyEclipse中检出来,修改后提交同样报错. MyEclipse8.6中提交SVN报错,错误提示如下: commit -m "车牌号码中的字母自动转为大写" C:/Workspaces/VIMSystem/src/com/anche/action/ActIcRecord.java svn: Commit failed (details follow): svn: Can't write activity

git提交是报错没有change-id的解决方法

git提交是报错没有change-id的解决方法: 1.先仔细查看报错内容,查出是哪天提交记录缺少change-id 2.如果是最近的一条缺少,则直接执行git commit --amend "提交信息",以对上次提交的内容进行修改: 如果是前面几条都缺少change-id,则先 git reset --soft ****ddfd(恢复到最近一次有change-id的提交记录),重新提交$ git commit -am "提交信息" 重新提交修改记录 3.执行git

git连接不上远程仓库---visualstudio提交代码报错:no upstream configured for branch &#39;master&#39;

1,新建文件夹,在文件下下鼠标右键git bush--->git init,初始化仓库: 2,设置gitthub仓库地址:git remote add origin https://github.com/z*****g/lm.git 3,git pull origin master 4,git push --set-upstream origin master,关联一个远程分支,并从这个分支上传下带代码 git branch查看分支 git add . git commit -m "提交注

【原创】大叔问题定位分享(29)datanode启动报错:50020端口被占用

集群中有一台datanode一直启动报错如下: java.net.BindException: Problem binding to [$server1:50020] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException 查看端口是否被占用 # netstat -tnlp|grep 50020 发现没有进程在监听50020端

【原创】大叔问题定位分享(34)Spring的RestTemplate请求json数据后内容被修改

先看代码 org.springframework.web.client.RestTemplate public RestTemplate() { this.messageConverters = new ArrayList(); this.errorHandler = new DefaultResponseErrorHandler(); this.headersExtractor = new RestTemplate.HeadersExtractor(); this.messageConvert

【原创】大叔问题定位分享(36)openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil

openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil This function returns nil if the request body has not been read, the request body has been read into disk temporary files, or the request body has zero size. 打开nginx调试日志 error_log /var/log/ng

【原创】问题定位分享(19)spark task在executors上分布不均

最近提交一个spark应用之后发现执行非常慢,点开spark web ui之后发现卡在一个job的一个stage上,这个stage有100000个task,但是绝大部分task都分配到两个executor上,其他executor非常空闲,what happened? 查看spark task分配逻辑发现,有一个data locality即数据本地性的特性,详见 https://www.cnblogs.com/barneywill/p/10152497.html即会按照locality级别的优先级

【原创】问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat at org.apache.spark.sql.hive.SparkHiveWrit