aj
想知道TASKCTL对开源ETL工具的支撑情况,如阿里开源的DATAX、SQOOP等
加菲盐
其实我也很想了解一下TASKCTL对这方面的支持,目前我知道TASKCTL对于开源ETL来说,支持kettle的调度,但对于DATAX、SQOOP等其他开源ETL工具是否支持,以及支持情况就不是很清楚了,请taskctl高手帮忙解答。
沙发 发表于 2017-08-16 10:13 回复(0)
kitleer
你好,我注意到你们是准备采用开源的大数据同步工具。
1、阿里开源软件:DataX
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
2、Apache开源软件:Sqoop
Sqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
TASKCTL采用任务插件机制,以适配不同类型的任务,采用TASKCTL任务插件调度作业,具有统一的操作命令,统一的监控方式,统一的运维方式。下面以调度DataX作业类型为例:
$ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./mysql2odps.json
我们可以看到调用datax,实际上是调用python脚本。
因此我们可以直接在taskctl中配置作业的xml片段如下:
<python> <name>datax_job</name> <progname>datax.py</progname> -- 此处有可能需要定位到cd {YOUR_DATAX_DIR_BIN} <para>./mysql2odps.json</para> </python>
当然,如果要使datax作业类型看起来更加个性化点(或者在插件中适配点什么)。我们还可以datax配置单独的任务插件,步骤如下:
1、编写调用datax的脚本文件cprundataxjob.sh:
#!bin/bash if [ $# -ne 3 ] then echo "Param error !" echo "Usage: $0 progname para expara" exit 126 fi #------------------------------------------------------------------------------ # 第一步: 接收参数 #------------------------------------------------------------------------------ ProgName=$1 Para=$2 ExpPara=$3 #------------------------------------------------------------------------------ # 第二步: 运行JOB,并等待结果 #------------------------------------------------------------------------------ #cd {YOUR_DATAX_DIR_BIN} --相当于TASKCTL中的exppara环境参数 cd ${ExpPara} #python datax.py ./mysql2odps.json python datax.py ${ProgName} #收集datax.py执行结果 retinfo=$? #------------------------------------------------------------------------------ # 第四步: 插件返回 #------------------------------------------------------------------------------ #根据retinfo的信息,返回给TASKCTL if [ ${retinfo} -eq 0 ] then echo "" echo "Run job success !" else echo "" echo "Run job failed !" fi exit ${retinfo}
配置后,把cprundataxjob.sh放到TASKCTL服务端的$TASKCTLDIR/src/plugin/dataxjob/shell/目录下
2、在TASKCTL桌面软件admin中配置插件如下图:
3、在designer中编写模块代码如下:
<dataxjob> <name>MainModul_JobNode0</name> <progname>./mysql2odps.json</progname> <exppara>[你的datax安装路径]</exppara> </dataxjob>
4、完成模块代码的编写后,如下:
板凳 发表于 2017-08-16 10:54 回复(1)
山兔
6666
地板 发表于 2017-08-16 11:03 回复(0)
请登录后评论~