nifi入门

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节ETL的设计分三部分:数据抽取(Extract)、数据的清洗转换(Transform)、数据的加载(Load)。
目前常用的ETL工具如kettle(PDI),spoop以及商业软件Oracle GoldenGate等。今天,我们将介绍一个基于java开发的/web化的/易于扩展的ETL平台-nifi

什么是Apache NiFi?

NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化、可定制的数据集成产品。2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apache顶级项目..Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。这里的数据流表示系统之间的自动化和受管理的信息流。基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。

往简单了说,NiFi是为了实现系统间数据流的自动化而构建的。数据流一词,在不同一上下文有不同的含义。但我们在此处使用它来表示不同系统之间进行自动化管理的信息流。数据流问题由来已久,企业应用中,不仅仅存在一个系统,通常另外一个系统生产数据,而另外一个系统消费数据。数据流的自动化问题,已经被广泛讨论,并且出现了许多的解决方案。然后数据流的自动化始终面临着一系列的挑战。

 系统故障:

    网络故障,磁盘故障,软件崩溃,人们犯错误。

 边界条件失效


     您总是有可能获得太大,太小,太快,太慢,损坏,错误或格式错误的数据。

  合规性和安全性


   法律,法规和政策发生变化。企业对企业协议的变化。系统到系统和系统到用户的交互必须是安全的,可信的,负责任的。

   系统是隔离的,并以不同的方式进行演进


    给定系统使用的协议和格式可能随时改变,独立演进,而不管它们周边的生态系统如何。数据流本质上是大规模分布的组件系统,然而这些组件设计的初衷或许根本不是为了分布式应用。

 

多年来,数据流在架构中一直必不可少。并且,随着诸如物联网、大数据、等新兴技术的发展,数据流越来越多姿多彩,并且对于企业也越来越重要。对于特定企业的成功更为重要。此外,合规性、隐私性、安全性也越来越受到重视。虽然新的理念不断涌出,但是对于数据流的需求,却始终大同小异。主要区别在于数据的复杂性,系统的适用性,大规模的边缘情况变得越来越普遍。 NiFi设计的初衷就是为了解决这些问题。

 

 NiFi核心概念

    NiFi的基本设计理念流程编程的来源于基于流的编程(flow-basedprogramming )[fbp]。 以下是一些主要的NiFi概念以及它们如何映射到FBP:

NiFi术语 FBP 术语 描述

FlowFile

(文件流)

Information Packet(信息包)

FlowFile表示在系统中的流转的的每个对象,并且对于每个对象,NiFi有相关的键值对代表的属性。比如

FlowFile Processor

Black Box(黑盒)

 

处理器实际上执行相关业务的一个组件单元。 在[eip]术语中,处理器正在对系统之间的数据路由,转换或中介进行某种组合。理器可以访问给定FlowFile的内容和相关的的属性。处理器可以在给定的工作单元中对零个或多个FlowFile进行操作,并提交该工作或回滚。

Connection

Bounded Buffer

Connections提供处理器之间的实际路由关系。他们表现为队列的形式,并允许各自以以不同的速率进行交互。 这些队列可以动态优先化,并且具有上限(flowFIle个数或者大),从而实现反压。

Flow Controller

Scheduler(周期)

T流控制器维护流程如何连接、和管理当前Processor的线程数、是否使用集群模式、调度周期等相关配置信息。

Process Group

subnet(子流程、子网络)

进程组类型于文件系统中的目录。是一组具有特定业务意义的Processor组, 以这种方式,将processor组合在一起,.并且可以通过输入端口接收数据并通过输出端口发送数据,相当于创建了全新的组件。也可以仅仅当做文件系统的目录来使用,使流程更方便管理。

 

NiFi 架构

nifi入门_第1张图片

NiFi 运行于jVM上. 主要组件如下:

Web Server

提供了一个web化的操作界面,并提供相关的restful接口;

Flow Controller

流量控制器是操作的大脑。 它为扩展程序提供运行的线程,并管理扩展程序的执行计划等计划。

Extensions

在其他文献中描述了各种类型的NiFi扩展。 这里的关键点是扩展在JVM中运行和执行。

FlowFile Repository

FlowFile存储库是NiFi跟踪其对流中当前活动的给定FlowFile的了解状态的地方。 存储库的实现是可插入的。 默认方法是位于指定磁盘分区上的持久性预写日志。

Content Repository

内容存储库是给定FlowFile的实际内容字节的实时位置。 存储库的实现是可插入的。 默认方法是一种相当简单的机制,它将数据块存储在文件系统中。 可以指定多个文件系统存储位置,以便获得不同的物理分区以减少任何单个卷上的争用。

Provenance Repository

Provenance Repository是存储所有起源事件数据的地方。 存储库构造是可插入的,默认实现是使用一个或多个物理磁盘卷。 在每个位置内,事件数据被索引和搜索。

NiFi is also able to operate within a cluster.

 

 

你可能感兴趣的:(ETL)