1. 可视化命令与控制
数据流的处理有时非常复杂,因此提供一个可视化的数据流展现与编辑功能,使得用户在编辑和处理数据流时更加直观,从而提升使用效率。当用户在数据流上做出修改时,这个更改将立即在实际中产生作用。并且,用户在进行局部修改时,不需要停止整个流处理过程。如下图所示为一个数据流任务,此数据流能够将FTP上特定路径下的文件实时同步到HDFS上,而此功能完全是通过拖拽图标,并通过可视化配置实现的。
2. 保证交付
NiFi的一个核心理念为:即使在非常高的规模与压力环境下,保证数据的交付也是必须的。这是通过有效利用定制化的持续预写日志和内容仓库技术做到的。它们一起被设计,以支持非常高的交换速率,和高效的导入速度,并通过写时拷贝技术而发挥传统硬盘的优势。
3. 数据回压
NiFi提供所有队列数据的缓存,并且在队列达到指定限制或者超时的时候,能够提供数据回压。
4. 高扩展性
NiFi最初就被设计成可扩展的,数据流处理程序能够以可预测和可重复的模式执行。
服务装载模式:Processors、ControllerServices、Reporting Tasks、Prioritizers,以上服务可以单独部署。
对于任何基于组件的系统,随着规模的扩张,组件之间的依赖会越来越错综复杂。为了解决这个问题,NiFi通过提供自定义类装载器模型,来确保每个扩展组件之间的约束关系被限制在非常有限的程度。因此,在创建扩展组件时,就不用再过多关注其是否会与其他组件产生冲突。
5. 优先级队列
NiFi允许设置一个或多个优先级方案,用于数据如何在队列中被检索。默认情况下,是先进先出的处理策略。也可以设置成后进先出、最大先出,或者其他的处理策略。可以为每一个connection配置队列的优先级。
6. 流式QoS保障
经常有一些数据是非常重要的不能够丢失,以及需要进行低延迟处理的。NiFi能够为这些数据流提供QoS保障服务。
7. 数据跟踪
NiFi自动记录、索引对于数据流的每个操作日志,并可以把可用的跟踪数据作为对象在系统中传输。这些信息能够在系统故障诊断、优化等其他场景中发挥重要作用。如下图所示为一个数据流的数据跟踪记录。
8. 记录/恢复细粒度的历史数据
NiFi的内容存储库被设计成历史滚动缓冲区的角色。数据仅仅在超时或者空间不足时被从内容存储库中删除。此项功能与数据跟踪功能一起,可以提供一项非常有用的基础功能,即用户能够对中间过程的内容进行下载和回放。如下图所示,为一个数据跟踪记录中提供的数据下载和预览功能。
9. 流程模板
由于数据流是高度面向模式的,并且在解决一个问题时会有多种不同的方式,能够共享一些好的通用处理模板将对用户会有很大的帮助。模板功能允许用户构建、发布设计模板,并共享给其他人。
10. 安全性
系统间,NiFi可以通过双向SSL进行数据加密。并且可以允许在发送与接收端使用共享秘钥,及其他机制对数据流进行加密与解密。
用户与系统间,NiFi允许双向SSL鉴定,并且提供可插入授权模式,因此可以控制用户的登录权限(例如:只读权限、数据流管理者、系统管理员)。