前言
随着数据量的爆炸,数据来源越来越多,例如文件、数据库、Hadoop分布式文件系统, web服务接口, MQTT, RabbitMQ, Kafka, 甚至TCP、UDP端口都可以作为数据来源。
当用户的ETL需求比较复杂时,使用可视化Dataflow处理工具能降低使用门槛,提高效率。有两个开源的Dataflow数据处理工具,可以帮助完成复杂ETL的工作:Apache NiFi和StreamSets Data Collector(SDC),两个工具都有Web界面有。 NiFi是2014年由NASA捐赠给Apache基金会,目前的开发和支持主要由Hortonworks提供。 SDC由加利福尼亚州的一家初创公司于2014年创立,作为GitHub上的开源ETL项目。 第一个版本于2015年6月发布。
两个产品都是用Java编写的,许可证是Apache 2.0。
架构和特性
这两个工具都适用于创建长周期执行的作业,比如流式数据或定时的批处理。虽然可以创建手动管理的作业,但设置起来会很繁琐,参数很多,这两个工具提供的可视化界面可以完全在界面中配置好作业的相关参数,自动管理作业的执行并监控运行的状态。
Apache NiFi
在Apache NiFi官网上,是这么介绍NiFi的:“一个易用、强大、可靠的数据处理与分发系统”。
简单来说,NiFi用于自动化管理系统之间的Dataflow。企业中,往往有不止一个系统,其中一些系统产生数据,另外一些负责消费数据,而其中往往还有专门负责存储数据的系统。如下图所示,可以看到一个完整的从数据产生到存储,再到被消费的通用Dataflow。
Apache NiFi的架构经过了良好的实际生产环境中的验证。 从外部源获取数据后,在Apache NiFi中Dataflow中转换为FlowFile。 FlowFile基本上是附有元信息的原始数据。 无论是CSV或其他结构化的数据,还是图片,视频,音频等任何二进制数据,都可以在Apache Nifi中进行处理。