DataWorks熟能生巧系列直播第六期:数据集成日志详解

分享人:DataWorks技术支持团队


我们在开发者社区学习路线里有发布一个DataWorks的学习路线,里面包含了入门讲解和熟能生巧系列的直播内容,大家可以去学习一下,需要主账号登陆学习哦:https://developer.aliyun.com/learning/course/81

本期视频地址:https://developer.aliyun.com/learning/course/81/detail/1243


数据集成日志介绍

数据集成的任务日志主要分为两个部分,第一部分主要打印任务的整体状态,第二部分打印线程明细、各子线程执行过程以及执行结果。这两部分日志是分开的,但有一个共同的调度信息模块,记录运行机器、地域信息、项目名、节点信息、参数值等。此外,数据集成资源组有3种标识,我们通过标识能轻松识别数据集成跑在哪个资源组上。

DataWorks熟能生巧系列直播第六期:数据集成日志详解

日志的第一部分是打印出同步任务的四个主要状态,包括submit、wait、run、success/failed。submit是将任务从一级调度资源组提交到数据集成资源组上,让任务开始真正地执行,同一个任务只允许提交一次,多次提交会引起多实例job冲突,造成submit failed  ;wait表示等待数据集成资源组分配资源使该任务运行;run表示数据集成任务已经在资源组上运行了;success/failed表示任务执行成功或失败。

DataWorks熟能生巧系列直播第六期:数据集成日志详解

日志的第二部分主要是任务执行明细、子线程执行情况以及结果返回信息、数据写入信息等,可在运行日志中找detail log url这个标识符来查看详细日志。

DataWorks熟能生巧系列直播第六期:数据集成日志详解

这部分日志主要分为六个部分。第一部分是任务渲染完毕后提交的实际配置以及参数替换结果的Json配置。数据集成任务渲染之后的一个Json配置会提交到数据集成资源组上,由数据集成插件对该部分信息进行解析并开始执行各阶段任务;第二部分是数据源端的表信息和列信息;第三部分是odps表做数据清理;第四部分是根据配置的切分键生成SQL,并到数据源端根据切分的SQL进行数据查询,若是配置了querysql那么会执行querysql忽略切分键配置 ;第五部分是执行取数SQL并向目的端写入数据;第六部分是数据条款、速率的最终统计。

DataWorks熟能生巧系列直播第六期:数据集成日志详解

下面是一些常见问题和解决办法,比如:

  • 1、odps表不存在的问题:因为标准空间模式是开发和生产环境隔离的,如果odps仅创建了开发表没有生产表,那么数据集成任务发布运行的时候是找不到生产表的,需要创建对应的生产表。
  • 2、任务提交后一直是wait状态的问题:通常是资源不足导致任务运行不起来,比如使用公共数据集成资源组在高峰期争抢不到资源,或者使用独享资源组规格不够大,支持的并发数小于任务的并发数,或者其他同步任务占用了独享资源组,剩余资源不够启动任务等。
  • 3、任务一直处于run状态但是卡在某个百分点不往下进行的问题:首先检查是不是配置了presql或者postsql且执行时间很长,其次查看detail log排查是否某个子线程取数时数据库超时没返回结果
  • 4、读取数据库端数据时报链接超时异常的问题:数据库端通常执行超过15分钟会报network timeout的错误,这个超时时间可以在数据库端修改,或者优化取数sql控制取数时间小于超时时间
  • 5、网络不通的问题:网络不同通常是白名单未添加或者资源组没有绑定专有网络。数据集成添加数据源时有提供网络连通工具专门连通网络,我们在熟能生巧第4期也有详细讲解如何打通独享资源组和VPC数据源网络,大家可以参考一下


DataWorks熟能生巧系列直播第六期:数据集成日志详解

实例日志详解

下面看一个具体的实例。这里配置了一个rds MySQL同步到odps的任务,我们在DataWorks运维中心的周期任务中可以查到这个任务。

下图是提交到数据集成资源组的JSON配置

DataWorks熟能生巧系列直播第六期:数据集成日志详解


这里是第一部分日志,主要看这几个点。第二行这里看任务实际运行在哪个机器上;Paravalue是调度参数配置实际替换的值;srcDs这里是数据源名称;SKYNET_ID是任务的节点ID……其他的是一些系统参数。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


ALISA_TASK_EXEC_TARGET是运行所在的调度资源组,即一级任务分发的资源组。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


The Job[351576497] 中括号中就是数据集成的实例ID,后面Basecommon_group表示公共数据集成资源组,下面detail log是详细日志打印的地方。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


接下来看第二部分日志,也就是detail log。首先上面这块信息和第一部分基本一样,不再赘述。下图底部可看到DataX的版本,如果使用的资源组DataX版本过低,比如这里是2019年的版本,可以提工单升级资源组DataX版本。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


下面这块是任务渲染之后的状态,有非常明细的信息,比如datasource等,

可以帮助我们排查后续的任务运行情况。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


任务渲染信息下面,这一行有明显的从数据库端获取表名和列信息的标识,可以方便我们快速识别表结构,检查配置的列数左右两边是否一致。

DataWorks熟能生巧系列直播第六期:数据集成日志详解

下面是根据rds MySQL配置的spilt pk,根据这个ID值来对MySQL的数据进行切分,这里切分为了10块,切分后的SQL也有明细的打印。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


下面是实际的执行,这里生成了9个task,然后具体执行。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


这里执行的是1≤ID<2,然后把这两个划分到一个task group的一个task ID里,取出来的数据会写到odps端。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


执行完毕后会明确地提示子进程执行完毕,使用了多长时间,成功了多少条数据,失败了多少条数据。随后下面是周而复始地对SQL进行执行,并且向目的端写入。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


执行完之后打印出最终结果,一共9条数据,51个字节 ,速率是2b/s,全部写入成功了。基本上第二部分日志就对应了之前PPT中讲的那6个模块。

DataWorks熟能生巧系列直播第六期:数据集成日志详解


以上就是本次“数据集成日志详解”讲解的全部内容,有问题需要解答的同学可以扫码加一下我们的钉钉大群,群里有直播回放可以观看,技术支持的同学们也会回答大家的问题。

感谢大家的关注!

DataWorks熟能生巧系列直播第六期:数据集成日志详解



上一篇:《Storm分布式实时计算模式》——3.3 Trident spout


下一篇:盘它!40篇+阿里技术经典案例,看完必收藏(上)