什么是NiFi
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统,在大数据生态中的定位是成为一个统一的,与数据源无关的大数据集成平台。Apache NiFi 是为数据流设计,它支持高度可配置的指示图,来指示数据路由、转换和系统中流转关系,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。 这里的数据流表示系统之间的自动化和受管理的信息流。 基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。未来NiFi有可能替换Flume、Sqoop等大数据导数据的工具。
NiFi官网地址:Apache NiFi
一、NiFi背景介绍
2006年NiFi由美国国家安全局(NSA)的Joe Witt创建。2015年7月20日,Apache 基金会宣布Apache NiFi顺利孵化成为Apache的顶级项目之一。NiFi初始的项目名称是Niagarafiles,当NiFi项目开源之后,一些早先在NSA的开发者们创立了初创公司Onyara,Onyara随之继续NiFi项目的开发并提供相关的支持。Hortonworks公司收购了Onyara并将其开发者整合到自己的团队中,形成HDF(Hortonworks Data Flow)平台。2018年Cloudera与Hortonworks合并后,新的CDH整合HDF,改名为Cloudera Data Flow(CDF)。Cloudera将NiFi作为其新产品Cloudera Flow Management和Cloudera Edge Management的核心组件推出,可以方便地使用Cloudera Manager进行Parcel安装和集成,而Apache NiFi就是CFM的核心组件。
二、传统数据流解决方案遇到的问题
传统数据流接收处理过程中存在如下问题:
- 系统错误
包括网络错误、磁盘错误、软件崩溃,甚至是人为操作错误,造成了数据流处理不稳定。
- 数据访问超过处理能力
当数据处理某一模块出现瓶颈问题时,不能及时处理到达的数据
- 异常数据处理
不可避免出现数据太大,数据传输太慢,数据损坏、问题数据、数据碎片及数据格式错误问题。
- 业务快速演进
现实业务或需求变更快,设计新的数据处理流程或者修改已有的流程必须要迅速。
- 多系统升级不同步引入的前后兼容
原有系统的协议和数据格式,会伴随系统的升级有一定的调整,同时单个系统的升级会影响周边系统。数据流可以把多个大型分布式系统串边在一起,这些系统可以是松散地,甚至设计之初就没考虑未来集成。
- 持续改进生产系统
通常不可能在测试环境中完全模拟生产环境。一旦测试通过的流处理流程有可能针对生产环境继续修改,耗时费力。
多年来,数据流(dataflow)一直是架构中的痛点之一。而现在有越来越多事物的兴起让企业开始重视数据流,包括:面向服务的体系结构(SOA),API,物联网IOT和大数据。此外,合规性,隐私性和安全性所需的严格程度也在不断提高。对于这些新鲜事物或概念,数据流的需求大致相同,主要区别在于复杂性,适应业务变化的速度,以及大规模边缘用例。NiFi旨在帮助解决这些现代数据流挑战。
三、NiFi特点
- Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统,用于自动化管理系统间的数据流。
- 支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。
- NiFi基于Web方式工作,后台在服务器上进行调度,是Apache基金会的顶级项目之一。
- 用户可以为数据处理定义为一个流程,然后进行处理,后台具有数据处理引擎、任务调度等组件。