赞
踩
看了一下网上的文档大多数是基于比较早的版本的 ,把我的经验拿出来分享一下
一、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 ,但是这样的话在web界面就会无法分辨节点
- > 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
<property name="Connect String">10.0.3.12:2181</property> # 添加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
选项。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。