文档章节

开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度

 老衲大海
发布于 2017/08/17 10:13
字数 875
阅读 369
收藏 0

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的数据导进到关系型数据库中。(摘自百科)

3、Kettle开源软件:水壶(中文名)

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。(摘自百科)

上面三个开源ETL工具的简介都摘自百科内容,个人kettle用的比较多,其他两个用的比较少。其实不管是开源还是商用ETL工具都自带了作业调度,但其从使用的灵活性和简易性来说,那就不如第三方专业做批量作业调度的工具了。既然都是工具,是为了方便我们使用人员,那干嘛不使用更好的工具来减轻我们的工作量,从而让我们将精力更多的投入到业务本身去呢?这里就给大家分享一个第三方开源批量作业自动化工具TASKCTL(开源社区地址:https://www.oschina.net/p/taskctl),看TASKCTL如何轻松实现开源ETL工具Datax、Sqoop、Kettle等的作业批量调度。废话不多说,直接上干货。

TASKCTL采用任务插件驱动机制,因此,可支持各种存储过程、各种脚本、以及诸如Datastage\Informatica\kettle等各种ETL工具任务,可以完成串行、并行、依赖、互斥、执行计划、定时、容错、循环、条件分支、远程、负载均衡、自定义条件等各种不同的核心调度功能。

下面以调度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、完成模块代码的编写后,如下:

 

 

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 20
码字总数 13635
作品 0
石家庄
Datax与hadoop2.x兼容部署与实际项目应用工作记录分享

一、概述 Hadoop的版本更新挺快的,已经到了2.4,但是其周边工具的更新速度还是比较慢的,一些旧的周边工具版本对hadoop2.x的兼容性做得还不完善,特别是sqoop。最近,在为hadoop2.2.0找适合...

zengzhaozheng
07/02
0
0
ETL for Oracle to PostgreSQL 3 - DATAX

标签 PostgreSQL , Oracle , ETL , datax 背景 Datax是阿里巴巴开源的一款ETL工具,在云端可以作为服务直接使用,同时用户也可以下载开源代码自行部署。 1 开源Datax http://gitlab.alibaba...

德哥
05/06
0
0
数据进入Maxcompute的N种方式,大数据实战Demo系统数据上云实践

2018 “MaxCompute开发者交流”钉钉群直播分享,由阿里云数据技术专家彬甫带来以“数据进入MaxCompute的N种方式”为题的演讲。本文讲述了在阿里云内部开发了一个实战Demo系统,它能够实现自动...

云迹九州
07/27
0
0
2018年5月大数据ACP考试题目回顾

大数据 ACP 考试考试题目回顾 参数 任务调度时间为,那么的结果为 A. 是 B. 否 答案: A 解析: 可以任意分解组合,即某一时刻进行调度就显示某个时间的值,精确到秒 union all t1和t2两张表...

卓见架构狮
05/25
0
0
DataX工具迁移DRDS到DRDS使用介绍

DATAX介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等...

红隐
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
54
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部