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可视化直观的跟踪和显示,尤其可以追溯每份数据处理的链路图,比如源头和处理的组件,类似数据的血缘追踪。
相关文章:
NiFi :1 初识这把“十年一剑”的利器
--->更多内容,请移步“鲁班秘笈”!!<--- “现在AI和数据处理密不可分,80%的企业可以利用Apache NiFi轻松解决复杂的数据问题,快速完成场景建设。犹如花上百来块钱在家享受一顿不亚于五星级西餐厅的法式大餐。对…...
Pyside6实战教程专栏目录
Pyside6实战教程🚀 专栏目录介绍 本专栏将详细地向Python开发者展示如何利用PySide6框架创建功能丰富的桌面应用程序。无论你是刚刚接触GUI编程的新手,还是希望快速提升自己技能水平的进阶用户,本文都将为你提供一系列简单易懂的教程…...
【Dash】使用 Dash Design Kit (DDK) 创建图表
一、Styling Your App The examples in the previous section used Dash HTML Components to build a simple app layout, but you can style your app to look more professional. This section will give a brief overview of the multiple tools that you can use to enhan…...
C++ 几何算法 - 向量点乘,叉乘及其应用
一:点乘介绍 1. 向量点乘: 2. 向量点乘的性质: 3. 向量点乘公式: 4. 向量的点乘的属性: (1):向量与自身做点乘,会得到向量长度的平方: (2…...
Taro学习记录(具体项目实践)
一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件,可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…...
ICML 2024 | 矛与盾的较量!北大提出提示无关数据防御保护算法PID
文章链接:https://arxiv.org/pdf/2406.15305 代码地址:https://github.com/PKU-ML/Diffusion-PID-Protection 亮点直击 本文在实证观察中发现,保护阶段和利用阶段之间的提示不匹配可能会削弱当前数据保护算法的有效性。本文深入探讨了利用LDM…...
Oracle聚合函数LISTAGG和WM_CONCAT简介
目录 Oracle聚合函数LISTAGG和WM_CONCAT简介LISTAGG 函数1.语法2.示例3.去除重复值 WM_CONCAT 函数1.语法2.示例3.去除重复值 比较1.性能2.排序与分隔符3.去除重复值 Oracle聚合函数LISTAGG和WM_CONCAT简介 在处理数据库中的数据聚合任务时,我们经常需要将多行数据…...
【Unity】多种寻路算法实现 —— BFS,DFS,Dijkstra,A*
本实验寻路算法均基于网格实现,整体称呼为Grid,单个瓦片称之为Tile 考虑程序处理的简洁性,所有算法使用同一种Tile,且权值点,A*所需的记录数值也全部放在Tile中记录 前排贴上代码仓库链接: GitHub - Sir…...
十大游戏设计软件:创意实现的利器
在数字娱乐的多彩世界里,游戏设计无疑是一项充满创意与技术挑战的艺术。随着技术的进步,游戏设计师的手中拥有了一系列强大的工具,它们让想象中的世界得以呈现,让玩家的体验更加丰富和真实。本文将带你走进游戏设计的幕后…...
Pandas高级操作:多级索引、窗口函数、数据透视表等
在数据处理和分析中,pandas库提供了强大的功能,支持从简单到复杂的数据操作。本文将介绍一些pandas的高级操作,包括多级索引(MultiIndex)、窗口函数(Window Functions)、数据透视表与复杂聚合、数据合并与连接、高级数据变换以及时间序列数据的高级处理。 1. 多级索引(…...
mysql源码编译启动debug
对于没有C语言基础的同学来说,想看看源码,在搞定编辑器做debug的时候就被劝退了,发生点啥了,完全看不懂,不知道从哪里入手去做debug;我为了看看 mysql 的 insert buffer 到底存的是索引页还是数据页&#x…...
吴恩达机器学习-C1W3L2-逻辑回归之S型函数
可选实验:逻辑回归 在这个不评分的实验中,你会 探索sigmoid函数(也称为logistic函数)探索逻辑回归;哪个用到了s型函数 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_one_addpt_onclick import plt_one_addpt_onclick from l…...
P-one新增火焰图-为性能测试开启新视野
随着软件业务流程的日益复杂,传统的性能测试方法已经难以满足对性能问题精准定位的需求。测试人员需要一种更加直观、全面的方式来分析软件在运行过程中的性能表现,以便快速准确地找到性能瓶颈并进行优化。因此,我们在性能测试平台P-One中加入…...
CTF-web基础 TCP/UDP协议
传输层协议由TCP/UDP协议组成,来控制信息的传输,二者有什么区别呢,TCP比较靠谱,但是UDP速度比较快一点。 TCP协议 Transmission Control protocol, 三次握手:先给服务器传输询问要发消息,然后…...
sql常用语法总结
SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。本文用来记录一些接触到的sql语句,随着学习不断进行更新: 选择数据 - SELECT 语句用于从数据库表中检索数据。 SELECT column1, column2 FROM table_name;插入数据 - INSERT…...
实验八 题目描述 从键盘上输入任意一个整数(正负数皆可),判断该整数的绝对值是否为回文数。
实验八 题目描述 从键盘上输入任意一个整数(正负数皆可),判断该整数的绝对值是否为回文数。[提示:取数的绝对值,然后使用用循环语句从该绝对值的末位开始至最高位,重新构造一个数,…...
IsaacLab | Workflow 中 rsl_rl 的 play.py 脚本精读
如是我闻: 在用IsaacLab 做强化学习实验时,回顾已训练好的模型需要调用workflow中的play.py脚本,以下是对rsl_rl的play.py脚本的逐行精读。 1. 版权声明和文件描述 # Copyright (c) 2022-2024, The Isaac Lab Project Developers. # All ri…...
PYTHON专题-(8)我错了该怎么整?
什么是异常处理? 异常处理是一种机制,用于在程序执行期间发生错误或异常时,对发生的异常进行捕获、处理和恢复,以确保程序能够继续执行或正确地终止。异常处理可以包括捕获异常、处理异常,以及执行相应的操作来处理异常…...
【自然资源】设施农业用地的学习梳理
【自然资源】设施农业用地的学习梳理 什么是设施农业用地? 2019年12月17日,自然资源部 、农业农村部印发的《关于设施农业用地管理有关问题的通知》规定:设施农业用地包括农业生产中直接用于作物种植和畜禽水产养殖的设施用地。其中&#x…...
【秋招笔试】24-07-27-OPPO-秋招笔试题(后端卷)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 💡 01.二进制反转游戏 问题描述 K小姐…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...

