开发者学堂课程【NiFi 知识精讲与项目实战(第二阶段):连接与关系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/706/detail/12542
连接与关系
内容介绍:
一、细节
二、设置
三、负载均衡功能
四、集群连接摘要
五、优先级
六、更改配置和上下文菜单选项
七、弯曲连接
八、操作
NiFi 的连接与关系,NiFi 的连接和关系之前的操作当中,使用了很多次,应该都比较熟悉,但并没有深入的去了解特性。在创建处理器以后,要做的是把不同的处理器连接在一起,形成一个数据流。进行连接是通过处理器上面的这个箭头。
拖动这个键就可以进行连接。
一、细节
每一个链接都需要一个关系来进行路由,这个关系,如果上游处理器只有一个关系默认会是选中的状态,
否则需要手动的去勾选,但是也会出现一种情况,同一个关系,可能会被路由到多个不同链接上面去,就会出现,这个关系里面所涉及到 flow file 会复制多份,发送到不同的连接当中,并不是一个负载均衡的消费,会去复制。
二、设置
setting 设置界面,在这个设置界面当中,
可以设置连接的名称,但是也可以不填写名称,是 connection 关系的名称,还有一个是 flow file,可以在这个设置界面去设置一个到期时间,到期的意思是数据流从创建开始一直超过,一直等待某一个特定的时间以后,还没有被这个下游节点消费。这个时候就会被 NiFi 从的队列当中删除掉,
如上图,默认的是零,零的意思是永不过期,如果把零改成了其的时间,比如改成了一个小时,到一个小时以后队列当中的数据,已经存在了一个小时,还没有被消费,就会被 NiFi 给删除掉,这是队列当中,可以设置的 flow file 到期,另外一个,背压是指 flow file 在队列当中存在限制。主要包含两个方面,一个方面,是 flow fell 数量的限制,另外一方面,是 flow fell 在队列当中,所保存的大小限制,这两个值是可以配置的,如下图两个配置项,第一个配置项指的是 flow 票在队列当中所存在的这个数最大上限的这个数量。右边的这个值,flowfile 在这个队列当中所存在的最大的这个文件大小,
两个数值设置以后,就可以在工作面板当中,看到进度条,
比如设置的是1万和一个 G,当这个值小于60%的时候,也就是6000兆时,它会显示绿色,也就是0%-60%,如果当它的数据量,达到了6000到8500之间时,如果设置是10000,就是6000,6000条数据的时候,也就是61%到85的时候,会显示成黄色,当超过8600条的时候,也就是8600到100%的时候,就会显示红色,这个时候,就可以很明显的来提示 queue 队列当中的数据,快要超过的预支了,在右侧,显示的是 flow file 要在队列当中已经存在的数据的大小,数据大小的百分比。所展示的颜色和刚才所说的,这个数据量是一样的,
可以把鼠标移动到这个进度条上面,移动到这个进度条上面以后,就会显示一些具体的信息,
比如82%,通过这样的信息来进行展示,当的队列完全填满以后,这个链接就会显示一个高亮的红色,
刚才还提到 flow file 到期也有专门的图标,就是时钟的图标,也就是这里面的数据,是会进行到期删除处理的,如果不设置,默认是零,就不会有这个图标。
三、负载均衡功能
负载均衡的功能:
第一个选项是不负载均衡,这是一个默认值,之前在使用的时候,选用的是循环,也就是使用轮循的方式,来负责负载均衡。 第二个是按照的属性去进行负载均衡,按照某一个之外的, 第三个是单节点,就是指定就由哪个节点来运行,来计算 FlowFile 队列的数据,
另外 nifi 会在重新启动的时候,保存集群当中的所有节点信息,这样当重新启动以后,nifi 集群就不用再重新去分配数据了,会等待所有节点都启动以后,再去进行处理,如果集群打算把某一个节点删掉,必须要手动的,把删掉以后再进行重启这样话,集群也是会把节点信息记录下来.
负载均衡压缩方式,有三种,之前采用的是压缩属性和内容这种方式。默认的是不进行压缩,
负载均衡指示器,如下图图标,
当正在分配数据的时候,会是如下图的图标,
分配完数据以后,就会显示成如下图的图标,就是分配完成了,
四、集群连接摘要
集群还有一个连接的摘要信息可以去查看,查看集群可以选择某一个连接选项卡,点击选项卡里面的 connection details,这样的一个按钮就可以进行查看了,这个面板在之前 summary 面板当中可以进行查看,
是可以通过查看以后可以看到这些数据,到底都在哪一个集群的哪一个节点上分配,每一个节点又分别占用了多少多少的数据。
比如上图当中这个两个节点,一个是431个是4443这个节点,队列里面有124个数据,占用队列的是1%。然后,这个大小是12%,就可以知道,负载均衡的情况,目前来看,从这个图,现在这个负载均衡的情况是非常的平均。
五、优先级
还可以设置优先级,主要指的是 NiFi,在进行队列输入的时候去消费的一个顺序,这个顺序是在的连接选项卡设置当中去进行的。
配置项:
1、首先第一个的意思是会首先处理第一个到达的,最早到达的优先处理,First in first out,先入先出,
2、第二个 news flow file first,是最新的数据后来的数据先进行处理,跟之前的那个正相反,
3、第三个是 oldest flow file first,是根据数据流当中 flow file 创建的时间,如果创建时间越早,就越先去处理它。是默认的选项,排序优先级选项,
4、第四个是 priority at BAT,通过这个属性,Priority 属性来进行优先级的划分,如何来使用,非常的灵活,但是要求有一个条件,必须要为 flow file 设置 priority 的属性值,在这个属性值就可以去进行优先级的排序,它的值越小优先级就越高,最低优先级的优先处理,也就是这个值越小,就是1最先执行,2其次,3再往后就按照这样顺序去进行执行,
(1)在使用这种方式的时候,必须要使用 update alphabet 在的 flow file 当中去添加属性,叫做 priority。如果没有这个属性,就没有办法去进行优先级的排序;
(2)如果有这样的属性,值还是最小的会优先执行,属性值在 flow file 当中都没有,只在某一个或者某几个 flow file 当中出现,就会优先处理有 priority 的 flow file,没有就往后排,
(3)priority 属性值,可以是数字也可以是字母,最好是用数字1到9,如果用字母,就是 a 到 Z,按照这样的顺序来排序,
(4)但是有一种情况,如果 priority 内容不能转化为 long 结构数字,就会使用字符的形式去进行匹配,比如99-100,可以转化为 long 类型。所以99会优先执行,但是如果使用a-99和a-100的时候,a-100就会优先执行,因为用这种字符的方式去匹配,到零这个字符时,0-9要小,就会把它优先执行,判断不出来100 比99更大。 所以最灵活的是 pretty 这种方式来进行排序,
注意:如果配置有负载均衡策略时,除了本地队列以外,每一个集群都有一个队列,这时的排序是按照每一个节点,自己独立的顺序去执行,不会考虑整个集群的顺序,所以如果要做全局的排序,这个时候队列就不能使用负载均衡的策略。
六、更改配置和上下文菜单选项
可以去更改的配置以及上下文的这个菜单,这个要更改必须要把相关的处理器,连接的处理器都停止以后才能去修改,否则是没有办法进行的,
而下图是这个队列,右键后所出现的菜单。
七、弯曲连接
弯曲连接主要是外形上图表展示的功能,如何让队列,线能够通过弯曲的方式来进行展示,只需要在连接的线上面双击就可以,双击以后就会出现新的折点,还可以对这个折点以后再去双击某一个线,就会出现一个新的折点,可以不断的进行弯曲,如果要想把这个折点消除掉,可以在弯曲的点上面,双击就可以消除这个弯曲,变成直线。
八、操作
演示连接与关系的使用,回到 fNiFi 处理器面板,首先启动第一个节点去造数据,然后启动第二个节点去更新,更改的数据内容,再启动第三个节点,让数据替换到的属性当中去,这时候可以看到队列的数据,都已经处理完在这,这个数据的流向已经完成,
接下来,把第二个 replace tax 里面的配置项,把值变更,给删掉。在下一个处理器当中,是通过正则表达式来进行匹配的成直线。如果删除掉以后,正则表达式就会匹配失败,当匹配失败以后,先停止,停止以后可以看到,现在这个队列当中一共有6个数据,
编辑把 replace text 里面的属性,把B给删除掉,这个时候,再去运行数据时,在 replaced 里面正则表达式它就会匹配失败,因为缺少后面数据,
测试,运行 start 启动,启动之前是六个数据,数据并没有继续增加,前面的这些处理器所处理数据都在增加,现在是12个,刚才是11个,它的数据在处理器当中,设置的是当没有匹配成功,会回到自身里面,也就是没有处理成功的,就不再向外进行流转了。
为了更好的观察数据流向,可以再添加一个新的处理器,叫了叫做 log attribute 的处理器,
把 Extract text 处理器连接过来,选中 unmatched
这时 unmatched 就不再回到自身而是发送到 log aspect 组件当中,重新启动处理器。matched 没有增加但是unmatched 队列增加了5个数据,在不断增加,
这时如果重新修改配置,重新改为 C.D,处理器 extract 就会成功的匹配到之前的 flow file,这时,unmatched 就不会再增加,matched 数据就会增多,
启动,matched 增加从1变成7,而 unmatched 一直是2,数据没有任何的变化。
设置 flow file 到期功能,比如还是这个选项,这个链接,点击编辑,可以在 setting 界面去设置到期时间,比如在这里面原来是0,就是没有过期时间,改为10,会发现又多了一个按钮,又多了一个图标,
也就是超过十秒钟数据还没有被消费就会被清洗掉, 还可以测试如何来设置背压,如下图,背压数据有两个,都设置为0意思是被压现在是没有任何限制的。
数据的值,是可以在 flow file 当中进行设置,但是有个默认值,而这个默认值,也需要去进行配置的。在nifi.properties 配置文件当中进行配置,有两个选项,一旦把这两个选项设置出来值以后,就会有默认值,现在没有设置所以没有默认值,比如设置为10,另一个改成10兆,
意思是队列积压的数据,如果超过10个,或者说大小超过了10兆,就会不再会接收新的数据,点击 replace 就是发现,这个链接和其链接有点不太一样,多了两个条状的图形,如下图,
把鼠标放上去,就会展示现在背压的情况,现在0%就是里面没有任何的数据。
负载均衡,如下图图标,
可以去更改弯曲链接,让链接变成折线的,双击线,比如想要在哪进行弯曲就双击哪块的线,双击以后,会出现黄色的点,然后拖动这个点以后发现变成弯曲的了。
如果还想再加一个弯曲,继续进行双击,就会又多了一个曲线,可以拖动这个曲线进行弯曲。
如果想把某一个弯曲去掉,可以点击想要去掉的弯曲,进行双击,这时就变成直的,再点双击就又出来一个曲线。