背景:

公司领导决定将各种基础数据的导入从代码中分离出来,用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. ArcGIS使用技巧(二)——数据恢复

    新手,若有错误还请指正! ArcGIS工程文件中图层的数据源位置移动之后,会显示红叹号(图1),需要进行数据恢复,就体现出之前所说的勾选"Store relative pathnames t ...

  2. 前端优化建议:合理利用JavaScript的条件运算符

    在最近的项目中要使用到一个格式化文件大小的算法,于是不假思索写了如下代码: function formatSize(size){ if(size<1024){ return size+" ...

  3. Navicat导出结果显示科学计数法(PostgreSQL)

    原因:在EXCEL录入数超过11位,就会变成科学记数法 解决方案: 在postgresql需要导出的列中加入制表符 示例: SELECT 6280920221390000000061:: TEXT | ...

  4. 通过命令验证docker容器相当一个轻量级的Linux运行环境,且每个容器内都有一个属于自己的文件系统,容器之间相互隔离

    一.docker的三个重要概念 1.镜像:打包项目带上环境,即镜像 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的配置参数.镜像 ...

  5. [AcWing 768] 忽略大小写比较字符串大小

    点击查看代码 #include<iostream> using namespace std; string a, b; int main() { getline(cin, a); getl ...

  6. redo log 和 binlog 的一些总结

    1 redo log 和 binlog 的区别 redo log 是 InnoDB 引擎特有的:binlog 是 MySQL 的 Server 层实现的,所有引擎都可以使用. redo log 是物理 ...

  7. Centos7最小化安装报错There are no enabled repos. Run "yum repolist all" to see the repos you have.解决办法

    原因是缺少CentOS-Base.repo文件,因为我这台机器wget也不能用,所以我是下载到本地sftp上去的,传输的时候一定要在root用户下,否则会无法启动传输 这是报错的完整信息:Loadin ...

  8. 用python实现自动化登录禅道系统 设置定时器自动执行脚本

    由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...

  9. Zookeeper安装学习(二)

    学习内容:Zookeeper集群安装(Zookeeper版本:Zookeeper3.5.7:注:master,s1,s2都需要部署) 解压安装: (1)在主机 master 解压 Zookeeper ...

  10. Android——RelativeLayout

    代码:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android= ...