开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度
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 ]
then
echo "Param error !"
echo "Usage: $0 progname para expara"
exit
fi #------------------------------------------------------------------------------
# 第一步: 接收参数
#------------------------------------------------------------------------------
ProgName=$
Para=$
ExpPara=$ #------------------------------------------------------------------------------
# 第二步: 运行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 ]
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、完成模块代码的编写后,如下:

开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度的更多相关文章
- etl学习系列1——etl工具安装
ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...
- 集团公司(嵌入ETL工具)财务报表系统解决方案
集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子 ...
- Kettle实现数据抽取、转换、装入和加载数据-数据转移ETL工具
原文地址:http://www.xue51.com/soft/5341.html Kettle是来自国外的一款开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需 ...
- 大数据之ETL工具Kettle的--1功能介绍
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用. ...
- ETL工具的功能和kettle如何来提供这些功能
不多说,直接上干货! 大家会有一个疑惑,本系列博客是Kettle,那怎么扯上ETL呢? Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了 ...
- 集团公司(嵌入ETL工具)財务报表系统解决方式
集团公司(嵌入ETL工具)財务报表系统解决方式 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包含:金矿.铜矿.房产.化纤等.因为子公司在业务上的差异.子 ...
- ETL工具Datax、sqoop、kettle 的区别
一.Sqoop主要特点: 1.可以将关系型数据库中的数据导入到hdfs,hive,hbase等hadoop组件中,也可以将hadoop组件中的数据导入到关系型数据库中: 2.sqoop在导入导出数据时 ...
- Quartz.net开源作业调度
Quartz.net开源作业调度框架使用详解 前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron- ...
- Quartz.NET开源作业调度框架系列
Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可 ...
随机推荐
- 关于XML(可扩展标记语言)的基础知识与写法
XML(Extensible Markup Language) HTML:超文本标记语言,主要用来展示 XML:可扩展标记语言,用来做数据传输XML特点:1.树状结构,有且只有一个根2.标签名自定 ...
- 屏幕适配/autoLayout autoresizingMask
#pragma mark-- 屏幕适配/autoLayout autoresizingMask 1> 发展历程 代码计算frame -> autoreszing(父控件和子控件的关系) - ...
- python 写csv文件
一.只有一列内容: def create_file(self, a, b): # 上传csv 文件 # os.remove('openfile.csv') open_file = open('5000 ...
- VB6之SendMessage模拟拖放事件
原文链接:http://hi.baidu.com/coo_boi/item/e1e0f5ab45bddbdd5af191df 网上找了个C++的翻一下,原文链接:http://www.cnblogs. ...
- Hadoop各种进程的配置文件及其位置说明
hdfs DameNode core-site.xml <!--设置主机的IP和端口--> <property> <name>fs.defaultFS</na ...
- Hadoop出现的错误及处理
1.local host is: (unknown); destination host is: "yun-ubuntu":8031; 原因:yun-ubuntu这个host 并不 ...
- Immutable的认识
Facebook 工程师 Lee Byron 花费 3 年时间打造,与 React 同期出现,但没有被默认放到 React 工具集里(React 提供了简化的 Helper).它内部实现了一套完整的 ...
- Go学习笔记(一)Let's 干
加 Golang学习 QQ群共同学习进步成家立业 ^-^ 群号:96933959 简介 Go是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言.为了方便搜索和识 ...
- Spring ContentNegotiatingViewResolver
1. Spring 返回视图采用了ViewResolver,如果一般是jsp的话,可以采用InternalResourceViewResolver. 2.还可以通过ContentNegotiating ...
- 京东JOS API 接入使用笔记
商户开设了京东店.淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存. 首先得在 ...