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

è¿éåå¾çæè¿°

猜你喜欢

转载自blog.csdn.net/tianyeshiye/article/details/92798445