nifi从入门到实战(保姆级教程)——环境篇
背景:
公司领导决定将各种基础数据的导入从代码中分离出来,用Apache Nifi替换。使开发者们更关注在业务上,而不用关心基础的由来。
Apache Nifi对于整个团队都是一个全新的工具,之前大家都没有接触过,甚至是第一次听说,我就是其中之一。但是很幸运的是,领导指派我去熟悉这个工具,按实际应用场制作DEMO,并分享给团队。
环境准备
- windows:
1、下载nifi zip包:https://nifi.apache.org/download.html ,选择自己想要的版本。
注意:1.14版本开始,默认为有身份认证,不允许匿名登陆。
2、将zip包解压到本地的任意目录。解压后如下图
注意:路径最好是全英文,否则会出现一些启动不了的异常
3、修改conf(可选)。为了避免端口冲突,可以将/conf/nifi.properties中https.port修改为你指定的其他端口。默认是8443。
另一个是/conf/bootstrap.conf,这里主要修改JVM memory settings,
默认是512M。
4、启动nifi.双击/bin/run-nifi.bat文件
出现以下画面即为成功
注意:如果要退出nifi,千万不要直接点上图右上角的“关闭”按钮。因为这样并不会完全退出nifi,它的进程还在运行,端口还是占用着的,所以下次再次运行时就会出错。只能杀进程,或是重启电脑了。正确的操作是ctrl+c停止它
5、打开nifi UI.(距离启动nifi大概30秒后)
打开/logs/nifi-app.log,搜索username,如下图
输入相应的user和password后就可以登陆成功了
Linux
linux下就用docker compose演示吧
1、准备好linux和docker环境。这一步大家可以自行搜索
2、定义docker-compose.yml文件,输入以下内容点击查看代码
version: '3' services:
nifi:
cap_add:
- NET_ADMIN # low port bindings
image: apache/nifi:1.16.1
container_name: nifi-dev
ports:
- 18443:18443 # HTTPS interface
environment:
NIFI_WEB_HTTPS_PORT: "18443"
volumes:
- ./drivers:/opt/nifi/nifi-current/drivers
- ./database_repository:/opt/nifi/nifi-current/database_repository
- ./flowfile_repository:/opt/nifi/nifi-current/flowfile_repository
- ./content_repository:/opt/nifi/nifi-current/content_repository
- ./provenance_repository:/opt/nifi/nifi-current/provenance_repository
- ./state:/opt/nifi/nifi-current/state
- ./logs:/opt/nifi/nifi-current/logs
- ./nifi-conf:/opt/nifi/nifi-current/conf
这里指定nifi 镜像为官方docker image 1.16.1版本,端口为18443。注意:ports和enviroment两个设置都不能少。然后把容器里的相应目录挂载到了宿主机上docker-compose.yml文件所在目录。这样做的好处就是即使是启动新的镜像实例,原来的数据还是在的,这样也就实现了数据持久化。
因为nifi启动需要读取conf目录下的各种配置,现在这样conf目录下是空的。所以启动时会报nifi.propeties等文件不存在。
有两种解决方案:一是把conf目录下的所有文件复制到nifi-conf目录下。二是conf目录挂载方式变下,如下:点击查看代码
version: '3' services:
nifi:
cap_add:
- NET_ADMIN # low port bindings
image: apache/nifi:1.16.1
container_name: nifi-dev
ports:
- 18443:18443 # HTTPS interface
environment:
NIFI_WEB_HTTPS_PORT: "18443"
volumes:
- ./drivers:/opt/nifi/nifi-current/drivers
- ./database_repository:/opt/nifi/nifi-current/database_repository
- ./flowfile_repository:/opt/nifi/nifi-current/flowfile_repository
- ./content_repository:/opt/nifi/nifi-current/content_repository
- ./provenance_repository:/opt/nifi/nifi-current/provenance_repository
- ./state:/opt/nifi/nifi-current/state
- ./logs:/opt/nifi/nifi-current/logs
- nifi-conf:/opt/nifi/nifi-current/conf volumes:
nifi-conf:这样是把conf目录挂载在/var/lib/docker/volumes目录下,这样可以自动生成相应的文件。
3、启动nifi.docker-compose up (加上-d 就是后台运行,在终端不会输出日志)
在日志中nifi-app.log中查找 username,获取相应的user 和password,然后登陆nifi。此步骤与windows相同
至此,nifi的环境已经准备好了。下一篇来讲讲nifi的身份验证。
最新文章
- C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
- JDBC数据库访问操作的动态监测 之 p6spy
- 解决 iOS 9.1 微信内置浏览器中html audio 不能自动播放的问题
- WeakHashMap和HashMap的区别
- centos7 安装及配置
- windos多线程编程
- requestAnimationFrame兼容性扩展
- Java GC系列(1):Java垃圾回收简介
- web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入
- 关于URL编码/javascript/js url 编码/url的三个js编码函数
- Gink掉过的坑(一):将CCTableView导入到lua中
- js 面向对象 ES5 AND ES6
- JSP展示两位小数
- 【Spark-core学习之五】 RDD宽窄依赖 &; Stage
- Shell 解释器初识
- RBF(径向基)神经网络
- 删除JavaScript对象中的元素
- HDU 1242 Rescue(BFS+优先队列)
- 解决Winsock2.h和afxsock.h定义冲突的办法
- Spring的属性注入, byName和byType还有注入List属性
热门文章
- linux部署项目访问mysql问题
- Codeforces Round #704 (Div. 2), problem: (C) Maximum width还是要多学习
- 2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ π )
- Python工程打包
- Bugku练习题---MISC---1和0的故事
- XCTF练习题---MISC---pdf
- [AcWing 823] 排列
- [AcWing 779] 最长公共字符串后缀
- celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决
- Java Web实现用户登录功能