背景:

公司领导决定将各种基础数据的导入从代码中分离出来,用Apache Nifi替换。使开发者们更关注在业务上,而不用关心基础的由来。
Apache Nifi对于整个团队都是一个全新的工具,之前大家都没有接触过,甚至是第一次听说,我就是其中之一。但是很幸运的是,领导指派我去熟悉这个工具,按实际应用场制作DEMO,并分享给团队。

环境准备

首先安装java.

  • windows:
    1、下载nifi zip包:https://nifi.apache.org/download.html ,选择自己想要的版本。
    注意:1.14版本开始,默认为有身份认证,不允许匿名登陆。
    2、将zip包解压到本地的任意目录。解压后如下图
    image
    注意:路径最好是全英文,否则会出现一些启动不了的异常

3、修改conf(可选)。为了避免端口冲突,可以将/conf/nifi.properties中https.port修改为你指定的其他端口。默认是8443。
image
另一个是/conf/bootstrap.conf,这里主要修改JVM memory settings,
image
默认是512M。
4、启动nifi.双击/bin/run-nifi.bat文件
image

出现以下画面即为成功
image
注意:如果要退出nifi,千万不要直接点上图右上角的“关闭”按钮。因为这样并不会完全退出nifi,它的进程还在运行,端口还是占用着的,所以下次再次运行时就会出错。只能杀进程,或是重启电脑了。正确的操作是ctrl+c停止它
image

5、打开nifi UI.(距离启动nifi大概30秒后)
image
打开/logs/nifi-app.log,搜索username,如下图
image
输入相应的user和password后就可以登陆成功了
image

  • 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的身份验证。

posted on 2022-06-24 11:41  ilyyin  阅读(510)  评论(10编辑  收藏  举报