背景:

公司领导决定将各种基础数据的导入从代码中分离出来,用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的身份验证。

nifi从入门到实战(保姆级教程)——环境篇的更多相关文章

  1. RocketMQ保姆级教程

    大家好,我是三友~~ 上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作 ...

  2. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  3. 自建本地服务器,自建Web服务器——保姆级教程!

    搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...

  4. Eclipse for C/C++ 开发环境部署保姆级教程

    Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...

  5. 强大博客搭建全过程(1)-hexo博客搭建保姆级教程

    1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...

  6. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  7. nifi从入门到实战(保姆级教程)——flow

    本文章首发于博客园,转载请标明出处 经过前两篇文章(环境篇,身份验证),我们已经有了nifi可以运行的基础,今天就来实现一个案例吧. 假设我们要从ftp上获取一个zip包,里面有两个csv文件,一个是 ...

  8. nifi从入门到实战(保姆级教程)——身份认证

    上一篇我们搭建好了nifi的运行环境了 但是每次登陆那一串随机字符串的用户名和密码是不是让人很头疼,那是人类能记住的吗?当然不是!!!! 那么今天我们就来消灭这些难看又难记的字符串. windows( ...

  9. ElasticSearch入门篇(保姆级教程)

    本章将介绍:ElasticSearch的作用,搭建elasticsearch的环境(Windows/Linux),ElasticSearch集群的搭建,可视化客户端插件elasticsearch-he ...

随机推荐

  1. springboot jar包方式部署

    打好jar包后上传到 linux 执行命令 java -jar /root/vhr-web-0.0.1-SNAPSHOT.jar > /root/log.txt & 1.java -ja ...

  2. Js中的三个错误语句:try、catch、throw

    Js中的三个错误语句:try.catch.throw

  3. Win下GCC报错 error: ‘for’ loop initial declarations are only allowed in C99 mode

    ##报错## 用GCC编译for循环会出现以下错误 error: 'for' loop initial declarations are only allowed in C99 mode 如图所示: ...

  4. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

  5. 2021.07.19 P2294 狡猾的商人(差分约束)

    2021.07.19 P2294 狡猾的商人(差分约束) [P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.差分约束最长路与最短 ...

  6. for in 语法遍历对象

    1. 语法格式 for (变量 in 对象) { console.log(变量) }   2. 代码实例 // 遍历对象 var obj = { name: 'pink老师', age: 18, se ...

  7. umi框架应用服务端SSR,实现数据预渲染

    当我们的应用使用服务端渲染的方式时,可能需要把初始化加载的数据例如推荐等不需要用户输入的内容直接渲染获取,也有利于SEO. 上一篇已经实现服务端渲染,本次实现服务端获取数据后在做渲染. 利用getIn ...

  8. Linux启动故障排查和修复技巧

    一个执着于技术的公众号 我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应对单用户模式.GRUB命令操作.Linux救援模式的故障修复案例帮助大家了解此类问题的解 ...

  9. 《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)

    1.简介 上一篇宏哥介绍了如何设计支持不同浏览器测试,宏哥的方法就是通过来切换配置文件设置的浏览器名称的值,来确定启动什么浏览器进行脚本测试.宏哥将这个叫做浏览器引擎类.这个类负责获取浏览器类型和启动 ...

  10. latex中显示代码

    如何在latex中添加代码模块 首先在开头导入以下的包 \usepackage{listings} \usepackage{ctex} % 用来设置附录中代码的样式 \lstset{ basicsty ...