Migrating Apache Flume Flows to Apache NiFi: Log to HDFS
Migrating Apache Flume Flows to Apache NiFi: Log to HDFS
Article 7 - https://www.datainmotion.dev/2019/10/migrating-apache-flume-flows-to-apache_9.html
Article 6 - https://www.datainmotion.dev/2019/10/migrating-apache-flume-flows-to-apache_35.html
Article 5 -
Article 4 - This
Source Code: https://github.com/tspannhw/flume-to-nifiArticle 6 - https://www.datainmotion.dev/2019/10/migrating-apache-flume-flows-to-apache_35.html
Article 5 -
Article 4 - This
Example NiFi Flow to Read From List of Directories to HDFS
I am moving some Apache Flume flows over to Apache NiFi, this is the first one I am doing. I am grabbing log files from a directory and pushing over to HDFS. We had added some features beyond what was available in the original Flume flow.
We also can visually see it running and get access to real-time metrics and stats via Apache NiFi's REST API.
Step-By-Step
- Enter your directory holding your logs or files. Check permissions and set file regular expression.
- Update FetchFile properties.
- UpdateAttribute to change your file name to what you would like.
- PutHDFS to store you file to HDFS.
- Add notifications, alerts and failure handling.
ListFile
Fetch the files from the directory and then delete when done.
Other Attributes for ListFile
View the State of Files as They Are Read
Replace the FileName for HDFS Safe Saves
You can change the HDFS Owner
It will create new directories
Configure Your HDFS Directory to Store To (can be many directories/subdirectories programmatically)
Set The Size of an HDFS Block
Choose Your Compression
Chose How You Want to Write Data (Append, Replace, Ignore, Fail, Append)
NiFi File Filter / Reg Ex To Match Input Name Patterns: (wifi).*log
You can match any subset of files and directories that we may want to grab.
Also remove invalid characters from HDFS filename output
NiFi Output:
Attribute Values
absolute.path
/var/log/
file.creationTime
2019-08-12T10:08:53-0400
file.group
wheel
file.lastAccessTime
2019-08-12T10:08:53-0400
file.lastModifiedTime
2019-08-12T10:08:53-0400
file.owner
root
file.permissions
rw-r--r--
file.size
271413
filename
wifi-08-12-2019__10:08:53.107.log
path
./
uuid
6693546e-1241-4625-bbd8-b9dd5da9281a
Files Migrated
hdfs dfs -ls /flume
Found 7 items
-rw-r--r-- 1 tspann hdfs 120824 2019-08-13 19:49 /flume/wifi-08-12-2019__100647.406.log
-rw-r--r-- 1 tspann hdfs 125888 2019-08-13 19:49 /flume/wifi-08-12-2019__100651.863.log
-rw-r--r-- 1 tspann hdfs 252917 2019-08-13 19:49 /flume/wifi-08-12-2019__100839.901.log
-rw-r--r-- 1 tspann hdfs 255873 2019-08-13 19:49 /flume/wifi-08-12-2019__100845.958.log
-rw-r--r-- 1 tspann hdfs 271315 2019-08-13 19:49 /flume/wifi-08-12-2019__100848.189.log
-rw-r--r-- 1 tspann hdfs 271413 2019-08-13 19:49 /flume/wifi-08-12-2019__100853.107.log
-rw-r--r-- 1 tspann hdfs 17078 2019-08-13 19:49 /flume/wifi.log