1 简介
NiFi是一个易用、可靠、功能强大的数据处理与分发系统,是Apache的开源项目。只需在web界面中用拖拽的方式定义数据处理节点,数据处理流程和配置相关参数,NiFi即可自动完成复杂的数据处理任务,非常方便。
这里介绍NiFi 1.8.0的安装和启动方法。
2 安装
NiFi的安装使用非常简单,只需配置好JAVA环境,将官网 上下载的NiFi二进制包解压,然后进入bin目录,执行./nifi.sh start,即可启动NiFi。
当然,这种方式运行的是单机版的NiFi,如果要进行分布式安装,还需要进行其他一些配置。
分布式的NiFi需要使用Zookeeper作为集群的管理工具,NiFi本身内置了Zookeeeper,也可以使用独立安装的Zookeeper。
2.1 使用内置Zookeeper
对每一个节点完成以下配置(建议在一个节点配置好,复制到其他节点再稍作修改)
① 修改conf/zookeeper.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 clientPort=2181 initLimit=10 autopurge.purgeInterval=24 syncLimit=5 tickTime=2000 dataDir=./state/zookeeper autopurge.snapRetainCount=30 # # Specifies the servers that are part of this zookeeper ensemble. For # every NiFi instance running an embedded zookeeper, there needs to be # a server entry below. For instance: # server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888 #
最后三行根据集群的实际情况修改
② 在state/zookeeper文件夹下新建myid文件,写入节点编号
1 2 3 mkdir state mkdir state/zookeeper echo 1 > state/zookeeper/myid
不同节点写入的标号不同,要与第一步中的server编号对应
③ 修改conf/nifi.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #是否启动内置的zk nifi.state.management.embedded.zookeeper.start=true #配置zk节点 nifi.zookeeper.connect.string=master:2181,slave1:2181,slave2:2181 #这里配置为非安全性的nifi nifi.cluster.protocol.is.secure=false nifi.cluster.is.node=true nifi.cluster.node.address=master nifi.cluster.node.protocol.port=11443 nifi.cluster.node.protocol.threads=10 nifi.cluster.node.event.history.size=25 nifi.cluster.node.connection.timeout=5 sec nifi.cluster.node.read.timeout=5 sec nifi.cluster.firewall.file= #各节点Site2Site协议接口配置 nifi.remote.input.host=master nifi.remote.input.secure=false nifi.remote.input.socket.port=10443 nifi.remote.input.http.enabled=true nifi.remote.input.http.transaction.ttl=30 sec #web ui nifi.web.http.host=master nifi.web.http.port=8080
其他节点需要根据实际情况修改host为节点的主机名(slave1,slave2等)
Slave1:
1 2 3 nifi.remote.input.host=slave1 nifi.web.http.host=slave1 nifi.cluster.node.address=slave1
Slave2:
1 2 3 nifi.remote.input.host=slave2 nifi.web.http.host=slave2 nifi.cluster.node.address=slave2
④ 修改conf/state-management.xml
1 2 3 4 5 6 7 8 <cluster-provider> <id>zk-provider</id> <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class> <property name="Connect String">master:2181,slave1:2181,slave2:2181</property> <property name="Root Node">/nifi</property> <property name="Session Timeout">10 seconds</property> <property name="Access Control">Open</property> </cluster-provider>
主要是修改Connect String,和第三步中的nifi.zookeeper.connect.string一致。
2.2 使用独立的Zookeeper
配置步骤比使用内置的Zookeeper方法要简单,对比来看:
① 无需修改conf/zookeeper.properties,保持默认配置即可。
(即无需定义server.1,server.2,server.3等条目)
② 无需在state/zookeeper文件夹下新建myid文件
③ 修改conf/nifi.properties
与使用内置的Zookeeper配置基本相同,不同的配置是:
1 2 #是否启动内置的zk nifi.state.management.embedded.zookeeper.start=false
其他配置一致,按独立安装的Zookeeper实际情况填写。
④ 修改conf/state-management.xml
与使用内置的Zookeeper配置相同,按独立安装的Zookeeper实际情况填写。
3 启动
在每一个节点中执行命令:
启动需要一定的时间,jps查看NiFi进程是否成功启动:
1 2 3 4 2162 RunNiFi 2178 NiFi 1413 QuorumPeerMain 2330 Jps
从任意一个节点访问http://localhost:8080/nifi即可访问NiFi主界面。(端口以配置文件中的为准)
4 关闭
在每一个节点中执行命令:
可能遇到的问题
端口冲突
若logs/nifi-bootstrap.log中出现“Address already in use”,则说明端口冲突,修改conf/nifi.properties中的nifi.web.http.port。NiFi的Web端口默认是8080,很容易与其他应用,建议修改。
集群启动后,无法打开web页面
集群启动后,有一个选取主节点的过程,在此期间可能无法访问web页面或者提示与集群断开连接,等待一会儿后(5-8分钟)即可恢复正常。
参考资料
NiFi安装(单机+集群)
NIFI1.7.1安装
官方文档