赞
踩
本博客记录最简单的nifi,minifi,efm,nifi-registry 安装配置步骤,以及使用实例,本人使用的是Mac环境,各组件都是java版本。
下载nifi:https://nifi.apache.org/download.html
本人使用的是nifi-1.8.0-bin.tar.gz ,解压到自己的目录下。
后台启动:
bin/nifi.sh start
启动过程比较慢,启动完成后可通过浏览器访问nifi
http://localhost:8080/nifi/
nifi-registry 是一个版本仓库,为nifi,efm中定义的dataflow提供版本管理的功能。
下载地址:https://nifi.apache.org/registry
本文使用的是 nifi-registry-0.5.0-bin.tar.gz,解压到自己的目录下。
后台启动:
bin/nifi-registry.sh start
启动完成后可通过浏览器访问nifi-registry
http://localhost:18080/nifi-registry
通过界面创建一个bulket,提供给nifi 和efm使用
现在可以在nifi中添加nifi-registry的信息
官方介绍文档:https://docs.cloudera.com/cem/1.0.0/index.html
CEM: 全称Cloudera Edge Management,包括minifi ,EFM两部分。
EFM:全称Edge Flow Manager。
CEM下载地址:
https://archive.cloudera.com/CEM/centos7/1.x/updates/1.0.0.0/CEM-1.0.0.0-centos7-tars-tarball.tar.gz
下载完成后解压到自己的目录下。
在 ./CEM/centos7/1.0.0.0-54/tars 目录下
解压
efm-1.0.0.1.0.0.0-54-bin.tar.gz ,
minifi-0.6.0.1.0.0.0-54-bin.tar.gz
到自己电脑的合适路径下。
备注:
1,这里提供的minifi版本为0.6.0.1.0.0.0-54,截止到今天(2019-10-29)apache官网上提供的minifi只到0.5.0版本。0.5.0版本的minifi无法和EFM交互,必须使用0.6.0.1.0.0.0-54及其以上版本。
2,minifi-toolkit-0.6.0.1.0.0.0-54-bin.tar.gz
minifi是轻量级的nifi,本身没有提供图形化界面。可以在nifi中定义数据流,对数据流创建template,保存为xml文件,通过minifi-toolkit 工具将template 的xml转换为config.yml文件替换掉minifi conf/config.yml,这样minifi就可以运行在nifi中为他定义的数据流了。EFM为minifi提供了更好的监控,数据流定义,数据流分发的功能,不建议使用minifi-toolkit。
创建efm需要使用的的mysql 库,用户。
CREATE DATABASE EFM DEFAULT CHARACTER SET utf8;
CREATE USER 'efm'@'%' IDENTIFIED BY 'efm';
GRANT ALL PRIVILEGES ON *.* TO 'efm'@'%' WITH GRANT OPTION;
commit;
备注:默认配置下efm会在该库中存储大量数据,本人低配版MacBook pro 运行服务一周后硬盘资源不足{{{(>_<)}}} (mysql EFM库50GB数据,日志100GB)。
配置 EFM:
修改efm conf/efm.properties 文件
# nifi-registry efm.nifi.registry.enabled=true efm.nifi.registry.url=http://localhost:18080 #bucketId,bucketName 二选一配置一个,具体值是上文nifi-registry中新建的bulket信息 efm.nifi.registry.bucketId= efm.nifi.registry.bucketName=test efm.nifi.registry.flowRefreshInterval=60s # Database Properties efm.db.url=jdbc:mysql://localhost:3306/EFM efm.db.driverClass=com.mysql.jdbc.Driver efm.db.username=efm efm.db.password=efm efm.db.maxConnections=5 efm.db.sqlDebug=false
配置完成后 后台启动efm
bin/efm.sh start
访问地址:
http://localhost:10080/efm/ui
修改minifi conf/bootstrap.conf 文件
nifi.c2.enable=true
nifi.c2.rest.url=http://localhost:10080/efm/api/c2-protocol/heartbeat
nifi.c2.rest.url.ack=http://localhost:10080/efm/api/c2-protocol/acknowledge
nifi.c2.agent.heartbeat.period=1000
nifi.c2.agent.class=iot-test
nifi.c2.agent.identifier=agent-1
修改后后台启动minifi
bin/minifi.sh start
启动成功后,minifi会向efm注册,发送心跳信息,efm界面会有心跳记录信息。
介绍:
通过efm在minifi上部署一个tcp服务端,minifi接受到数据后发送给nifi。
nifi:
拖拽一个input_port ,一个processGroup。
双击minifi_process_group ,进入group里面,定义接受到数据后处理的步骤。
将顶层的input_port 连接到proceess_group,启动所有组件。
双击minif_process_group,将定义的数据流上传到nifi_registory。
efm:
选择指定某个class,点击open。
拖拽一个ListenTCP,配置端口。
拖拽一个REMOTE_PROCESS_GROUP,配置地址为nifi地址:
配置传输协议是http
连接两者,port_id 为nifi 顶层input_port的id
完成后右上角publish该dataflow到minifi
minifi conf/config.yml 文件内容会更新。 通过
nc localhost 7710
发送tcp数据到minifi
可以在nifi上看到数据了。
nifi-registry上也有nifi,minifi提交的数据流了。
下面是本人新建的学习交流群,欢迎大家进群,请不要发送与行业不相关的信息,尊重彼此的时间精力!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。