基于Nifi 1.15.2 集群搭建

基于Nifi 1.15.2 集群搭建,第1张

基于Nifi 1.15.2 集群搭建

看了一下网上的文档大多数是基于比较早的版本的 ,把我的经验拿出来分享一下

一、NiFi是什么?

Apache NiFi 是为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。简单地说,NiFi是为自动化系统之间的数据流而生。 这里的数据流表示系统之间的自动化和受管理的信息流。 基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。

上面这段话,写的很专业、很术语,翻译过来无非就是,Nifi是一个专门用来流转、处理数据的高级分发系统。说白了,就是用来倒腾数据。

举一个例子:当一个企业或者一个组织,大多数业务都采用信息化的时候,势必就要使用各式各样的软件系统(人事管理系统、财务管理系统、报表管理系统、物流管控系统等等),不同的软件系统来自于不同的厂家,它们设计的初衷就是各自为政,只负责自己的业务范围。现在用户需要想把各个业务块的数据整合(比如我想把财务、人事、考勤啥的串起来,方便统一查阅、统计),就必然要经过从各个系统中导出数据、汇总数据、处理数据冲突,这些事如果让人来干,结果可想而知,而Nifi就能充分解决这种场景。

总的来说,Nifi就是一个数据接入、处理、清洗、分发的系统(基于Web方式工作,后台在服务器上进行调度)。

二、部署

从NiFi 1.0版本开始,NiFi采用Zero-Master集群模式。NiFi集群中的每个节点都对数据执行相同的任务,但每个节点都运行在不同的数据集上。Apache ZooKeeper选择其中一个节点作为集群协调器,故障转移由ZooKeeper自动处理。所有集群节点都会向集群协调器报告心跳和状态信息。集群协调器负责断开和连接节点。作为DataFlow管理器,您可以通过集群中任何节点的UI与NiFi集群进行交互。您所做的任何更改都会复制到集群中的所有节点,从而允许多个入口点进入集群。

本文不涉及https部分。内网不需要

下载安装包 放置到合适的位置

修改conf 下的nifi.properties

> nifi.remote.input.host=10.0.2.226 #路由输入地址
> nifi.remote.input.secure=false  #默认是true
> nifi.remote.input.socket.port=6344  #设置一个路由输入端口 默认没有

> nifi.web.http.host=10.0.2.226 #设置一个web启动ip 也可以设置成0.0.0.0 
> nifi.web.http.port=6343 #默认为空  设置一个web端口

> #nifi.web.https.host=127.0.0.1
> #nifi.web.https.port=8443
> #nifi.web.https.network.interface.default=

> #nifi.web.https.ciphersuites.include=
> #nifi.web.https.ciphersuites.exclude=

这几个默认打开的  不用https  注释掉

> nifi.cluster.is.node=true #分布式集群中的节点 默认为false
> nifi.cluster.node.address=10.0.2.226  #节点名称
> nifi.cluster.node.protocol.port=6341 #端口


nifi.cluster.load.balance.host=10.0.2.226  # cluster 负载均衡配置 这个不需要每个节点配的不一样

nifi.zookeeper.connect.string=10.0.3.12:2181 #zk的地址 可以用逗号分开写集群 例如: cdh01:2181,cdh02:2181,cdh03:2181

nifi.kerberos.krb5.file=/etc/krb5.conf #按需填写 我有kerberos

注意有个大坑就是zk必须是3.6以上的新版本 折腾了好久 

还需要修改 state-management.xml

10.0.3.12:2181  # 添加zk的地址,似乎nifi里的配置不生效

修改 bootstrap.conf

> java.arg.2=-Xms10240m
> java.arg.3=-Xmx10240m
默认2048 太小

分发到所有节点上   需要按节点修改的配置修改成各节点的配置 

启动

nifi.sh start

登录到协调节点  ip:端口  

左上角是集群的节点数量 右上角可以打开查看集群详细信息 

nifi 3节点集群到这就初步搭建完毕 

下面是一些系统级别的最佳实践

最大文件句柄

NiFi 在任何时候都可能打开大量文件句柄。通过编辑/etc/security/limits.conf添加类似的内容来增加限制

* 硬文件 50000
* 软文件 50000

最大分叉进程

NiFi 可以配置为生成大量线程。要增加允许的数量,请编辑/etc/security/limits.conf

* 硬 nproc 10000
* 软 nproc 10000

您的发行版可能需要通过添加来编辑/etc/security/limits.d/90-nproc.conf

* 软 nproc 10000

增加可用 TCP 套接字端口的数量

如果您的流程将在短时间内建立和拆除大量套接字,这一点尤其重要。

sudo sysctl -w net.ipv4.ip_local_port_range="10000 65000"

设置套接字在关闭时保持 TIMED_WAIT 状态的时间

鉴于您希望能够快速设置和拆除新的套接字,您不希望您的套接字停留太久。阅读更多关于它并适应类似的东西是个好主意

对于内核 2.6

sudo sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait="1"

对于内核 3.0

sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait="1"

告诉 Linux 你永远不希望 NiFi 交换

交换对于某些应用程序来说非常棒。对于像 NiFi 这样总是想要运行的东西来说,这并不好。要告诉 Linux 你想换掉,你可以编辑/etc/sysctl.conf添加以下行

vm.swappiness = 0

对于处理各种 NiFi 存储库的分区,请关闭atime. 这样做会导致吞吐量的惊人增长。编辑/etc/fstab文件并为感兴趣的分区添加noatime选项。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5706047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存