大家好,欢迎来到IT知识分享网。
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权限。
原文转载至:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15906.html