当前位置: 首页 > news >正文

NiFi :1 初识这把“十年一剑”的利器

--->更多内容,请移步“鲁班秘笈”!!<---

“现在AI和数据处理密不可分,80%的企业可以利用Apache NiFi轻松解决复杂的数据问题,快速完成场景建设。犹如花上百来块钱在家享受一顿不亚于五星级西餐厅的法式大餐。对于全栈式的数据分析师或者数据应用的Java研发工程师,NiFi让其摆脱复杂的数据工程,而是将精力放在分析和应用的创新之上。而NiFi的GUI也着实令人赏心悦目!”

—小编

Apache NiFi

说到数据平台,很多人的第一反应要么是ETL/ELT,要么是Spark或Hadoop,要么是Flink,要么是各式各样的湖仓技术,例如Delta Lake。小编多年来根据不同的业务场景规划落地不少数据平台,很清楚的明白维护一套数据处理套件成本不菲。先不说调度引擎、运算引擎、数据治理引擎和存储引擎,光是数据质量和产出效益就让很多企业管理者头疼,况且现代化的技术体系都依托云原生,这也是不小的一块投入。就算下定决心建设数据平台,技术路线抉择和人才储备则是另一大难题。要知道如何选择最合适的技术至关重要,和2B产品线的生死掌握在靠谱的产品经理手中一样。

现在AI时代已经到达,如何快速且以较低的成本进行数据处理和微治理则十分重要。毕竟现在的节奏越来越快,从商业的角度,小投入,快应用,螺旋式的加大投资成为很多人的选择。回顾过去十年,加之最近在数据领域的咨询量增加,小编认为是时候介绍一下NiFi,让它能够得到最对等的尊重。回顾这十年,NiFi走得很稳,正如它的官网所介绍的一样,NiFi是强大、可靠、简单易用的处理和分发数据的系统。

Apache NiFi是Apache软件基金会的一个软件项目,旨在自动化软件系统之间的数据流。它利用提取、转换、加载 (ETL) 的概念,基于美国国家安全局 (NSA) 之前开发的“NiagaraFiles”软件,该软件也是其现在名称的一部分——NiFi 的来源,它在2014年NSA技术转让计划的开源的清单里面。

简单而言Apache NiFi是一款开源的数据流处理工具,提供了强大的数据采集、传输、转换和处理能力。它可以帮助用户轻松地构建可扩展、高度可配置的数据流处理管道,支持从各种来源(包括本地磁盘、网络、传感器等)获取数据,并将其路由、转换、过滤和聚合后输出到各种目标(包括 Hadoop、HDFS、Kafka、Solr等)。同时,Apache NiFi 还提供了直观的可视化界面,帮助用户快速构建和管理数据流处理任务。

Apache NiFi的体系结构基于可插拔的Processor、Controller Service和自定义Extension,使其能够快速适应不同的场景和需求,同时保持高性能和可靠性。NiFi的里层还依托Java虚拟机,建立在Spring基础上。根据处理流量的大小,决定了其对系统资源的占用情况以及是否需要硬件支持。

如上图所示,NiFi支持单机和集群模式。在分布式部署的情况下,ZK作为分布式一致性的中间件。每个节点都建立在JVM的基础上,中间是各种处理数据的Processor,底层则是NiFi的数据存储仓库以及数据监管机制。

上图为数据流工程的一部分,可以进行分领域设计。简单、干净和高可靠。

数据模型

NiFi的整体框架下,数据模型被建模为FlowFile,请记住这个术语。它由内容(Content)和属性(Attribute)两部分组成。毕竟在物理世界,任何的数据消息都是由消息体和头部信息组成。一系列的处理组件在相同的规范下互相连接形成处理管道。数据会沿着管道进行流动形成数据流。同时,NiFi的组件很丰富,截止到1.27的版本已经接近400+。<不够用,没问题,可以自己定义。>

每个组件都是FlowFile进,FlowFile出。每份数据都会从流的开始传输到流的结束。默认情况下,它使用已NiFi的存储介质作为机制,例如本地磁盘,因此NiFi对于I/O的要求比较高。

FlowFile Content存储着数据主体信息,可以理解为文本内容,可以是Json格式,也可以是二进制文件等等。而FlowFileAttribute则是添加到每个FlowFile文件上面的Key-Value对,也即为键值对。

这些属性的有一部分是NiFi系统给每个FlowFile加上(例如FlowFile创建时间、FlowFile大小、uuid等等),也可以使用户自行添加的属性对,还可以是由Processor(每个处理节点)自己设置,用来标明这些数据的特定属性或状态。

每个流的数据都可以在NiFi GUI可视化直观的跟踪和显示,尤其可以追溯每份数据处理的链路图,比如源头和处理的组件,类似数据的血缘追踪。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue 生命周期选项:2.x 与 3.x 的全面解析及案例分享二
  • bug积累
  • Pycharm中重命名项目之后切换虚拟环境
  • 搜维尔科技:如何使用 SenseGlove Nova 在其“CAVE”投影室中操纵虚拟物体
  • 数据赋能(169)——开发:数据分析——实施过程、应用特点
  • 如何禁止网络爬虫
  • Flutter GPU 是什么?为什么它对 Flutter 有跨时代的意义?
  • Linux目录结构常用命令和文件管理解析
  • 【数据结构】线性表(线性表的定义和基本操作)
  • xss漏洞(三,xss进阶利用)
  • C语言----计算开机时间
  • 观成科技:海莲花活跃木马KSRAT加密通信分析
  • 建筑幕墙题库+解析《建筑幕墙保温性能检测方法》GB/T 29043-2023
  • vue3 组件传参
  • python3.10安装geopandans实战笔记
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • cookie和session
  • es6
  • GraphQL学习过程应该是这样的
  • Laravel Mix运行时关于es2015报错解决方案
  • Netty源码解析1-Buffer
  • PaddlePaddle-GitHub的正确打开姿势
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 区块链将重新定义世界
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 通过npm或yarn自动生成vue组件
  • 微信小程序--------语音识别(前端自己也能玩)
  • 怎么将电脑中的声音录制成WAV格式
  • zabbix3.2监控linux磁盘IO
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #android不同版本废弃api,新api。
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Oracle)SQL优化技巧(一):分页查询
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (四)事件系统
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .Net 路由处理厉害了
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET构架之我见
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @RestControllerAdvice异常统一处理类失效原因
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • []sim300 GPRS数据收发程序
  • [000-01-030].Zookeeper学习大纲
  • [AAuto]给百宝箱增加娱乐功能