Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装
一、nifi基本配置
1. 修改各节点主机名,修改/etc/hosts文件内容。
192.168.0.120 master 192.168.0.121 slave1 192.168.0.122 slave2
具体请参考《Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。》
2. 安装zookeeper分布式集群
具体请参考《Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12》
3. 下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/nifi/1.7.1/nifi-1.7.1-bin.tar.gz
到/opt下
tar -zvxf nifi-1.7.1-bin.tar.gz cd nifi-1.7.1
chown -R spark:spark /opt/nifi-1.7.1
4. jdk配置:nifi新版本要求jdk版本必须1.8以上
目录:bin/nifi.env.sh
export JAVA_HOME=/home/user/opt/jdk1.8.0_144
注意:忽略此项配置,nifi将使用系统默认Java环境启动。
5. nifi运行内存配置
目录:conf/bootstarp.conf
java.arg.2=-Xms512m
java.arg.3=-Xmx20480m
备注:
1)根据服务器性能合理设置nifi内存2)这里是虚拟机内存较小,就没有设置
6. nifi日志配置
目录:conf/logback.xml
7. nifi端口配置
目录:conf/nifi.properties
nifi.web.http.port=18083
默认为8080端口。
8. nifi基本命令
nifi.sh start 启动
nifi.sh stop 关闭
nifi.sh restart 重启
nifi.sh status 状态
以上基本配置完成,可单节点模式启动nifi。
二、nifi集群配置
基于上边的配置基础之上,修改nifi配置:./conf/nifi.properties
1. 首先在master节点上配置./conf/nifi.properties
》》》》》》》》》》》》》Master配置》》》》》》》》》》》》》》
#设置WEB UI横幅文字 nifi.ui.banner.text=Nifi-1.7.1-Cluster #是否启动内置的zk nifi.state.management.embedded.zookeeper.start=false #配置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=9999 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=18083
》》》》》》》》》》》》》Master配置》》》》》》》》》》》》》》
2. 然后在slave1,slave2节点上配置./conf/nifi.properties
scp -r /opt/nifi-1.7.1/* root@slave1:/opt/nifi-1.7.1/ scp -r /opt/nifi-1.7.1/* root@slave2:/opt/nifi-1.7.1/
Slave1:
nifi.remote.input.host=slave1 nifi.web.http.host=slave1 nifi.cluster.node.address=slave1
Slave2:
nifi.remote.input.host=slave2 nifi.web.http.host=slave2 nifi.cluster.node.address=slave2
3.启动
./bin/nifi.sh start
三个节店(master、slave1、slave2)都要执行。
执行完后验证是否都正常启动方式:
1)JPS查看是否三台服务器都包含进程:
[spark@master bin]$ jps 2162 RunNiFi 2178 NiFi 1413 QuorumPeerMain 2330 Jps
2)同时查看三台服务器的NIFI运行状态:
master:
[spark@master bin]$ ./nifi.sh status Java home: /opt//jdk1.8.0_171 NiFi home: /opt/nifi-1.7.1 Bootstrap Config File: /opt/nifi-1.7.1/conf/bootstrap.conf 2018-08-06 22:46:44,950 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is currently running, listening to Bootstrap on port 45484, PID=2178
slave1:
[spark@slave1 bin]$ ./nifi.sh status Java home: /opt//jdk1.8.0_171 NiFi home: /opt/nifi-1.7.1 Bootstrap Config File: /opt/nifi-1.7.1/conf/bootstrap.conf 2018-08-06 22:46:17,152 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is currently running, listening to Bootstrap on port 37934, PID=1870 [spark@slave1 bin]$
slave2:
[spark@slave2 bin]$ ./nifi.sh status Java home: /opt//jdk1.8.0_171 NiFi home: /opt/nifi-1.7.1 Bootstrap Config File: /opt/nifi-1.7.1/conf/bootstrap.conf 2018-08-06 22:46:26,521 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is currently running, listening to Bootstrap on port 41473, PID=1689 [spark@slave2 bin]$
3)此时,如果正常运行集群模式,在通过UI在一个IP下创建一个Process,则在另外两个节店也可以查看到该节店创建的内容。
master
slave1
slave2
参考:《https://blog.csdn.net/qq_19397397/article/details/80007806》
三、开发资料
nifi中配置的表达式用法规则,参考官网:https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html
Nifi表达式和自定义处理器(基于HDP):https://my.oschina.net/u/2306127/blog/858960
nifi官网Blog(文章不多,但内容比较实用):https://blogs.apache.org/nifi/
nifi官网Doc(用户[user,admin,developer]向导,用法):https://nifi.apache.org/docs.html别人个人博客(介绍了个别组件用法):https://bryanbende.com/categories.html,https://www.nifi.rocks/archives/
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。