MiNiFi作为NiFi的子项目,是对NiFi数据流管理核心原则的扩展,聚焦于如何从数据产生的源头收集数据;MiNiFi解决了数据在产生源头和消费者之间相互传递和管理的困难,可以作为数字信号的“第一或最后一英里”,通过实现边缘设备智能(edge intelligence)来调整数据流的双向通信。MiNiFi设计的具体目标包括:
- 更小的体积和更低的资源消耗
- 集中管理Agents
- 可以生成数据世系(Data Provenance)
- 可以和NiFi集成
因为数据采集的初段是分布式且通常涉及大量的终端设备(例如物联网),MiNiFi具备NiFi的除了前端页面和部分管理命令行之外的所有核心能力,可以创建和部署数据流,使大量设备的统一管理成为可能。
- MiNiFi的配置由声明式的配置文件(YAML)驱动,可以通过主流的自动化管理工具辅助进行配置下发来管理大量的MiNiFi实例
- MiNiFi Agents通过点对点协议(例如HTTP/HTTPs)来将收集的数据传送到中央的NiFi集群中
- MiNiFi聚焦于对NiFi的精简,所以NiFi并没有包含NiFi支持的全部Processor,Java Agents可以通过添加NiFi既有的NAR包来扩展processor种类,满足用户在设计和部署自己的数据流时对数据源的多样化需求
- MiNiFi与NiFi之间可以实现双向通信(Bi-directional Communication),双向通信使得处理流程的动态更新能通过数据流的重新设计和重新部署来实现,并且将从数据中获得的洞察转化为可以应用的新的数据流设计
MiNiFi要能够被部署到边缘(edge)设备上,则其安装包必须比NiFi小很多(NiFi的安装包超过900MB!)。MiNiFi的安装包小于60MB,具体大小取决于不同的版本,MiNiFi提供了Java和C++两个版本:
- Java版本为可以运行大部分的NiFi processors,但是体积也更大(约59MB)同时需要消耗额外的系统资源(默认24MB的max JVM heapsize);如果用户希望最大程度的集成NiFi在处理数据上的能力,Java 版本是最好的选择;(本文中我们以Java Agent为例进行测试)
- C++版本更加轻量化(只需要大约3MB),消耗更少的系统资源(大约5MB的内存),但是只具备NiFi processors的有限的子集;如果用户只是获取数据然后把数据传给下游系统(例如中央的NiFi集群)处理并且比较在乎系统资源的占用,那么C++版本比较合适。
用户可以从MiNiFi项目主页下载MiNiFi的安装包,每个版本的MiNiFi安装包都包括以下三个部分:
- MiNiFi:即MiNiFi安装包,包含了MiNiFi的所有核心功能,部署和执行用户设计的数据流
- MiNiFi Toolki Binaries :一个用来将NiFi的数据流模版转化为MiNiFi的配置文件的工具包
- MiNiFi Command and Control Server Binaries:即MiNiFi C2,用于辅助用户管理和控制MiNiFi实例中的数据流
MiNiFi,MiNiFi Toolket和MiNiFi C2都供了tar.gz,zip和源码包三种不同的形式,用户可以根据自己的需要进行选择。部署MiNiFi需要预先在服务器或者设备上安装系统级别的依赖,其中Java版本预装JVM,C++版本则需要leveldb,libxml等依赖库,具体如下:
作者:小白_18M
链接:https://www.jianshu.com/p/45eba4ef8b62
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。