开发者学堂课程【NiFi 知识精讲与项目实战(第一阶段):Nifi 是什么】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/705/detail/12506
Nifi 是什么
内容介绍
一、NIFI 的概念
二、总结
本课题讲解内容是学习 Nifi 工具软件。在学习工具软件之前。都了解了 Uzi、scoop 等等,这些软件工具在做数据仓库、大数据系统时经常会使用。如果掌握了 NIFI 以后,这些工具可以不使用。目前 NIFI 在国内基本没有任何资料,整理这个课程是通过翻墙,在国外的网站上去进行 NIFI 的学习和知识的搜集。
本课程是国内第一个 NIFI 课程。目前国内的一些大公司都在使用 NIFI,但是因为 NIFI 资源的问题,获取难度比较大,所以在小公司中掌握的比较少。学习 NIFI 之后,就可以将 NIFI 应用在实际工作过程中,提高工作效率,减少服务器以及工作流程不稳定性。
一、NIFI 的概念
阿帕奇 NIFI 是一个容易使用,而且功能强大、稳定性很高的系统,主要用来处理和分发数据,可以自动化管理不同系统之间的数据流,而且拥有高度可配置的图形化管理界面,用来实现数据路由、数据转换以及系统中介,而且Nifi支持从多种不同的数据,来动态的抓取数据,这些数据源包含了 MySql、oracle、SQLserver 等。NIFI 本来是 nsa 的项目,目前已经代码开元,属于阿帕奇基金会的顶级项目之一。
NIFI 是基于 Java 开发的,所以对于 Java 开发人员来说比较友好,也能使用 maven 做构建管理等常用技术。NIFI 是基于外部方式来工作的,是 bs 结构,不需要单独再去安装客户端后台,在服务器上进行调度,类似于加入 web,用户可以将数据处理它定义成完整的流程,执行这个流程,就可以实现数据引擎的调度以及整个任务链的处理, NIFI 是为了解决不同系统之间,数据的自动流通问题而建立的,涉及到术语概念:dataflow 数据流。在很多场景都会被使用。在 NIFI 当中主要是用来表示不同系统之间的自动化的可管理的信息流。
自从数据企业拥有了很多个系统以后,会有数据的生成系统,也会有系统要去消费这些数据,不同系统之间数据的流吞,就会产生问题。解决方案已经有很多。例如,企业集成 eip 系统全面的解决数据集成问题。而且也有很多软件实现专门处理数据的抽取,路由以及数据的转换等功能,但是这些软件都会存在各种各样的问题,或者对大数据量的支持不够,不方便使用。或者功能不够灵活、不够强大,大部分软件都不支持扩展,但是 NIFI 却可以很好的解决遇到的问题。对俘虏数据流,具体面临了以下挑战:
1.Systems fail
系统调用失败。数据集成会面临着各种各样的问题,例如网络故障,或者硬件磁盘故障,软件故障,软件崩溃或人为事故,因为以上原因而导致系统集成调用的失败。
2.Data access exceeds capacity to consume
数据访问超出系统的消耗能力。给数据包括抽取的数据较大时,支撑不了数据转换。
3.Boundary conditions are mere suggestions
数据超出边界。例如数据对象太大或太小,抽取太快或太慢以及有数据损失,格式不正确等。灵活控制以及功能性的方面的问题。
4.What is noise one day becomes signal the naxt
实际的业务变更很快,如果使用起来不方便,或者需要重新书写代码,就会导致响应不够迅速。NIFI 可以很好的解决这个问题
5.Systems evolve at different rates
另外系统使用协议和数据格式,可能会经常变化,格式每个系统都是不一样的。如何处理不同系统之间数据格式的问题以及交互协议的问题,也是面临的挑战。
6.Compllance and securlty
数据的安全性问题,系统和软件的安全性问题,个别软件和系统可能没有权限管理这方面的管理。
7.Continuous improvement occurs in production
数据迁移性的问题,例如在开发环境运行之后,完成数据抽取以及转换统计分析等过程,到测试环境时,还需要重新完整的部署一遍。测试环境到生产环境的改变就会很大,工作量也会很大。此时使用 NIFI 会更方便,使整个完整流程快速迁移。对于面临的挑战,dataflow 是引起问题的核心,现在有很多活跃的技术来解决这些问题,包括工具软件、SPA 代码。如何选择所使用的技术,例如 soa 或 API 接口以及 iot、大数据。如果只能在内网使用,一旦公开到外网以后,是否涉及到数据包的抓取。虽然新应用软件有很多,但是对数据流处理所面临这些挑战,一直都没有很好解决。Nifi 可以完美的解决所面临的这些挑战。
二、总结
NIFI 是用来处理数据集成场景的数据分发的工具,是 bs 结构的图形化工具。解决的问题以下方面:
1.可以解决系统故障导致调度失败的问题,也是高可用
2.可以解决高并发而导致的流程问题,也是高性能、高并发
3.对于错误类型过大、过慢、过快等以及错误数据,可以方便的提示错误数据,相当于错误纠缠
4.对于现实业务需求的变更,能够快速的响应
5.不同系统之间的数据格式可以进行兼容,兼容各种数据格式
6.安全性比较高
7.方便的在测试环境和生产环境当中进行迁移
以上是 NIFI 的核心概念。