背景:

公司领导决定将各种基础数据的导入从代码中分离出来,用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. 能直接调试的开放API?这个API Hub绝了

    ​ 01 此前时不时会有一些研发小伙伴和我诉苦,说很多企业由于人力财力限制或者需求不强,会直接购买使用第三方的开放API,这样一来, 一则由于开放项目不是量身定制的,寻找自己合适的接口也要搜索调研蛮多 ...

  2. Java学习day13

    泛型类格式: 修饰符 class 类名<类型>{ } 常用T.E.K.V等形式的参数表示泛型 使用方式与C++的类模板相似,在创建对象时要明确数据类型 泛型方法定义格式: 修饰符<类 ...

  3. Axios及其async await封装

    Axios(IE8+) 基于promise的http库可用于浏览器与node.js 1.特性 支持promise API 拦截请求和相应 转换请求数据和响应数据 取消请求 自动转换JSON数据 客户端 ...

  4. petite-vue源码剖析-逐行解读@vue-reactivity之effect

    当我们通过effect将副函数向响应上下文注册后,副作用函数内访问响应式对象时即会自动收集依赖,并在相应的响应式属性发生变化后,自动触发副作用函数的执行. // ./effect.ts export ...

  5. Android Studio 的蓝牙串口通信(附Demo源码下载)

    根据相关代码制作了一个开源依赖包,将以下所有的代码进行打包,直接调用即可完成所有的操作.详细说明地址如下,如果觉得有用可以GIthub点个Star支持一下: 项目官网 Kotlin版本说明文档 Jav ...

  6. 00. 初次使用(系统安装+ssh连接)

    效率教程,配置不需要插显示器,一步到位 一.装系统 1. sd卡用读卡器插上电脑,打开软件SD Formatter 4.0,按默认配置,直接格式化. 软件下载链接:https://pan.baidu. ...

  7. Java基础语法Day_06(面相对象和封装)

    第1节 描述类介绍与使用 day06_01_面向对象思想的概述 day06_02_面向对象思想的举例 day06_03_类和对象的关系 day06_04_类的定义 day06_05_对象的创建及其使用 ...

  8. Glance基础服务运维

    @ 目录 Glance镜像服务介绍 创建镜像 查看镜像 修改镜像 删除镜像 Glance镜像服务介绍 Glance是OpenStack镜像服务,用来注册.登陆和检索虚拟机镜像.Glance服务提供了一 ...

  9. 分享我做Dotnet9博客网站时积累的一些资料

    从2019年使用WordPress搭建Dotnet9网站,到现在手撸代码开发,介绍中间使用的一些资源,绝无保留,希望对大家有用. 1. 申请域名.搭建WordPress网站 时间点:2019年11月 ...

  10. Linux操作系统,为什么需要内核空间和用户空间?

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 本文以 32 位系统为例介绍内核空间(kernel sp ...