nifi-搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34233802/article/details/68942176

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 [email protected] 
在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权限。

这里写图片描述

求招聘(持续中20171120)–qq/微信-1255745139

猜你喜欢

转载自blog.csdn.net/sinat_34233802/article/details/68942176