NIFI 集群知识点 | 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 NIFI 集群知识点

开发者学堂课程【NiFi 知识精讲与项目实战(第二阶段):NIFI 集群知识点学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/706/detail/12531


NIFI 集群知识点

内容介绍:

1.故障排除

2.State 管理

3.管理节点

4.卸载节点

5.删除节点

6.流动选举


一、故障排除

针对 NiFi 集群的相关知识点来进行学习。首先故障排除,可以在使用NiFi集群的时候遇到问题时候首先要想到的就是去查看 NiFi 的日志,NiFi 日志在 NiFi 根目录里面的log路下有一个叫做 NiFi APP 点 log 文件,还有一个叫做 NiFi 文件,通常错误信息都在的 NiFi APP 这个文件当中,可以通过修改 com 目录下的 look back 点 xm,修改它里面的配置来使的日志级别,变更为 DEBUG。在开发和测试的时候,DEBUG 日志级别,打印的内容会更加的详细,便于去分析和解决问题。


二、state 管理

另一个是 state 管理,相当于状态管理,NiFi 为处理器、报告以及控制器服务框架本身都提供了一种机制来保存状态,比如会让处理器再重新启动,NiFi 以后能够从停止之前的位置恢复运转。处理器可以从机器当中的任何一个节点来获取这个状态信息,相当于这个状态信息在每一个节点中保存的都有,之后是这个配置状态如何来进行,这个组件,如果想要去存入或者去获取它的状态信息,有两种的实现方式,一种方式,是本地的方式,另一种方式,是从集群来获取的方式。这个代码配置在 NiFi 点 property 这个文件中进行配置了。

nifi property 文件当中有三个配置项,其中一个叫做 configuration 点 file,这个配置文件主要用来管理的就是的 stay 的状态信息,值主要就是指定一个 XML 的位置,也就是在每个文件当中去进行配置的,默认值就是之前所更改的 State management.XML,这个配文件一般来说不需要去变更,另外一个叫做 state management provide.logo,这个主要指定的就是本地模式,这个状态信息提供实现类的 ID 标识,然后这个是集群模式获取状态信息,这个它的标符,这三个配置项决定 nifi 如何去进行存储和读取的状态信息。

这些配置项,它指定的配置文件默认是之前所说的 state management,在这个配置文件当中,有一个叫 local provide元素,还有一个叫 cluster provide 元素,刚才运行集群模式的时候修改的是 cluster provide 这个配置,这个配置元素也就是这个元素,在这部分 cluster provide 的最外层 L,而这上面是 local provider,也就是本地的,这些元素每一个都会包含一个 ID 值。ID 配置项,这个 ID 配置项当中配置的是的唯一标识,这个唯一标识可以在的 NiFi 当中去进行引用,在这个里面还有一个是 class 配置项,这个 class 元素,主要是指用哪一个类来实现这些信息的存储和读取,这个类建议不要去变更,不要去修改。

还有一个 provider 信息,包括的 directory,partition 等等,对于这些本地模式的这些配置项推荐就使用默认的配置就可以。

这个配置文件里面,如果配置这些状态信息以后,就可以在 logo 和 cluster 这边直接去引用的ID值就可以了,默认的情况下,本地模式都会使用刚才所说的这个 right ahead local provider,以下这个图这个类,

image.png

如果是集群模式使用的会是 zookeeper states provider,这两个值尽量不要去变动,不要去修改,zkeeper 要使用时需要修改一个配置项。也就是 connect string 这个配置项,在安装部署时已经修改过,已经操作过一次,这个配置项的里面的值,是采用逗号分隔,用这个逗号进行分隔,然后端口号和 IP 地址,使用冒号分隔,在这里面如果说没有配置它的端口号,默认会使用2181做 zookeeper 的这个端口来使用。

当 zookeeper 添加数据时,集群模式里面有一个叫做 access control 这样的一个属性。

image.png

access control 有两个值,一个是 open,一个是 create only 默认是使用了 open,如果是 open 情况下,任何人都可以去登录的 ZK,并且去对它进行操作和查看。如果使用 create only 只有创建人、创建的用户才可以去进行操作,推荐使用 open 这种模式,如果 NiFi 是在独立模式下进行运行,cluster 配置项就不需要再去进行配置了,就算配置了也没有任何用,但是如果在本地模式下 local provider 必须要用。因为这个是默认就带有,所以不需要进行变更,直接启动就可以了,另外如果 nifi 现在正在继续模式运行,每一个节点都必须要配置,这个 cluster 的这个元素指定到 ID 的值,否则的话会进行爆错。

注意,statement 中配置的就是 NiFi 如何去获取和存储的处理器等等,这样的状态信息。另一个如果处理器正在继续模式下运行的过程当中,突然有一个节点和的机器断开链接了,这个节点就会转为本地模式来进行运转,这个时候如果把本地的这个节点,又重新连接到的群当中以后,在本地模式下保存哪些状态,就不在用,不在可用了,因为这个时候就重新地转化为使用集群模式里面的些状态信息来进行运行。


三、管理节点

如何来管理 NiFi 当中的节点,第一个是断开节点,用户可以手动的去断开机型当中的某一个节点,这个操作 Cluster界面里面,通过按钮可以进行操作,有一个关机按钮图标进行操作,还有连接按钮,卸载按钮和删除按钮,这些按钮只有当把这个节点断开以后才会出现,可以在这个机型当中,在这个 NiFi 当中,点开 class。可以看到有这么多,有三个节点,

image.png

可以选中一个节点进行断开,断开以后可以看到这个里面就会显示刚才所说的重新链接以及卸载和删除的这些按钮,建议尽量不要进行卸载和删除,除非真的不想使用这个节点,需要注意的一点,并不是所有这个已断开的这个节点都可以进行卸载,因为有一些断开的链接,是访问不到的,如果这个时候去。卸载就接收不到这个卸载的信息,这个时候,就会卸载不成功,这个时候可以让重新进行链接,


四、卸载节点

卸载节点可以通过刚才把这个节点关闭以后,再来进行这个卸载,如下图图标

image.png

它就会把的处理器这个节点当中所有的处理器全部都终止掉,然后把它从的集群当中剔除出去,并且会把这个节点里面现存的流文件 flowflee 重新分发到其的机器节点当中去。如果遇到一些错误,比如说内存不足或者网页链接,这个时候卸载的这些节点,就无法卸载,这个时候可以重新启动这个节点,然后让重新连接到的集群,然后,再从集群当中去删除、卸载这个节点。


五、删除节点

删除节点是在的卸除、卸载节点以后进行这个操作,会产生一个情况,也就是节点在集群当中再也看不到了。想进行重新连接也不行,除非重启的服务集群,让节点彻底的消除掉有几个步骤,

第一个步骤先断开的节点,也就是刚才所点击的这个关机按钮,

第二个步骤断开连接以后,去卸载这个按钮,

第三个步骤卸载以后再进行删除,卸载以后这个节点当中的所有数据都会重新的负载到其的两个节点当中,这个时候再进行删除,在集群当中就不再可见了,就找不到了,

第四个步骤然后再去停止,删除掉这个服务,并且把它从 Linux 系统之上进行删除。

在重新链接的时候,提示不成功,看一下这个提示信息,

image.png

只有一个节点连接到的集群的时候,才可以操作这个重新链接。现在访问的是18031803,已经集群当中被关闭掉了,这个时候就不能再用法进行操作,但是可以使用其他的节点来进行这个操作。比如访问18001这个节点,现在目前还在的群当中,可以看到在这个群当中,1801和18002还是一个连接的状态。

image.png

这时想要让的这个18003重新进行链接,就可以点击这个 content,再点 yes,这个时候就会发现的这个CONNECT18003已经状态进行变更了,再进行刷新,就已经恢复正常的使用了。


六、流动选举

流动选举指的是集群,当重启以后,state 处理器等等各种组件的状态,以哪一个节点的为准,就要通过选举来产生。集群启动的时候,的 NiFi,必须要确定哪一个节点拥有正确的流行性。就需要通过对每一个节点的流来进行投票,进行投票当节点尝试去连接到集群的时候,这个节点就会把本地的副本 flow.xml.GC 文件传送给的集群协调节点,如果这个时候还没有得到这个最终选举的正确结果,就会把节点提交流和其所有节点的流进行对比,然后每一台都会把跟自己一样的这个数据流信息投一票,如果还没有其节点和自己相同的这种流信息的话,就也仅仅只有一票的这种方式提交到的这个选举结果当中去,这个过程持续直到的这个配置的这个 max with time 这个值达到这个时间。或者说某一个信息、数据投票的数量达到了所指定的这个数量,这两者满足其一,这个时就会选出最终的流信息,也就是这个选举是以票数最多的获胜,什么时候这个选举投票结束,在配置项当中,在做案例的时候,把它改成了一,一秒钟,如果到达这个时间,就会拿到票数最多的节点作为的正确的流文件分享给整个区,或者这个时间还没到,但是,只要有任何一个文件,达到了一个投票。就会把它作为正确的文件信息,这两者满足其中一个,选举就结束了,然后这些和正确的这个文件信息不一致的这些节点,它就会自动的被排除掉,除非这些节点它根本就没有这个流状态信息,而这些具有相同性质的这些节点,就会继承正确的流信息,然后加入集群当中,选举是根据民主投票这种方式来进行,但是需要注意,除非所有这个留信息都是空,否则不可能启动以后会是空的,比如有两个票数一样,会以这个飞空的流为正确流,如果对于加入群失败的这些节点,比如说和正确的流信息不一致,想加入,也可以把它的这个流文件信息 flow.xml.g 文件删除掉,再去启动就可以成功的加入到的集群当中,以上是集群启动的时候涉及到的加入集群以及民主选举之前处理器的状态这样的过程。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 安全 Java
【NiFi】(一)NiFi 简介及核心概念
【NiFi】(一)NiFi 简介及核心概念
2523 0
【NiFi】(一)NiFi 简介及核心概念
|
前端开发 Java Unix
【NiFi】(二)三分钟搞定 NiFi 安装与简单使用!
【NiFi】(二)三分钟搞定 NiFi 安装与简单使用!
2266 0
【NiFi】(二)三分钟搞定 NiFi 安装与简单使用!
|
6月前
|
消息中间件 存储 运维
探究Kafka原理-2.Kafka基本命令实操(上)
探究Kafka原理-2.Kafka基本命令实操
88 0
|
6月前
|
消息中间件 存储 关系型数据库
探究Kafka原理-2.Kafka基本命令实操(下)
探究Kafka原理-2.Kafka基本命令实操
75 0
|
消息中间件 安全 Java
kafka入门必备知识
Kafka是一个分布式流处理平台: 1. 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 2. 可以储存流式的记录,并且有较好的容错性。 3. 可以在流式记录产生时就进行处理。
110 1
|
消息中间件 存储 Kafka
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(下)
177 0
|
消息中间件 NoSQL 中间件
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建(上)
Kafka 实战开篇-讲解架构模型、基础概念以及集群搭建
331 0
|
分布式计算 Hadoop Java
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)(1)
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)
103 1
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)(1)
|
分布式计算 Hadoop 网络安全
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)(2)
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)
107 1
Hadoop快速入门——第二章、分布式集群(第二节、Hadoop分布式模式搭建)(2)
|
监控 负载均衡 数据处理
NiFi 集群知识点 | 学习笔记
快速学习 NiFi 集群知识点
354 0
NiFi 集群知识点  |  学习笔记