0625-6.2.0-Hello NiFi-第一个NiFi例子

2019-05-15 10:32:18 浏览数 (1)

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

Fayson在前面的文章介绍了什么是NiFi,参考《0622-什么是Apache NiFi》。同时对如何在CDH中使用Parcel安装CFM做了介绍,参考《0623-6.2.0-如何在CDH中安装CFM》。也介绍过NiFi处理器以及实操,参考《0624-6.2.0-NiFi处理器介绍与实操》。本文会完成第一个NiFi例子,通过NiFi监控一个本地数据目录,定时将新文件put到HDFS。

  • 测试环境

1.Redhat7.4

2.CM/CDH6.2

3.CFM1.0

4.NiFi1.9

5.使用root用户操作

6.CDH集群未启用Kerberos

2

Hello NiFi

1.在NiFi节点所在的服务器节点的本次磁盘中准备3个txt数据文件,内容比较简单都是“Hello Nifi!”

代码语言:javascript复制
[root@ip-172-31-6-83 data]# ll
total 16
-rw-r--r-- 1 root root 2991 May  6 23:44 hive-hook-demo-1.0-SNAPSHOT.jar
-rw-r--r-- 1 root root   12 May  8 00:01 nifi1.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi2.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi3.txt
[root@ip-172-31-6-83 data]# cat nifi1.txt nifi2.txt  nifi3.txt
Hello NiFi!
Hello NiFi!
Hello NiFi!
[root@ip-172-31-6-83 data]#

2.在NiFi节点所在的服务器节点创建一个nifi目录,并且修改用户和属组。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# mkdir nifi
[root@ip-172-31-6-83 data]# chown nifi:nifi nifi
[root@ip-172-31-6-83 data]# ll
total 16
-rw-r--r-- 1 root root 2991 May  6 23:44 hive-hook-demo-1.0-SNAPSHOT.jar
drwxr-xr-x 2 nifi nifi    6 May  8 00:04 nifi
-rw-r--r-- 1 root root   12 May  8 00:01 nifi1.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi2.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi3.txt
[root@ip-172-31-6-83 data]#

3.在HDFS中创建一个nifi目录,为了测试简单,将目录权限修改为最大。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# hadoop fs -mkdir /nifi 
[root@ip-172-31-6-83 data]# hadoop fs -chmod 777 /nifi
[root@ip-172-31-6-83 data]# hadoop fs -ls /
Found 3 items
drwxrwxrwx   - root supergroup          0 2019-05-08 00:05 /nifi
drwxrwxrwt   - hdfs supergroup          0 2019-05-05 17:39 /tmp
drwxrwxrwx   - hdfs supergroup          0 2019-05-07 20:48 /user
[root@ip-172-31-6-83 data]#

4.进入NiFi的流程管理页面。

5.拖入一个处理器到画布中间。

6.选择GetFile处理器。

7.编辑GetFile处理器的属性,将“Input Directory”属性值改为前面创建的数据目录的绝对路径/data/nifi,点击“APPLY”保存。

8.再次拖入一个处理器到画布中间,选择PutHDFS处理器,点击“ADD”。

9.配置PutHDFS处理器,将Hadoop Configuration Resources属性配置为

/etc/hadoop/conf/hdfs-site.xml,/etc/hadoop/conf/core-site.xml

将Directory属性配置为前面创建好的HDFS目录/nifi,点击“APPLY”保存配置。

10.连接GetFile处理器到PutHDFS处理器。

11.勾选PutHDFS处理器的success和failure的Automatically Terminate Relationships,点击“APPLY”保存。

12.左键单击选中GetFile处理器,按住shift再次选中PutHDFS处理器,点击“Start”。

13.运行一段时间后,确认本地目录/data/nifi和HDFS目录/nifi都为空没有数据。

14.拷贝前面准备好的nifi1.txt到本地的/data/nifi目录。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# ll
total 16
-rw-r--r-- 1 root root 2991 May  6 23:44 hive-hook-demo-1.0-SNAPSHOT.jar
drwxr-xr-x 2 nifi nifi    6 May  8 00:04 nifi
-rw-r--r-- 1 root root   12 May  8 00:01 nifi1.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi2.txt
-rw-r--r-- 1 root root   12 May  8 00:01 nifi3.txt
[root@ip-172-31-6-83 data]# cp nifi1.txt nifi
[root@ip-172-31-6-83 data]#

15.去HDFS目录/nifi进行检查是否put成功。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# hadoop fs -ls /nifi
Found 1 items
-rw-r--r--   3 nifi supergroup         12 2019-05-08 00:26 /nifi/nifi1.txt
[root@ip-172-31-6-83 data]# hadoop fs -cat /nifi/nifi1.txt
Hello NiFi!
[root@ip-172-31-6-83 data]#

发现已经put到HDFS成功。

16.检查本地的/data/nifi目录,发现该目录下之前拷贝过去的文件已经被删除了。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# ll /data/nifi
total 0
[root@ip-172-31-6-83 data]#

17.同时将之前准备好的nifi2.txt和nifi2.txt文件拷贝到本地的/data/nifi目录,并对HDFS中的数据进行观察。

代码语言:javascript复制
[root@ip-172-31-6-83 data]# cp nifi2.txt nifi3.txt nifi
[root@ip-172-31-6-83 data]# hadoop fs -ls /nifi
Found 3 items
-rw-r--r--   3 nifi supergroup         12 2019-05-08 00:26 /nifi/nifi1.txt
-rw-r--r--   3 nifi supergroup         12 2019-05-08 00:28 /nifi/nifi2.txt
-rw-r--r--   3 nifi supergroup         12 2019-05-08 00:28 /nifi/nifi3.txt
[root@ip-172-31-6-83 data]# hadoop fs -cat /nifi/nifi1.txt /nifi/nifi2.txt /nifi/nifi3.txt 
Hello NiFi!
Hello NiFi!
Hello NiFi!
[root@ip-172-31-6-83 data]# ll /data/nifi
total 0
[root@ip-172-31-6-83 data]#

注意:put到HDFS成功后,本地的/data/nifi中的文件都已被删除。

18.通过NiFi的界面可以发现GetFile和PutHDFS处理器都读/写了36 byte,并且写出或者写入3个文件。

至此,第一个NiFi例子,“Hello NiFi”演示成功并完成。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

0 人点赞