温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
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”演示成功并完成。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。