nifi簡介
nifi背景
NiFi之前是在美國國家安全局(NSA)開發和使用了8年的一個可視化、可定制的資料內建産品。2014年NSA将其貢獻給了Apache開源社群,2015年7月成功成為Apache頂級項目。
NiFi概念
Apache NiFi 是一個易于使用、功能強大而且可靠的資料處理和分發系統。Apache NiFi 是為資料流設計,它支援高度可配置的訓示圖的資料路由、轉換和系統中介邏輯,支援從多種資料源動态拉取資料。簡單地說,NiFi是為自動化系統之間的資料流而生。 這裡的資料流表示系統之間的自動化和受管理的資訊流。 基于WEB圖形界面,通過拖拽、連接配接、配置完成基于流程的程式設計,實作資料采集、處理等功能。
下載下傳安裝
1、需運作在JVM環境下,沒有環境,下載下傳安裝jdk(我的jdk使用的是1.8版本,可以根據自己需要安裝)
2、下載下傳NIFI (下載下傳.zip)
1)下載下傳連結:http://nifi.apache.org/download.html
3、解壓下載下傳的nifi-1.9.2-bin.zip到自己需要的路徑
4、配置端口号(NIFI預設端口8080)
1)在cmd中檢視端口号是否被占用
netstat -ano|findstr "8080"
2)若被占用,到NIFI安裝路徑下的\conf\nifi.properties中修改端口号(安裝路徑即為剛才的解壓路徑)
(打開檔案直接搜尋8080,更改儲存即可,我此處更改端口号為9090)
5、啟動NIFI 服務
輕按兩下啟動檔案:安裝路徑下的\bin\run-nifi.bat
6、測試是否安裝成功
啟動服務後稍等幾分鐘,打開浏覽器通路 : http://localhost:9090/nifi/
出現以下頁面,表示安裝成功
7.檢視NIFI運作報表
安裝路徑\logs\nifi-app.log
操作界面及檔案同步
啟動後,使用浏覽器進行通路,位址:http://localhost:9090/nifi/
不了解NIFI是做什麼的,看一個簡單的例子(同步檔案夾)吧,幫助了解
1、從工具欄中拖入一個Processor,在彈出面闆中搜尋GetFIle,然後确認
2、配置GetFile,設定結束關系、輸入目錄、保留源檔案,其他設定可以不動,輸入目錄中有檔案:file.txt(内容為abc)。
3、從工具欄中拖入一個Processor,在彈出面闆中搜尋PutFIle,然後确認,如第一步
4、配置PutFile,設定結束關系、輸出目錄,其他設定可以不動,輸出目錄為空檔案夾
5、将GetFIle與PutFIle關聯起來,從GetFIle中心點選,拖拉到PutFIle上
6、右鍵啟動GetFIle與PutFIle,可以看到結果,輸入目錄中的檔案同步到,輸出目錄中了
注意:操作過程中,注意錯誤排查
1、Processor上的警告
2、Processor上的錯誤
Oracle資料庫同步
NIFI資料庫增量同步用到的元件有QueryDatabaseTable、ConvertAvroToJSON,ConvertJSONToSQL、PutSQL四個元件,添加完成後的界面顯示如下:
1、以表NIFINOTEST為例,表結構如下:
create table NIFINOTEST
(
id NUMBER not null,
test VARCHAR2(100),
rem VARCHAR2(100),
tags VARCHAR2(10)
)
2、在工具欄拖拽Processor至畫布輸入QueryDatabaseTable點選ADD添加元件到畫布。
3、顯示如下:
4、右擊元件如圖:
5、選擇Configure選項選中Success顯示如下:
6、選中PROPERTIES屬性選顯示卡進行資料庫連接配接池,資料庫選擇、資料表填寫,為空字段判斷,主鍵ID填寫。
7、點選箭頭顯示如下:
8、點選CONTROLLER SERVICES頁籤下的 + 号輸入DBCPConnectionPool顯示如下:
9、點選ADD進入如下圖,點選設定圖示進行資料庫連接配接池配置
Database Connection URL:jdbc:oracle:thin:@你的IP:1521:你的資料庫名
Database Driver Class Name:oracle.jdbc.driver.OracleDriver
Database Driver Location(s):file:///D:/app/Administrator/product/11.1.0/db_1/jdbc/lib/ojdbc6.jar
此處Oracle的驅動jar加載一定要加上file:///(為3個/),jar檔案我使用的是ojdbc6.jar,ojdbc4.jar插入資料會報錯。
Database User:你的資料庫名稱
點選APPLY确認後顯示如下:
點選中間圖示顯示如下圖,點選ENABLE啟用連接配接池
啟用後的連接配接池界面顯示如下:
10、在工具欄拖拽Processor 添加ConvertAvroToJSON元件(把資料庫元件查詢的資料Avro轉為JSON),設定和屬性配置如下
11、在工具欄拖拽Processor 添加ConvertJSONToSQL元件(把JSON資料轉換為sql語句)設定和屬性配置如下:
12、在工具欄拖拽Processor 添加PutSQL元件(把sql語句執行到資料庫)設定和屬性配置如下:
13、按住Shift鍵,滑鼠選中所有元件,點選面闆啟動按鈕啟動所有元件
14、啟動後界面如下:
15、操作資料源資料庫建立的NIFINOTEST表插入資料後,檢視目的資料庫建立的NIFINOTEST表是否有了同步資料。
16、其它資料庫如Mysql、SQLserver隻需要在設定資料庫驅動檔案為對應的JAR即可,其它操作類同;我使用的資料庫連接配接URL、資料庫驅動程式類名、資料庫驅動程式位置更換為對應的标示即可。我使用的驅動程式位置如下:
//mysql
Database Connection URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
Database Driver Class Name:com.mysql.jdbc.Driver
Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/mysql/mysql-connector-java/5.1.30/mysql- connector-java-5.1.30.jar
//sqlserver
Database Connection URL:jdbc:jtds:sqlserver://你的IP:1433/TEST
Database Driver Class Name:net.sourceforge.jtds.jdbc.Driver
Database Driver Location(s):file:///D:/apache-maven-3.3.9/WareHouse/net/sourceforge/jtds/jtds/1.3.1/jtds-1.3.1.jar
17、模闆學習:點此下載下傳