干货丨一文了解面向流程的大数据处理框架NiFi
文 | 郑书国 NiFi背景 NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化、可定制的数据集成产品。2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apache顶级项目。 ?NiFi是什么 Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。 这里的数据流表示系统之间的自动化和受管理的信息流。?基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。 下面是NIFI官网的一张图片,可以根据它了解一下NiFi的大体特征: NiFi的核心模块 NiFi的基本设计理念是基于数据流的编程 Flow-Based Programming(FBP)。应用是由处理器黑盒、连接器组成的网络。数据进入一个节点,由该节点对数据进行处理,根据不同的处理结果将数据路由到后续的其他节点进行处理。这是NiFi的流程比较容易可视化的一个原因。 NiFi中的核心概念与FBP术语对比参照如下: 参照上述表格,简单来讲 FlowFile 是在各个节点间流动的数据;FlowFileProcessor 是数据的处理模块;Connection是各个处理模块间的一个队列;Flow Controllers是复杂流程的调度;Process Group封装流程的层次关系。 NiFi架构 NiFi是基于Java的,NiFi的核心部件在JVM里的位置如下图所示: 作为功能强大的数据处理和分发组件,NiFi自然原生支持集群部署方式(推荐部署方式)。NiFi集群部署模式如下图:
集群模式下,NiFi集群中的每个节点对数据执行相同的任务,但是每个节点都在不同的数据集上进行操作。和大部分大数据组件一样,NiFi集群使用Apache ZooKeeper提供协调服务。 Apache ZooKeeper选择一个NiFi节点作为集群协调器,故障转移由ZooKeeper自动处理。 所有集群节点向集群协调器报告心跳和状态信息。集群协调器负责节点的断开和连接。 此外,ZooKeeper会为每个集群选举一个节点作为集群主节点。 作为DataFlow管理器,您可以通过任何节点的用户界面(UI)与NiFi集群进行交互。您所做的任何更改都会同步到集群中的所有节点,从而允许多个入口点。 ?NiFi特点
关键特性包括:
|