本文将为您介绍自定义资源组在使用、配置文件、命令等方面的常见问题和解决方案。

应用场景

  • 保证运行资源:由于集群共享默认资源组,会存在水位变高导致任务长时间等待的情况。如果您对任务有较高的资源使用需求,可以使用自定义资源组来自建任务运行集群。
  • 连通网络:由于默认资源组无法连通VPC环境下的数据库,您可以使用自定义资源组进行网络连通。
  • 用于调度资源组:调度槽位资源紧张的情况下,您可以使用自定义资源组。
  • 提升并发能力:默认资源组的运行槽位有限,您可以通过自定义资源组扩大槽位资源,允许更多的并发任务同时调度运行。

使用限制

  • 1台ECS只能注册到1个自定义资源组下,1个自定义资源组可以添加多个ECS。
  • 经典网络和专有网络注册的区别为:经典网络是主机名称,专有网络是UUID。
  • 1个自定义资源中只允许存在1种网络类型。
  • 不支持运行手动任务实例。
  • ECS需要具备公网访问能力,ECS可以配置公网IP、EIP、NAT网关SNAT。

配置文件

通过DataWorks界面引导,完成自定义资源组的安装后,您可以登录ECS查看agent插件的下述信息。

  • 默认安装路径:/home/admin/, 默认路径下通常会有以下目录信息。
    • alisatasknode:agent有关配置和命令所在目录。
    • datax和datax-on-flume:数据同步插件库和配置所在目录。
      目录
  • agent有关命令

    当前支持对agent进程进行stop/start/restart等命令操作,具体操作命令如下:

    /home/admin/alisatasknode/target/alisatasknode/bin/serverctl start/stop/restart
  • 运行日志

    agent运行日志有以下2个存放路径:

    • /home/admin/alisatasknode/taskinfo/:存放Shell脚本运行的日志信息,和DataWorks节点运行日志页面中查看的结果一致。
    • /home/admin/alisatasknode/logs:alisatasknode.log日志文件中存放的是agent插件的运行信息,如接收到的任务运行/kill操作、agent心跳状态等。
    • /home/admin/datax3/log:存放DataX任务的详细运行日志,遇到任务执行失败,可以查看该部分日志查找原因。

监控手段

您可以通过下述方法监控agent进程的运行状态,在监控到agent进程退出后,可以及时进行恢复。

  1. root用户登录到ECS机器。
  2. 执行命令wget https://alisaproxy.shuju.aliyun.com/install_monitor.sh --no-check-certificate
  3. 执行命令sh install_monitor.sh,监控日志默认存放在/home/admin/alisatasknode/monitor/monitor.log中。

DataWorks调度分类

自定义资源组在DataWorks调度体系中使用, 当前DataWorks调度体系分为一级调度资源和二级运行资源。

  • 一级调度资源:进入运维中心 > 周期实例 > 属性页面查看一级调度资源,用来调度实例。
  • 二级运行资源:进入数据集成 > 同步资源管理 > 资源组页面查看二级任务运行资源。

自定义资源组的使用

  • 配置一级调度资源
    登录DataWorks控制台,进入资源列表页面,创建自定义资源组。
    说明 在该页面创建的调度资源适用于Shell任务,配置的是一级调度资源。
  • 配置二级运行资源
    1. 登录DataWorks控制台,进入数据集成 > 同步资源管理 > 资源组页面新增自定义资源组。
      新建自定义资源
      说明 此页面添加的资源组仅用于数据同步任务,配置的是二级运行资源。
    2. 新建完成后,能且只能在数据开发页面配置任务时,在通道控制 > 任务资源组配置中选择。
      通道控制

自定义资源组的常见问题

  • 常见问题一:添加ECS资源组时,报错gateway already exists。
    问题已
    1. 报错提示对应ECS已经在gateway中注册过,因为1个ECS只能添加到1个自定义资源组下,所以需要您在资源列表数据集成 > 同步资源管理 > 资源组页面,查看是否存在同名或同UUID的自定义资源组。
    2. 如果工作空间中没有发现对应的自定义资源组,则收集request ID信息进行咨询。
  • 常见问题二:添加自定义资源组后状态不可用。
    • 查看alisatasknode.log日志,确认是否有心跳上报302的情况。如果上报心跳302,则可以排查下述问题。
      • 查看UUID是否一致。对比自定义资源组页面的UUID信息和ECS上执行命令dmidecode|grep UUID的结果是否一致。
        说明 此处的UUID区分大小写。
      • 如果UUID不一致,需要填写正确的UUID并重新安装agent。
        说明 dmidecode命令在3.0.5版本及之前版本会是大写的方式显示UUID, 如果升级到3.1.2或以上版本, 则会小写显示UUID,此时会导致心跳异常,需要重新安装agent进行恢复。
      • 确认config.properties中配置的用户名及密码是否和自定义资源组添加界面一致,如果不一致,请参见agent插件安装界面给出的命令重新安装agent。
      • 如果UUID和密码信息正确,请查看config.properties中的字段node.uuid.enable,针对VPC类型的ECS,该字段的值需要为true。如果VPC类型下node.uuid.enable的值为false,则修改为true,重启agent进程即可。
  • 查看alisatasknode.log日志,确认是否存在connection timeout的信息。如果存在,则可以进行如下处理:
    1. 查看ECS是否有公网能力,如公网IP、EIP、NAT网关SNAT IP,可以执行ping www.taobao.com确认是否可以连通。
    2. 如果ECS有公网能力,请查看ECS的安全组配置中内网出方向或公网出方向是否进行访问限制。如果有访问限制,需要对gateway的IP和端口放行。
  • 场景三:ECS状态正常,但Shell任务执行失败。
    • 任务执行异常,运行日志显示如下:
      日志

      您可以进行如下操作:

      • 查看alisatasknode.log日志中具体的报错信息,可以根据T3_0699121848关键字进行搜索。
      • 登录ECS,切换到admin用户下,执行python -V命令查看Python版本是否为2.7或2.6版本。
        说明 agent当前支持的是Python2.7或2.6版本,通常Python版本不对会导致replace user hive conf error的错误。
        agent
    • 查看DataWorks运行日志,找不到对应的文件。
      对应文件

      您可以登录ECS并切换到admin用户,执行命令sh -x脚本名,确认是否可以正常执行,根据报错信息进行调试。

  • 常见错误四:自定义资源组下任务执行OOM。
    • 报错问题
      获取用户运行报错日志如下图所示,提示无法分配内存给作业线程。
      报错问题
  • 排查思路

    自定义资源组创建时设置的内存数决定了资源组可提供的槽位能力。资源组内的系统进程和agent进程也会占用一部分内存,不能将ECS实例所有内存都用于槽位资源,会导致高并发下某些作业OOM。

  • 解决方法

    建议您调小自定义资源组下的内存数设置,可以考虑预留2G的空间给系统和agent进程使用。如果还有其它进程,则需预留更多的内存。