nifi-搭建

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>

启动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

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

这里写图片描述

求招聘(持续中20190320)–qq/微信-1255745139
熟悉常见的机器学习方法和以及深度学习方法。

以下是使用 Apache NiFi 搭建简单数据流的 demo 介绍: 1. 安装 NiFi:首先需要下载并安装 NiFi。可以从官方网站下载最新版本的 NiFi,或者从 Apache 的镜像站点下载。安装完成后,启动 NiFi。 2. 创建数据流:在 NiFi 的主界面中,点击左侧的 Processors 标签,可以看到各种可用的处理器。选择一个 GetFile 处理器,将其拖拽到右侧的工作区。然后双击 GetFile 处理器,进入其配置界面,设置输入文件夹路径,然后点击 Apply。 3. 添加处理器:在工作区中,再次拖拽一个处理器,例如 ConvertJSONToSQL 处理器。将其连接到 GetFile 处理器的输出端口。然后双击 ConvertJSONToSQL 处理器,进入其配置界面,设置输出数据库连接信息和 SQL 语句,然后点击 Apply。注意,需要预先安装并配置相应的数据库。 4. 运行数据流:在工作区中,点击右上角的运行按钮,NiFi 将开始运行数据流。它会自动从输入文件夹中读取数据,将其转换为 SQL 语句,并将结果插入到数据库中。 5. 监控数据流:在 NiFi 的主界面中,可以看到各种监控信息,包括处理器的状态、数据流的流量、错误信息等。可以使用这些信息来监控和调试数据流。 这是一个简单的 NiFi 数据流示例,演示了如何使用 NiFi 来实现数据处理和转换。根据实际需求,可以添加更多的处理器,以实现更复杂的数据转换和处理任务。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值