本文作者:龙利民
企业介绍:
我们在使用MaxCompute的时候,我们其实非常期望知道当前有多少任务在跑,哪些任务耗时长,哪些任务已经完成,并且能通过任务的logview来分析任务耗时长的原因。
任务状态监控
MaxCompute的任务状态分Running和Terminated, 其中Running是包含:正在运行和等待运行的两种状态,Terminated包含:完成、失败、cancel的任务三个状态。阿里云提供了获取上述2种状态的SDK函数,odps.list_instances(status=Running|Terminated, start_time=开始时间,结束时间)。为了实现秒级别更新任务状态我们可以用以下思路来实现。
1、对于已经running的任务,我们需要快速更新它的状态,有可能已经完成了;
2、不断获取新的任务状态。
我们用Mysql来记录任务的状态表设计如下:
CREATE TABLE maxcompute_task (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
instanceid varchar(255) DEFAULT NULL comment '任务实例ID',
logview varchar(1024) DEFAULT NULL comment 'logview链接,查看问题非常有用',
start_time varchar() DEFAULT NULL comment '任务开始时间',
end_time varchar() DEFAULT NULL comment '任务结束时间',
cast_time varchar(32) DEFAULT NULL comment '耗时',
project_name varchar(255) DEFAULT NULL comment '项目名',
status varchar() DEFAULT NULL comment '任务状态',
PRIMARY KEY (id),
UNIQUE KEY instanceid (instanceid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
下面的页面可以查看当前的任务耗时,开始时间,对超过1小时的任务颜色使用红色标注,并且能查看logview,还能对任务进行取消,非常方便。