比较五款企业级ETL工具,助你选出适合项目的解决方案

译文
开发 开发工具
我们在此为大家罗列和比较了时下五款企业级ETL工具的优缺点,希望能够帮助您找出最适合手头项目的解决方案。

[[262008]]

【51CTO.com快译】在商业环境中,随着各类数据量的不断猛增,企业对于那些以ETL为基本要素的数据仓库项目和高级分析系统的需求也在不断增多。此处ETL所对应的是数据仓库的三个概念:提取(Extracting)、转换(Transforming)和加载(Loading)。其主要流程包括:

  1. 从不同的外部源提取数据。
  2. 将数据转换为所需的业务模型。
  3. 将数据加载到新的仓库之中。

可见,ETL是整个数据迁移任务的一个子集。在《数据仓库ETL工具包(Warehouse ETL Toolkit)》一书中(请详见https://www.amazon.com/Data-Warehouse-ETL-Toolkit-Techniques-Extracting/dp/0764567578),定义了ETL的三个基本特征:

  • 以适当的格式下载数据,并予以分析。
  • 它包含有许多额外的信息。
  • 系统会记录数据的来源。

因此,数据不应该只是简单地从一处被加载到另一处,而应该在加载的过程中得到改进与优化。例如:ETL开发人员可以添加新的技术属性,去跟踪数据在数据库中的显示方式、数据被更改的时间及方式。

ETL的流程步骤

通常,Web程序员可以将ETL架构想象成如下图所示的三个区域:

  • 数据源。
  • 中间区域。
  • 数据接收器。

数据流从源头向接收器移动。由于每个阶段都非常复杂,因此创建ETL软件的过程往往会包括如下不同的挑战:

  1. 外部数据源的多样性。
  2. 需要根据业务规则来统一数据。
  3. 更新频率和其他具体的要求。

因此,普通IT公司需要清楚地了解数据源的结构,并配备相应的目标应用。

一个ETL示例

常见的ETL任务是将数据从关系数据库管理系统(Relational Database Management System,RDBMS)传输到另一个更适合于商业智能工具的数据库中。因此,ELT的作业可分为两种类型:

  1. 批量作业
  2. 流式作业

其中,流式作业的一个例子是:从RDBMS中获取数据,逐个且单独地传输出去,以备后期处理。否则,我们认为它属于批量处理的范畴。例如:您可以先获取整个文件,再对其进行处理,***将其保存到更大的文件中。可以说,不同的ETL系统会以不同的方式处理上述任务。

如今,单一的批量方法已被淘汰。持续增长的流式数据源,导致了各种ETL工具被主要用于通过处理流式作业,来尽快地提供出各种***的数据。

同时,由于ETL能够将数据成功地集成到各种数据库和应用之中,而各种琳琅满目的云端数据集成工具,经常会让我们难以做出选择,因此我在此为大家罗列和比较了五款企业级ETL工具的优缺点,希望能够帮助您找出最适合手头项目的解决方案。

1. Apache Nifi

定价 :免费

官方网站:https://nifi.apache.org/

实用资源:文档教程

优点:

  • ***地实现了数据流的编程概念。
  • 能够处理二进制数据。
  • 提供数据来源(Data Provenance)。

缺点:

  • 用户界面过于简单。
  • 缺乏实时监控和逐条记录的统计数据。

由Apache Software Foundation开发的开源项目--Apache NiFi可谓是***的ETL工具之一。由于基于数据流的编程概念,因此它能够让我们在boxes中可视化地组装各种程序,并在几乎不需要任何代码的情况下运行起来。在这一点上,您完全可以不必了解任何编程语言。

作为一款备受欢迎的ETL工具,NiFi能够处理许多不同的数据源,其中包括:RabbitMQ、JDBC查询、Hadoop、MQTT、以及UDP套接字等。而在操作方面,您可以对数据进行筛选、调整、连接、拆分、增强和验证。

由于Apache NiFi是用Java编写而成,并且是在Apache 2.0的许可证中发布的,因此它不但能够在JVM上运行,而且支持所有的JVM语言。

该ETL工具既有助于用户创建长期运行(long-running)的作业,又适用于处理流式数据和一些周期性的批处理。不过,对于那些手动式管理任务而言,用户在设置NiFi时,可能会碰到一些麻烦。

Apache NiFi是一种功能强大且易于使用的解决方案。它采用了全面的架构模式,其FlowFile包含了各种元信息。因此,该工具不但能够识别CSV,还可以处理照片、视频、音频文件、以及其他二进制数据。

NiFi的处理器包括如下三种输出:

  1. Failure:意味着FlowFile的处理过程中存在着一些问题。
  2. Original:表示传入的FlowFile已被处理。
  3. Success:表示FlowFiles的处理已完成。

您可以使用特殊的复选框,来删除那些已终止的输出。同时,您应该注意在高级ETL编程中的进程组(Process Groups),它们对于组合复杂的数据流元素来说是非常必需的。

NiFi的另一个实用功能是:可以采用不同的队列策略(包括FIFO、LIFO以及其他)。Data Provenance是一种用于记录数据流中几乎所有内容的连接服务。它可以便利地让您获悉数据的保存或执行方式。当然,该功能的唯一缺点是需要大量的磁盘空间。

虽然在我看来Apache NiFi的界面不但简洁清晰,而且可用性强,但是仍有不少用户抱怨其缺少必要的组件。例如,他们认为:由于缺少了自动调整各种长SQL查询的文本字段,因此只能通过手动来完成。

NiFi拥有内置的Node集群。您可以通过选择一些实例,来让它提取必要的ETL数据。另外,NiFi可以通过背压(back pressure)机制,来快速地连接MySQL,获取某个文件,并将其添加到下一个处理器上。

总而言之,Apache NiFi的主要优势在于拥有100多种不同的嵌入式处理器。它们能够通过HTTP、S3或Google Data Source来下载文件,并能将文件上传到MySQL、或其他数据接收器上。您只需配置UI,按下RUN按钮,后续它就能自动运行了。

2. Apache StreamSets

定价:免费

官方网站:https://streamsets.com

实用资源:文档教程开发者支持论坛源代码

优点:

  • 每个处理器都有基于单条记录的统计信息,且具有友好的可视化调试效果。
  • 用户界面非常友好。
  • 提供流式和基于记录的数据工具。

缺点:

  • 缺少可重用的JDBC配置。
  • 更改单个处理器的设置后,需要停止整个数据流。

Apache StreamSets可谓Apache NiFi的强有力竞争对手,我们很难说出谁更胜一筹。

根据流畅且通用的数据流格式的设计思想,所有被放入StreamSets的数据都会被自动转换为可交换的记录。与Apache Nifi不同的是,该ETL工具并不显示处理器之间的队列。如果您想使用其他不同的格式,Apache Nifi通常需要从一个版本的处理器转换为另一个版本。而StreamSets则不然,您需要为设置的更改停止整个数据流,而不仅仅停止某一个处理器。

在StreamSets中,虽然对于错误的修复看似困难,但事实上,由于它提供实时的调试工具,因此用户反而更容易实现错误的修复。借助具有实时仪表板和显示所有统计信息的友好用户界面,您可以快速地发现并修复任何出现的错误。此外,您还可以在处理器之间的连接处,放置各种具有记录功能的过滤器,以检查不同可疑的记录。因此,它具有如下四种处理器的变体:

  • Origin:处理器从数据源接收信息。
  • Processors:获取和转换接收到的数据。
  • Destinations:将转换后的数据放入各种外部文件。
  •  Executors:处理那些由其他处理器完成的操作。

StreamSets的各种处理器可以生成包括错误在内的动作和事件。您需要executors,来跟踪和修复这些错误。虽然那些只用到Processors和Controller Services的用户会更喜欢Apache NiFi的简约设计。但是,StreamSets也有着规划合理的架构。凭借着友好的用户界面,它也并不那么难以上手。

我个人感觉:由于缺少了针对JDBC设置的Controller Services,因此在调整每一个处理器时,都会让人觉得有些棘手。

StreamSets会在运行数据流之前检查所有的处理器,即:在数据流启动之前,必须确保所有处理器的连接。该功能会导致StreamSets不允许用户留下任何暂未连接、以备将来修复错误的处理器。StreamSets的另一个缺点是:无法让用户同时选择多个处理器。毕竟,逐一移动并重组多个处理器,会耗费大量的时间和精力。

总而言之,作为一款成熟的开源ETL工具,它提供了便捷的可视化数据流和时尚的Web界面。

3. Apache Airflow

定价 :免费

官方网站:https://airflow.apache.org

实用资源:教程

优点:

  • 适合不同类型的任务。
  • 具有清晰且可视化的用户界面。
  • 提供可扩展的方案。

缺点:

  • 不适合流式作业。
  • 需要额外的运算符(operators)。

这是一种被用于创建与跟踪工作流的开源式ETL软件。它可以与包括GCP、Azure和AWS在内的云服务一起使用。同时,您可以在Kubernetes上通过Astronomer Enterprise来运行Airflow。

在使用Python来编写工作流代码时,您不必担心XML或GUI拖放等问题,这些步骤具有一定的智能性。作为一款灵活的任务调度程序,Airflow可以被用在许多API之中,以实现训练ML模型、发送通知、跟踪系统、以及增强函数等目的。

该平台具有如下主要特点:

  • 通过Qubole和astronomer.io来提供Airflow-as-a-Service。
  • 2015年由Airbnb所创建,2016年转入Apache。
  • 以Google Cloud Composer为基础。
  • 工作流程被作为有向无环图(directed acyclic graphs,DAGs)执行。

开发者可以用Apache Airflow来创建dynamic、extensible、elegant和scalable四种解决方案。因此,它通过Python代码提供了动态管道的生成。同时,您还可以自定义运算符和执行程序,以及按需扩展的抽象库。由于相关参数已被包含在平台的核心里,因此它能够创建出各种清晰准确的管道。此外,模块化与消息队列式的设计,也让Airflow更容易实现按需扩展。

Apache Airflow适用于大多数日常任务,包括:运行ETL作业和ML管道,提供数据和完成数据库备份。但是,对于流式作业来说,这并不是一个很好的选择。

该平台具有可视化元素的时尚UI。您可以查看所有正在运行的管道,跟踪进度并修复错误。这些都有助于用户完成DAG上的复杂任务。

虽然该结构比ETL数据库更具动态性,但是它能够提供稳定的工作流。因此,如果您将工作流定义为代码的话,它们将更具有协作性、可版本化、可测试性和可维护性。

该平台可运行在私有的Kubernetes集群中,并包含各种资源管理与分析工具,例如:StatsD、Prometheus和Grafana。

您可以使用如下的Airflow工作流,来进行ETL测试:

  • 单元测试
  • 集成测试
  • 端到端测试(在某些情况下)

上述***种类型适用于检查DAG的加载、Python运算符函数、各种自定义运算符和Bash/EMR脚本。该平台不需要任何原始配置,其唯一需要更改的地方是:DB连接字符串。您需要创建一个空的数据库,并授予用户CREATE/ALTER的权限。剩下的就可以交给Airflow去完成了。

总而言之,Apache Airflow是一款由Python编写的免费独立框架。如果您想单独运行Airflow的话,则会面临一些挑战,因此您***使用一些不同的运算符。

4. AWS Data Pipeline

定价:不定,请参见https://aws.amazon.com/datapipeline/pricing/

官方网站:https://aws.amazon.com/datapipeline/

实用资源:文档社区论坛

优点:

  • 易用的ETL技术
  • 价格合理
  • 灵活性好

缺点:

  • 没有太多内置函数

该Web服务确保了数据在AWS计算资源和各种数据源之间的处理和移动。它能够对已存储的数据提供***的访问与转换。其最终结果也可以被转移到诸如:Amazon DynamoDB、Amazon RDS、Amazon EMR和Amazon S3等服务之中。该ETL工具简化了创建复杂数据处理负载的相关过程,有助于实现可重复、高可用且可靠的用例负载(case-load)。

AWS Data Pipeline能够移动和处理那些被锁在本地数据孤岛中的数据。Amazon号称其ETL工具有如下六项主要优势:

  • 准确性
  • 简单性
  • 适应性
  • 价钱合理
  • 可扩展性
  • 透明度

AWS Data Pipeline是一种可靠的服务,它能够在发生故障时,自动对各种活动进程进行重试。通过配置,您可以通过Amazon SNS接收到运行成功、延时或失败等通知。

您还可以通过拖放控制台,来简单快速地设计各种管道。其内置的预置条件,省去了您通过额外编写逻辑去调用它们。Web开发人员可能会用到的功能包括:调度、依赖关系跟踪和问题处理。同时,该服务也被灵活地设计为能够流畅地处理大量文件。

AWS Data Pipeline是一种无服务器式的编排服务,因此您只需为自己所使用的内容付费。同时,它为新用户提供了免费的试用版。通过该透明式方案,用户能够接收与管道相关的完整信息,并完全控制各种计算资源。

这款ETL工具很适合于执行各种管道作业。我在当前的项目中就使用它来传输各种数据。虽然AWS Data Pipeline没有丰富的内置函数,但是它提供了便捷的UI和内置了多种处理器的实用工具。用户可以用它来生成各种实例,并实现级联式的文件管理。

5. AWS Glue

定价:不定,请参见https://aws.amazon.com/glue/pricing/

官方网站:https://aws.amazon.com/glue/

实用资源:教程

优点:

  • 支持各种数据源。
  • 与AWS的各种服务有良好的集成。

缺点:

  • 需要大量的手工操作。
  • 灵活性差。

AWS Glue允许您在AWS管理控制台中创建和运行一项ETL作业。该服务能够从AWS中获取各种数据和元数据,并通过放入相应的类目,以供ETL进行搜索、查询和使用。整个过程分为如下三个步骤:

  • 通过构建类目(包括JSON、CSV、Parquet和许多其他格式)对数据进行分类。
  • 生成ETL代码和各种编辑转换(可用Scala或Python编写)。
  • 调度和运行各种ETL作业。

这款ETL工具具有如下三个主要优点:

  • 便利性:由于能与众多的AWS服务和引擎相紧密集成,因此该工具对于那些已经使用了Amazon产品的用户来说,非常容易上手。不过,其缺点在于:您无法在本地、或任何其他云端环境中实现它。
  • 经济实惠:无服务器解决方案意味着您无需配置或管理任何基础架构。因此,其成本取决于各个“数据处理单元”的开销。您只需为正在运行的作业付费便可。
  • 功能强大:能够自动创建、维护和运行各种ETL作业。当然,该服务也需要大量的手工操作。

虽然AWS Glue是AWS生态系统中的重要组成部分,但是您应该注意它的细微差别。该服务能够提供抽象级别的CSV文件。不过,您需要通过大量的手工操作,才能最终生成可运行的Spark代码。您可以在Scala或Python中下载相应的代码,并按需进行各种修改。虽然它适用于大量的数据源,但是该服务会最终强制您选取某一种特定的方案。而且您无法在后续的使用中,再去改用其他方式。

如何选择正确的ETL工具

InfoWorld曾断言:在构建数据仓库系统的方面,ETL的成本占比***。用户需要特别关注由它所产生的瓶颈。因此,只有恰当地实施ETL,才能优化企业的成本和加快员工的工作效率。***,我为您列出如下五个方面,供您在选用ETL工具时进行参考:

  • 系统的复杂性。
  • 您的数据要求。
  • 开发者的经验。
  • ETL的技术成本。
  • 特殊的业务需求。

原文标题:Top 5 Enterprise ETL Tools,作者:Vitaliy Samofal

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2012-03-05 12:33:18

2009-07-17 09:17:41

IT运维SiteView游龙科技

2009-04-22 08:44:36

2010-08-20 14:48:37

.NET企业级架构

2011-12-06 14:44:02

iPad企业级解决方案

2015-08-04 17:31:46

戴尔云计算anycloud

2013-03-11 10:54:05

2016-03-25 17:20:26

戴尔

2012-06-12 09:56:33

虚拟化

2013-08-28 09:24:09

企业级移动信息化解决方案

2010-03-30 14:45:26

戴尔解决方案创新中心上海

2013-04-19 10:05:24

2010-08-09 09:10:26

.NET企业级架构

2012-09-22 15:13:31

2011-10-14 10:50:02

2009-11-23 20:16:25

ibmdwRational

2012-05-03 18:06:52

SGI

2010-02-06 13:56:34

以太网交换机

2015-06-24 16:38:24

2010-08-09 09:03:17

.NET企业级架构
点赞
收藏

51CTO技术栈公众号