文章目录
1 APACHE NIFI简述
Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。
官方网站:http://nifi.apache.org/
1.1 APACHE NIFI架构
架构:
集群管理器:
1.1.1 Nifi的核心概念
核心概念如下:
• FlowFile
FlowFile表示在系统中移动的每个对象,FlowFile由两部分组成:
o content 内容 既数据本身
o attributes 属性 每条数据带上的属性信息.以键值对的形式.
• FlowFile Processor
o FlowFile处理器,由它完成对数据的实际处理工作.包括但不限于对数据内容和属性的加载,路由,转换,输出等.
o 处理器最灵活之处在于处理器可以读写FlowFile的属性信息,并且用自带的领域特定语言(DSL)对属性进行编程.
• Connection
o 由Connections把各个处理器链接起来,从而形成数据处理流程的有向无环图(DAG图).也称数据流, NiFi 中的 Flow.
o Connection 同时充当处理器间的队列,并且队列的属性高度可配置.
o 这些队列可以配置优先级,可以在设置阈值,可以实现反压。
• Flow Controller
o 流控制器对用户不可见的.它充当维护处理器如何连接和管理所有处理器所使用的线程及其分配的重要角色。
o Flow Controller充当促进处理器之间FlowFiles交换的代理。
• Process Group
o 为了方便管理,把一组特定的处理器及其连接组成的 Flow 放到一个处理组中去,可以通过输入端口接收数据并通过输出端口发送数据。
o 以这种方式,处理组可以通过组合其他组来创建全新组,形成更加复杂的DAG图( Flow 流)。
1.2 APACHE NIFI的特点
Maxwell的主要特点:
• 基于web的用户界面
o 无缝体验设计、控制和监视
• 高度可配置的
o 数据丢失容错和保证交付
o 低延迟和高吞吐量
o 动态优先级
o 流可以在运行时修改
o 背压 Back presure
• 数据来源
o 从始至终跟踪数据流
• 为扩展设计
o 构建自己数据处理器
o 支持快速开发和有效的测试
• 安全
o SSL,SSH,HTTPS加密内容,等等……
o 可插拔的基于角色的验证/授权
1.3 APACHE NIFI应用场景
- 以托拉拽的方式,在可视化图形界面上实现数据流的传输。
2 APACHE NIFI部署
2.1 中间件版本选取
中间件名称 | 版本号 |
---|---|
CentOS | CentOS 6.8 |
Apache Nifi | 1.11.4 |
2.2 环境准备
本次技术实践安装Apache Nifi集群,单独安装在hadoop102主机上
2.2.1 CentOS6.8
CentOS6.8安过程省略。预先创建用户/用户组zhouchen
预先安装jdk1.8.0_92 +
2.2.2 关闭防火墙-root
针对CentOS7以下
1.查看防火墙状态
service iptables status
2.停止防火墙
service iptables stop
3.启动防火墙
service iptables start
2.3 集群安装
2.3.1 Apache Nifi安装
1.下载Maxwell(安装包1.3G建议先下载再上传到服务器)
[zhouchen@hadoop102 software]$ wget http://mirror.bit.edu.cn/apache/nifi/1.11.4/nifi-1.11.4-bin.tar.gz
2.解压
[zhouchen@hadoop102 software]$ tar -zxvf nifi-1.11.4-bin.tar.gz -C /opt/module/
3.修改配置conf/nifi.properties
[zhouchen@hadoop102 nifi-1.11.4]$ vim conf/nifi.properties
nifi.web.http.port=8848 #默认端口是8080,这里我们改成8848
2.3.2 集群启动
后台启动:
[zhouchen@hadoop102 nifi-1.11.4]$ bin/nifi.sh start
前端启动:
[zhouchen@hadoop102 nifi-1.11.4]$ bin/nifi.sh run
停止:
[zhouchen@hadoop102 nifi-1.11.4]$ bin/nifi.sh stop
首次启动会创建的文件和目录:
o content_repository
o database_repository
o flowfile_repository
o provenance_repository
o work 目录
o logs 目录
o 在conf目录中,将创建flow.xml.gz文件
2.3.3 安装检查
1.查看进程
[zhouchen@hadoop102 nifi-1.11.4]$ jps
4848 NiFi
5012 Jps
4830 RunNiFi
2.查看登陆页面
http://hadoop102:8848/nifi
3 APACHE NIFI基本操作
3.1 同步文件夹
3.1.1 基本操作
先写一个小例子,同步文件夹
-
从工具栏中拖入一个Processor,在弹出面板中搜索GetFIle,然后确认
-
配置GetFile,设置结束关系、输入目录、保留源文件,其他设置可以不动
-
从工具栏中拖入一个Processor,在弹出面板中搜索PutFIle,然后确认,如第一步
-
配置PutFile,设置结束关系、输出目录,其他设置可以不动,输出目录为空文件夹
-
将GetFIle与PutFIle关联起来,从GetFIle中心点击,拖拉到PutFIle上
-
右键启动GetFIle与PutFIle,可以看到结果,输入目录中的文件同步到,输出目录中了
3.1.2 注意事项
注意:这里有几个细节
1.从结果图看到原文件中的子目录export没有同步
2.有少量的文件没有同步成功
3.目标目录中原有的nifi-1.11.4-bin.tar.gz文件没有被覆盖
错误提示在画布上:
或者在错误日志中:
3.2 NIFI接入MYSQL数据
1.拖入一个processor,搜索mysql,然后配置mysql信息
2.再拖入一个processor,搜索putfile,配置输出目录
3.连接两个processor,并开启
4.查看/opt/software下输出的文件
可以看到导出的数据都是Json格式的
3.3 NIFI接入KAFKA数据
1.拖入一个processor,搜索mysql,并配置mysql信息
2.拖入一个processor,搜索publishkafka
3.配置publishkafka信息
4.到服务器开启kafka,并启动消费maxwell
5.连接两个processor,并启动
6.查看可以消费到数据