大数据计算MaxCompute我的odps任务中途总是会失败一次,报错如下,帮忙看看是为什么?
{“t”:”SERVICE_MODE”,”a”:{“f”:{“odps.service.mode”:”off”}},”d”:”ODPS-0010000:System internal error – Service mode falling back to batch mode to rerun due to AllOrNothingResourceWaitTimeout”}
https://logview.aliyun.com/logview?h=http://service.cn-hangzhou.maxcompute.aliyun-inc.com/api&p=bigdata_poc_zj&i=20231101014706341gxqm24hxk9&token=ZFV2Q0hRZWE3WVArMWVBSEhKNjI5RC9paXpnPSxPRFBTX09CTzpwNF8yMDM0NjAwOTM5NjkyNzgyNjksMTcwMTM5NTIyNix7IlN0YXRlbWVudCI6W3siQWN0aW9uIjpbIm9kcHM6UmVhZCJdLCJFZmZlY3QiOiJBbGxvdyIsIlJlc291cmNlIjpbImFjczpvZHBzOio6cHJvamVjdHMvYmlnZGF0YV9wb2NfemovaW5zdGFuY2VzLzIwMjMxMTAxMDE0NzA2MzQxZ3hxbTI0aHhrOSJdfV0sIlZlcnNpb24iOiIxIn0=&
任务整体是成功的,过程中是online job失败后,回退到了offline。报错也是回退的时候报的我理解。Fuxi Job的两种作业类型:Online Job(service mode)和Offline Job。对于Offline的作业而言,当每次提交作业时在Fuxi上都会有一个环境准备的时间,针对大数据量并且不需要返回查询结果的作业比较合适,而对小数据量并且实时作业要求比较高的作业是不合适的。所以Fuxi提供为什么ServiceMode这种准实时的作业形式,也是online,首先会有一个服务去预先申请计算一些资源并加载出来,比如会预先分配一 万个nstance,当有作业提交时会根据作业规模分配一些Instance进行执行,这样就省去环境准备的时间,所以就会比较快。online不等资源且不保证成功。如果service mode失败,比如instance个数超过1000,或者运行超过10分钟,就会退回以Offline模式重跑。可以set odps.service.mode=off;这样就直接跑完了,不会再跑online
,此回答整理自钉群“MaxCompute开发者社区2群”
根据您提供的错误信息,问题可能是由于MaxCompute的在线服务模式被关闭导致的。错误信息中提到了”AllOrNothingResourceWaitTimeout”,这意味着任务在等待资源时超时,导致任务失败。
要解决这个问题,您可以尝试以下方法:
odps.service.timeout
参数来增加任务的超时时间。例如,将超时时间设置为30分钟:检查资源可用性:确保您的MaxCompute环境中有足够的资源(如内存、CPU等)来运行任务。如果资源不足,任务可能会因为等待资源而超时。
优化SQL查询:检查您的SQL查询是否存在性能问题,如低效的JOIN操作、大量的数据筛选等。优化查询可以提高任务的执行效率,从而减少任务的超时风险。
检查依赖关系:确保您的任务依赖的其他任务或作业已经成功完成。如果依赖的任务失败,可能会导致当前任务失败。
查看日志:您可以查看MaxCompute的日志以获取更多关于任务失败原因的信息。日志中可能包含有关错误的详细信息和建议的解决方案。
根据您的描述和提供的日志信息,看起来您的MaxCompute任务遇到了一个内部系统错误,导致它从批处理模式退回到了服务模式重新运行,这是由于“AllOrNothingResourceWaitTimeout”(所有或无等待超时)造成的。
这个问题可能是由于资源不足或无法及时调度而导致的,例如:存储空间不足、内存不足、网络拥塞等情况。您可以考虑以下几种解决方案: