赞
踩
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,经常需要对各种数据进行处理、转换、迁移,所以了解并掌握一种ETL工具的使用,是必不可少的。
Kettle就是一款国外开源的强大的ETL工具。
Kettle是纯Java开发、开源的ETL工具,用于数据库间的数据迁移。可以在Linux、Windows、Unix中运行。有图形界面,也有命令脚本,还可以二次开发。
Kettle中文名称叫水壶,允许管理来自不同数据库的数据,把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle 中有两种脚本文件Transformation和Job,Transformation完成针对数据的基础转换,Job则完成整个工作流的控制。通过图形界面设计实现做什么业务,并在 Job 下的 start 模块,有一个定时功能,可以每日,每周等方式进行定时。
Kettle官网地址是Kettle官网
Kettle中文网地址是Kettle中文网
安装Kettle前需要先安装jdk以及配置环境变量
Kettle的执行分为两个层次:Job(作业,.kjb后缀)和Transformation(转换,.ktr后缀)
简单来说,一个转换就是一个ETL的过程,而作业则是多个转换、作业的集合,在作业中可以对转换或作业进行调度、定时任务等。
在实际过程中,写的流程不能很复杂,当数据抽取需要多步骤时,需要分成多个转换,再集成到一个作业里顺序摆放,然后执行即可。
Kettle里有不同的工具,用于ETL的不同阶段。主要工具如下:
-Spoon:图形化工具,用于快速设计和维护复杂的ETL工作流。
-Kitchen:运行作业的命令行工具。
-Pan:运行转换的命令行工具。
-Carte:轻量级的(大概1MB)Web服务器,用来远程执行转换或作业,一个运行有Carte进程的机器可以作为从服务器,从服务器是Kettle集群的一部分。
Spoon是Kettle的集成开发环境(IDE)。它基于SWT提供了图形化的用户接口,主要用于ETL的设计。
在Kettle安装目录下,有启动Spoon的脚本。如Windows下的Spoon.bat,类UNIX下的spoon.sh。Windows用户还可以通过执行Kettle.exe启动Spoon。
作业和转换可以在图形界面里执行,但这只适合在开发、测试和调试阶段。在开发完成后,需要部署到实际运行环境中,在部署阶段Spoon就很少用到了。
部署阶段一般需要通过命令行执行,需要把命令行放到Shell脚本中,并定时调度这个脚本。Kitchen和Pan命令行工具就是用于这个阶段,用于实际的生产环境。
Kettle的Kitchen和Pan工具是Kettle的命令行执行程序。实际上,Pan和Kitchen只是在Kettle执行引擎上的封装。它们只是解释命令行参数,调用并把这些参数传递给Kettle引擎。
Kitchen和Pan在概念和用法上都非常相近,这两个命令的参数也基本是一样的。唯一不同的是Kitchen用于执行作业,Pan用于执行转换。在使用命令行执行作业或转换时,需要重点考虑网络传输的性能。Kettle数据流将数据作为本地行集缓存。如果数据源和目标之间需要通过网络传输大量数据,将Kettle部署于源或目标服务器上会极大提升性能。
Kitchen和Pan都通过脚本的方式启动,在Windows系统下,脚本名称是Kitchen.bat和Pan.bat,在类UNIX系统下,脚本名称是Kitchen.sh和Pan.sh。在执行这些脚本以及Kettle带的其它脚本时,要把Kettle目录切换为控制台的当前目录。类UNIX系统的脚本默认情况下是不能执行的,必须使用chmod目录使脚本可执行。
Kettle是用Java语言开发的,因此在使用Kettle命令行时需要注意匹配Java版本。例如Kettle8.2.0版本需要JDK 1.8的支持。这样就能在Spoon的图形界面下进行设计开发调试,然后用命令行执行保存的转换或作业(.ktr或.kjb文件),秉承Java程序一次编译到处运行的理念。
Carte服务用于执行一个作业,就想Kitchen一样。但和Kitchen不同的是,Carte是一个服务,一直在后台运行,而Kitchen只是运行一个作业就退出。
当Carte在运行时,一直在某个端口监听HTTP请求。远程机器客户端给Carte发出一个请求,在请求里包含了作业的定义。当Carte接到了这样的请求后,它验证请求并执行请求里的作业。Carte也支持其它几种类型的请求。这些请求用于获取Carte的执行进度、监控信息等。
Carte是Kettle集群中一个重要的构建快。集群可将单个工作或转换分成几部分,在Carte服务器的多个计算机上并行执行,因此可以分散工作负载。
启动Carte服务:
- Windows系统下:进入Kettle目录(data-integeration),输入Carte.bat ip port
- Linux系统下:cd到data-integeration目录,输入nohup/carte.sh ip port
nohup命令(no hang up:不挂起)将进程放到后台执行,并将进程的PID输出到终端
文章所涉及的资料来自互联网整理和个人总结,如有侵权的地方,请联系本人删除,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。