看了一下网上的文档大多数是基于比较早的版本的 ,把我的经验拿出来分享一下
一、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选项。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)