nifi-集群搭建,新增用户

本文介绍了NIFI的基础概念及架构,演示了如何通过简单实例掌握NIFI的使用方法,并详细讲解了NIFI集群的搭建步骤,包括配置、用户认证等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NIFI 简介
1、NIFI 的概念
1.1 起源:NIFI是为了自动化的处理和管理系统之间的数据流而产生的,基本设计概念与基于流的编程[fbp]的主要思想密切相关
1.2 nifi核心概念
FlowFile:FlowFile表示通过系统移动的每个对象,包含数据流的基本属性
FlowFile Processor(处理器):负责实际对数据流执行工作
Connection(连接线):负责不同处理器之间的连接,是数据的有界缓冲区
Flow Controller(流量控制器):管理进程使用的线程及其分配
Process Group(过程组):进程组是一组特定的进程及其连接,允许组合其他组件创建新组件
2、NIFI 架构
这里写图片描述

架构介绍
NIFI在主机系统中的JVM中执行,主要组件有:
网络服务器
Web服务器的目的是托管NiFi的基于HTTP的命令和控制API。
流量(Flow)控制器
它为要运行的扩展提供线程,并管理扩展接收要执行的资源的时间表。
扩展(Extension)
扩展在JVM中操作和执行。
FlowFile存储库
FlowFile存储库是NiFi跟踪其对当前在流中活动的给定FlowFile知道的状态的地方。
内容存储库
Content Repository是给定FlowFile的实际内容字节所在的位置。Provenance信息库
Provenance信息库
Provenance Repository是存储所有来源事件数据的地方。
3、NIFI启动
打开安装目录
前台运行:bin/nifi.sh run
后台运行:bin/nifi.sh start
重新启动:bin/nifi.sh restart
安装即服务:bin/nifi.sh install /etc/init.d/nifi ..

打开Web浏览器并导航到http://localhost:8080/nifi 即可看到NIFI的UI界面

4、NIFI UI界面介绍
这里写图片描述
工具栏以拖动的方式,拖动到nifi画布。

5、NIFI实例
通过简单的GetFile,PutFile实例,来熟悉NIFI使用
1、通过拖动UI上的Processor图标到NIFI画布上可以开始创建数据流,成功后如图:
这里写图片描述
输入GetFile,点击ADD
选中GetFile处理器,右击选择Configure,配置相关信息,其中粗体的为必填信息,完成后点击APPLY。
同理设置PutFile,完成后如图:
当处理器的左上角看到一个警告图标图标时说明处理器不能启动,需要进一步正确配置相关内容。
每个处理器都有一组定义的“关系”,最基本的有success和failure。
使用鼠标悬停在GetFile处理器上,可以看到箭头
拖动箭头到PutFile,出现如下图:选中success点击add即可完成。
可以看到PutFile处理器上仍有警告。提示为success和failure关系未连接到其他组件和自动终止。可以右击configure。在setting中勾选中success和failure即可实现自动终止。
这里写图片描述
依次启动各个处理器,一般按照从后向前的顺序启动,运行成功后结果如图:
数据成功的完成了在不同位置的转移
图上可以看到输入输出的数据流的大小等情况。
当运行出现问题时右上角会出现红色方框,放到上面会出现提示信息。
右击处理器中间的连接线,可以配置处理FlowFiles的优先级和缓冲区大小。
NiFi为back pressure提供了两个配置元件。分别对应的是对象数量和数据大小。
并且进度条基于队列百分比改变颜色:绿色(0-60%),黄色(61-85%)和红色(86-100%)。鼠标悬停在上面可以显示精确的百分比。
右击处理器的data provenance可以看到关于数据流的详细信息。
6、NIFI状态指示灯
状态指示灯:显示处理器的当前状态。可能有以下指标:

运行 正在运行:处理器当前正在运行。

停止 停止:处理器有效且已启用,但未运行。

无效 无效:处理器已启用,但当前无效,无法启动。将鼠标悬停在此图标上将提供一个工具提示,指示处理器无效的原因。

禁用 已禁用:处理器未运行,只有启用后才能启动。此状态不表示处理器是否有效。

NIFI的常用处理器介绍
8、NIFI 集群
核心模块:
NiFi Cluster Coordinator(集群协调器)–集群中节点,负责控制任务和管理节点有负载均衡的功能。
节点 –负责实际的数据处理
主节点 –有zookeeper自动选择,此节点上运行隔离处理器
Isolated Processors(隔离处理器) – 不希望在每个节点上运行的任务。独立运行。
Heartbeats(心跳) –传达节点的运行状态。与集群协调器通信
特点:采用零主集群范例。每个节点对数据执行相同的任务,但每个节点对不同的数据集进行操作

1、普通集群
配置conf/nifi.properties下的:
nifi.cluster.is.node=true (作为集群节点)
nifi.zookeeper.connect.string=name87:2181,name86:2181(连接到zookeeper)
并将相关的地址改为主机名(默认为localhost),不改会造成集群启动成功后,显示的节点名相同。

2、带证书的用户验证集群

一、nifi的安全配置

NIIF的Security Configuration,可通过附带的TLS生成工具包配置。
配置过程如下:
打开toolkit安装目录,运行
bin/tls-toolkit.sh standalone -n ‘name87,name86 -C ‘CN=username,OU=NIFI’
生成证书和相关的配置文件
-n,–hostnames主机名
-C,–clientCertDn客户端证书的DN
cp name87/* ${nifi_home}/conf/
将相关配置文件复制到NIFI的conf文件目录下。
二、集群搭建
将conf/nifi.properties下的:
nifi.cluster.is.node=true (作为集群节点)
nifi.zookeeper.connect.string=name87:2181,name86:2181(连接到zookeeper)
并配置conf/zookeeper.properties下的:
server.1=name87:2888:3888
server.2=name86:2888:3888
配置conf/state-management.xml:
name87:2181,name86:2181
三、用户认证
用户认证有LDAP和Kerberos两种方式
利用kerberos认证过程如下:
安装配置kdc:

yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation      (安装)
vi /etc/krb5.conf             将默认的两项改为自己的主机名,如下
[realms] 
EXAMPLE.COM = { 
kdc = name87
admin_server = name87 }

kdb5_util create –s          创建kerberos数据库,并输入相应的密码
开启kdc和kdc admin服务
# /etc/rc.d/init.d/krb5kdc start
# /etc/rc.d/init.d/kadmin start
# chkconfig krb5kdc on
# chkconfig kadmin on
添加服务主体并导出keytab
# kadmin.local   
# addprinc -randkey nifi/HDF  
# ktadd -k /opt/nifi-HDF.keytab nifi/HDF  
# q
添加用户认证并初始化
# kadmin.local -q "addprinc username"         
# kinit username@EXAMPLE.COM 
在conf/nifi.properties中相应位置添加以下内容:
nifi.security.user.login.identity.provider=kerberos-provider
# kerberos #
nifi.kerberos.krb5.file=/etc/krb5.conf
nifi.kerberos.service.principal=nifi/HDF@EXAMPLE.COM
nifi.kerberos.keytab.location=/opt/nifi-HDF.keytab
nifi.kerberos.authentication.expiration=12 hours
在conf/login-identity-providers.xml中配置如下:
<provider> 
<identifier>kerberos-provider</identifier> 
<class>org.apache.nifi.kerberos.KerberosProvider</class>  
<property name="Default Realm">EXAMPLE.COM</property>  
<property name="Kerberos Config File">/etc/krb5.conf</property>  
<property name="Authentication Expiration">12 hours</property>  
</provider>


#在conf/authorizers.xml中将初始用户设置为kdc中建立的用户,并添加节点代理如下:
<property name="Initial Admin Identity">username@EXAMPLE.COM</property>
<property name="Node Identity 1">CN=name87, OU=NIFI</property>
<property name="Node Identity 2">CN=name86, OU=NIFI</property>
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

启动NIFI,输入username和相应的密码登录完成。
启动完成后入下图:
注意此时的网址变为了:https://hostip:9443/nifi/
这里写图片描述

四、新增用户
增加用户过程如下:以主账户登录–在kdc中添加用户(设置用户名、密码)–在nifi中添加相应用户(并设置ui权限)–退出主账户–已设置的其他账户登录。
新增用户的相关权限可通过主用户在nifi全局菜单栏的polices下更改。
五、使用集群实现负载均衡
实现方式:通过NIFI的Remote Process Group(RPG)
如图:
具体流程为 Processor1–RPG–input–Processor2
注意此时的url应该为集群协调器所在节点的url。Url可换为主机名。
连接RPG需要配置,否则无法连接

# Site to Site properties
nifi.remote.input.host=name87
nifi.remote.input.secure=false
nifi.remote.input.socket.port=12222
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

对于带权限的nifi实例(即配置了用户的),需要通过:Input模块可能需要通过左下方的锁更改取得receive data权限。

这里写图片描述



原文转载至:

### 基于Hadoop的B站视频数据分析系统架构设计 #### 1. 技术选型与环境搭建 为了实现高效的数据处理分析能力,该系统选用 Hadoop 生态圈中的多个组件来完成不同层次的任务需求。具体来说: - **数据存储层**:利用 HDFS (Hadoop Distributed File System) 来作为底层文件系统的支撑,能够提供高可靠性扩展性的海量数据存储服务[^3]。 - **计算引擎层**:引入 Spark 或 MapReduce 进行大规模并行运算操作;考虑到实时性要求较高的场景下推荐使用 Apache Spark Streaming 处理流式数据输入。 - **资源调度管理层**:通过 YARN (Yet Another Resource Negotiator),可以有效地管理分配集群内的各种硬件资源给不同的应用程序实例运行时所需。 - **交互查询接口**:对于上层应用而言,则可借助 Hive SQL 提供类SQL语法支持使得业务人员更容易理解编写复杂查询逻辑;同时也兼容 Presto/Impala 等分布式SQL执行器用于加速特定类型的读取请求响应速度。 #### 2. 数据采集与预处理阶段 针对 Bilibili 平台上的公开 API 接口获取到原始 JSON 格式的元数据记录之后,在进入正式入库之前还需要经历一系列清洗转换流程以确保后续加工环节顺利开展: - 使用 Python 编写脚本来定期抓取目标网页内容或是调用官方提供的 RESTful Web Service 获取最新发布的多媒体素材详情; - 对收集回来的信息按照既定规则去除噪声项(如HTML标签)、填补缺失字段值、统一日期时间戳格式化表达方式等标准化措施; - 将经过初步整理后的半结构化文档序列化成 Parquet/ORC 文件形式保存至本地磁盘等待下一步传输动作发生前暂存起来备用。 ```python import requests from datetime import datetime, timezone import pyarrow.parquet as pq import pandas as pd def fetch_bilibili_data(api_url): response = requests.get(api_url) data = response.json() df = pd.DataFrame(data['data']) df['timestamp'] = datetime.now(timezone.utc).isoformat() table = pa.Table.from_pandas(df) pq.write_table(table, 'bilibili_videos.parquet') fetch_bilibili_data('https://api.bilibili.com/x/web-interface/newlist?ps=50&tid=0') ``` #### 3. ETL 流程定义及实施策略 ETL 是指 Extract(抽取), Transform(转换), Load(加载) 的缩写术语,这里主要指的是如何把来自外部源端点处获得的第一手资料导入内部仓库之中去的过程描述如下所示: - 利用 Flume/Nifi 工具链路负责监听指定目录下的新增文件事件触发后自动上传至远程服务器节点位置; - Sqoop 可帮助快速迁移关系型数据库表内存量较大的静态历史档案迁移到 NoSQL 类型的目标容器里边儿; - Oozie 调度作业计划安排每日定时启动批处理任务批次循环迭代直至全部完成为止。 #### 4. 数据挖掘建模实践指南 当完成了上述准备工作以后就可以着手准备建立预测模型了,这一步骤往往涉及到特征工程选取哪些维度属性参与训练过程最为合适?算法选择方面有哪些考量因素呢? - 特征提取部分可以从用户行为轨迹追踪路径长度统计量级分布规律出发寻找潜在关联模式线索; - 应用机器学习库 MLlib 中集成好的分类回归树 CART、随机森林 RF、GBDT 梯度提升决策树等多种经典方法论尝试解决实际问题挑战; - 结合 TensorFlow/Keras 开发深度神经网络DNN框架探索更加复杂的非线性映射关系表示可能性空间范围边界拓展研究方向。 #### 5. 可视化展示效果呈现手段探讨 最后但同样重要的一环就是怎样直观形象地向受众传达背后隐藏着的价值洞察力所在之处了——即报表图表图形界面友好程度决定了最终用户体验满意度高低水平差异表现出来: - Tableau PowerBI Qlik Sense 等商业智能 BI 解决方案提供了丰富的模板样式可供定制修改调整满足个性化偏好设定需求; - D3.js Plotly Bokeh Seaborn Matplotlib 等开源 JavaScript 绘图库允许开发者灵活自定义绘制任意形状大小颜色渐变动画特效增强视觉冲击力度吸引注意力停留更长时间间隔周期观察变化趋势走向特点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值