汪洋,韩宁
(中国软件与技术服务股份有限公司,北京 100081)
摘要:在企业数据愈加庞大的今天,大批量数据交换也越加频繁,ETL是数据处理的主要技术手段,但极少有ETL工具能够兼顾自动调度及跨网段交换。在开源ETL工具Kettle的基础上,设计实现能够定制触发规则、根据调度周期自主运行交换作业的数据交换工具GoData,该工具支持跨节点跨网段的数据交换作业,同时具有节点监控及错误作业预警和消息推送功能,支持集群和分布式部署。该工具极大地满足了企业对数据交换业务的需求,在企业合理和充分利用现有数据资源方面发挥作用。
关键词:ETL;Kettle;GoData;跨网段数据交换;自动触发
中图分类号:TN919文献标识码:ADOI: 10.19358/j.issn.1674-7720.2016.24.006
引用格式:汪洋,韩宁. 基于开源代码的ETL工具的实现[J].微型机与应用,2016,35(24):19-21.
0引言
随着互联网技术的快速发展,企业内业务应用数量猛增,业务数据更是与日俱增,越来越多的企业在面对众多业务系统产生的日益庞大的业务数据时,显得束手无策,疲于应对。其原因大多在于企业内部信息化建设并没有形成统一的标准,各厂商、各系统、各层级间数据形态各异,无法实现互联互通数据共享,从而形成“信息孤岛”。而信息是现代企业的重要资源,是企业科学管理、决策分析的基础。因此,打破“信息孤岛”,实现数据高效集成和共享是企业数字信息化建设的关键问题。企业需要通过各种技术手段,把数据转换为信息、知识,最大程度地发挥数据的作用,而ETL便是主要的技术手段。
当前企业信息建设普遍存在以下问题:
(1)数据源众多
企业内层级部门众多,业务种类多样,数据来源更为广泛。
(2)数据差异性大
数据源众多的前提下,企业没有统一的数据标准造成业务数据差异性大,在拥有结构化数据的同时可能还存在大量半结构以及无结构数据。
(3)业务数据增长迅猛,数据利用率低下
据统计,大多数企业数据量每2~3年时间就会成倍增长,业务数据增长迅猛,而企业所关注的数据通常只占总数据量的2%~4%左右,并没有充分利用已存在的数据资源。
因此,设计和实现一个稳定、高效、符合企业形态、可以灵活部署的ETL工具势在必行。其在使企业实现信息和数据共享的同时,还能够帮助企业最大化地利用已存在的数据资源,完善企业数字化、信息化建设。
1Kettle介绍
ETL(Extraction, Tansformation, Loading)即是将数据从来源端经过抽取和转换后加载到目的端的过程。在ETL过程中,数据抽取即是从数据源中抽取数据的过程,也可从多个数据源中进行数据抽取;数据转换即是对抽取数据进行清洗,通过清洗策略和合并、转换以及数学运算等操作,去除数据中存在的错误和冗余,也可根据要求变换数据格式,保证数据质量;数据装载即是将转换好的数据保存到数据库或文件中。目前,越来越多的厂商致力于ETL工具的研发,而较常用的开源工具有Kettle、 Talend、 Octopus等,其中以开源Java工具Kettle应用最广,表现最为突出。
Kettle是一款用Java编写的开源ETL工具,其主要由转换(Transformation)和作业(Job)两部分组成。其中“转换”是由一系列步骤组成的,每一个步骤表示对一个或多个数据流进行特定的转换操作。而“作业”基于工作流模型,协调数据源、执行过程和相关依赖性的ETL活动,其将功能性和实体过程聚合起来,完成对整个工作流的控制。Kettle的概念模型如图1所示[1]。图1Kettle概念模型图2GoData架构图Kettle优点很多:具有可视化的流程设计工具,具备众多数据处理控件,拥有良好的插件扩展功能,支持集群操作等。可以说Kettle是当前ETL开源世界中功能最全面的一款工具[2]。但是每个产品都有其自身的局限性,Kettle也不能例外,比如缺少多频度自动触发调度机制,不能实现跨网段数据交换功能等。而这恰巧是多数企事业单位对数据交换业务的共性需求。
2GoData设计与实现
2.1设计初衷
GoData的设计初衷即是打造一款符合大多数企事业单位数据交换需求的ETL工具,其在Kettle的基础上,取长补短,调整作业运行机制,完善作业调度机制,加入作业触发机制,并在保证数据正确安全的基础上,实现跨网段的数据交换,加入作业监控,实现错误告警,整理日志记录机制,完善作业调度及授权等功能。
2.2设计实现
GoData产品架构图如图2所示,最底层为数据来源层,GoData可适配的数据来源众多,包括结构化数据、半结构化数据以及非机构化数据;协议适配层是GoData的网络适配协议,既包括RDBMS、HTTP等,也能对WebService、FTP等进行适配;功能组件层包含了管理组件、监控组件、安全组件、辅助组件以及核心组件;展示层则包含了产品对外的展示形式,包括图形、文本和表格等。
图3展示的是GoData的核心模块,主要包含:作业设计器、作业调度器、作业监控器三个模块。其中触发机制在流程设计时进行定制,然后在作业运行态时由调度器根据该作业的触发机制完成调度。各模块之间通过共享数据库进行通信。
GoData作业编辑器可以配置触发器的触发规则、作业的处理流程、节点配置、路由配置和集群配置等,同时可以对配置完成的作业进行调试。控制台执行器负责在后台调度执行所有的作业,并且根据作业来配置调用节点、路由和集群功能。节点管理模块负责配置管理多节点的数据信息。路由管理模块负责配置管理多节点路由信息。集群调度器负责在集群间进行数据分发和同步。接收适配器和发送适配器负责在多节点之间接收和发送业务数据。
GoData在Kettle的基础上加入了传输模块,该模块依托于作业编辑器对传输节点及路由的配置信息,将所交换数据正确安全地传输到目标节点。节点通信使用Netty作为底层支撑,使用“客户端/服务器”模式进行节点之间通信。通信的每个数据包会根据节点路由表的配置选择正确的链路,并且具有断点续传功能。发送数据的一方为数据源节点,接收数据的一方称为目标节点,传输过程经过的节点为路由节点。三种节点的角色在传输过程中可能会互换(例如,当下一个路由节点为目标节点的时候,路由节点和目标节点是同等的)。当源节点是路由节点的时候源节点和路由节点是等同的。数据包从源节点出发,到达第一个路由节点后,此路由节点从配置中读取它的下一个路由节点的配置信息,如果此节点就是目标节点,则不需要再传递数据包,如果还有下一个路由节点,那么使用客户端服务器模式连接路由节点,然后将这次路由信息保存到数据包中,最后发送数据包到下一个路由节点。这样重复以上所述步骤,最终到达目标节点。在传输过程中用户可以选择是否对传输信息进行二次加密,GoData在Kettle加密的基础上,使用DES加密协议,对每个数据包的数据区又进行二次加密,为了保证传输的数据量不变和传输过程中数据包协议的合理性,加密后数据包的大小保持不变。为了安全性的考虑,密钥不会包含在数据包中,而是使用双方协商的加密方式,在部署配置的时候设定密码。
此外,GoData具有Web监控及管理功能,业务人员能够远程对数据交换的各节点状态进行监控并对节点上运行的交换作业进行管理。因此,GoData系统分成两种主要节点,业务数据交换节点和Web监控管理节点。业务数据交换节点主要负责业务数据的读取、传输、转换和装载。系统的Web监控管理节点则负责监控所有交换节点的运行情况和远程控制交换作业的启停,并能在发生异常时进行告警消息推送。
在企业中,可以根据企业网络形态及具体业务需求部署多个GoData来完成数据交换任务,每一个GoData被认为是一个节点,在企业内网中,GoData根据配置的交换作业自主运行,并把日志信息同步到Web监控节点,相关人员可以登录Web监控节点对各节点运行情况进行监控。
2.3技术特点
GoData在保留Kettle原有优点的基础上,通过变更调度机制,加入触发、监控等机制后,具有了更多的优势。
(1)定制化调度机制
企业可以根据自身数据交换业务的需求,定制数据交换作业触发机制,支持单次运行和多次重复运行两种调度机制,设置完成后,由GoData根据触发规则自主调度作业运行,收集作业日志信息,提交作业运行数据。
(2)安全高效的传输机制
在文件传输时,将文件划分为多个数据包,支持传输加密和断点续传。不但实现了跨网段的数据交换作业,而且能有效节省传输时间,保证数据安全。解决了实际业务中数据跨层级交换的难题,简化数据交换流程和步骤,提高了数据交换效率,保证了交换数据的质量。
(3)运行监控
加入了监控组件,可以对各数据交换节点进行远程监控,启停数据交换作业,并在作业异常时发出错误预警,推送预警信息到微信端,增强数据交换响应机制。
(4)分布式架构
GoData支持分布式部署,多个GoData之间可以相互通信,同时GoData支持集群,一个作业可以使用集群方式来执行和运算。因此企业可以根据具体数据业务调配GoData的使用,并且根据数据量来选择是否使用集群。这种可伸缩的分布式架构可实现批量作业在多台机器、多个节点上同时进行,能够极大地提升数据交换作业的处理效率。
(5)先进的容错机制
经过多番测试及完善,在意外断网或断电情况发生时,GoData能够在异常发生后快速恢复作业,提高了数据交换的健壮性。
(6)大吞吐量,运行稳定
目前,GoData已经在多个项目中得到运用,每小时吞吐量超过1 000万条数据,运行稳定。
3结论
GoData在开源软件Kettle的基础上加入了触发机制,完善调度机制,增加了跨网交换传输、远程监控管理以及容错机制等,能够很好地为企业数据信息建设服务,满足企业进行大批量高频次数据交换的需求,使企业能够更深入地利用数据资源,实现数据的价值最大化,帮助企业制订计划,运营决策。
参考文献
[1] 刘充.基于KETTLE的高校多源异构数据集成研究及实践[J].电子设计工程,2015,23(10):24 26.
[2] 闫小爽,李忠华,李璐,等.开源ETL软件在智能化集成系统中的应用[J].工程应用,2009(4):46 48.