nifi-集羣搭建,新增用戶

NIFI 簡介 

1、NIFI 的概念 
1.1 起源:NIFI是爲了自動化的處理和管理系統之間的數據流而產生的,基本設計概念與基於流的編程[fbp]的主要思想密切相關 
1.2 nifi核心概念 
FlowFile:FlowFile表示通過系統移動的每個對象,包含數據流的基本屬性 
FlowFile Processor(處理器):負責實際對數據流執行工作 
Connection(連接線):負責不同處理器之間的連接,是數據的有界緩衝區 
Flow Controller(流量控制器):管理進程使用的線程及其分配 
Process Group(過程組):進程組是一組特定的進程及其連接,允許組合其他組件創建新組件 
2、NIFI 架構

è¿éåå¾çæè¿°

架構介紹 

NIFI在主機系統中的JVM中執行,主要組件有: 
網絡服務器 
Web服務器的目的是託管NiFi的基於HTTP的命令和控制API。 
流量(Flow)控制器 
它爲要運行的擴展提供線程,並管理擴展接收要執行的資源的時間表。 
擴展(Extension) 
擴展在JVM中操作和執行。 
FlowFile存儲庫 
FlowFile存儲庫是NiFi跟蹤其對當前在流中活動的給定FlowFile知道的狀態的地方。 
內容存儲庫 
Content Repository是給定FlowFile的實際內容字節所在的位置。Provenance信息庫 
Provenance信息庫 
Provenance Repository是存儲所有來源事件數據的地方。 
3、NIFI啓動 
打開安裝目錄 
前臺運行:bin/nifi.sh run 
後臺運行:bin/nifi.sh start 
重新啓動:bin/nifi.sh restart 
安裝即服務:bin/nifi.sh install /etc/init.d/nifi ..

打開Web瀏覽器並導航到http://localhost:8080/nifi 即可看到NIFI的UI界面

4、NIFI UI界面介紹 

è¿éåå¾çæè¿°

工具欄以拖動的方式,拖動到nifi畫布。

5、NIFI實例 
通過簡單的GetFile,PutFile實例,來熟悉NIFI使用 
1、通過拖動UI上的Processor圖標到NIFI畫布上可以開始創建數據流,成功後如圖:

è¿éåå¾çæè¿°

輸入GetFile,點擊ADD 
選中GetFile處理器,右擊選擇Configure,配置相關信息,其中粗體的爲必填信息,完成後點擊APPLY。 
同理設置PutFile,完成後如圖: 
當處理器的左上角看到一個警告圖標圖標時說明處理器不能啓動,需要進一步正確配置相關內容。 
每個處理器都有一組定義的“關係”,最基本的有success和failure。 
使用鼠標懸停在GetFile處理器上,可以看到箭頭 
拖動箭頭到PutFile,出現如下圖:選中success點擊add即可完成。 
可以看到PutFile處理器上仍有警告。提示爲success和failure關係未連接到其他組件和自動終止。可以右擊configure。在setting中勾選中success和failure即可實現自動終止。 

è¿éåå¾çæè¿°

依次啓動各個處理器,一般按照從後向前的順序啓動,運行成功後結果如圖: 
數據成功的完成了在不同位置的轉移 
圖上可以看到輸入輸出的數據流的大小等情況。 
當運行出現問題時右上角會出現紅色方框,放到上面會出現提示信息。 
右擊處理器中間的連接線,可以配置處理FlowFiles的優先級和緩衝區大小。 
NiFi爲back pressure提供了兩個配置元件。分別對應的是對象數量和數據大小。 
並且進度條基於隊列百分比改變顏色:綠色(0-60%),黃色(61-85%)和紅色(86-100%)。鼠標懸停在上面可以顯示精確的百分比。 
右擊處理器的data provenance可以看到關於數據流的詳細信息。 
6、NIFI狀態指示燈 
狀態指示燈:顯示處理器的當前狀態。可能有以下指標:

運行 正在運行:處理器當前正在運行。

停止 停止:處理器有效且已啓用,但未運行。

無效 無效:處理器已啓用,但當前無效,無法啓動。將鼠標懸停在此圖標上將提供一個工具提示,指示處理器無效的原因。

禁用 已禁用:處理器未運行,只有啓用後才能啓動。此狀態不表示處理器是否有效。

NIFI的常用處理器介紹 
8、NIFI 集羣 
核心模塊: 
NiFi Cluster Coordinator(集羣協調器)–集羣中節點,負責控制任務和管理節點有負載均衡的功能。 
節點 –負責實際的數據處理 
主節點 –有zookeeper自動選擇,此節點上運行隔離處理器 
Isolated Processors(隔離處理器) – 不希望在每個節點上運行的任務。獨立運行。 
Heartbeats(心跳) –傳達節點的運行狀態。與集羣協調器通信 
特點:採用零主集羣範例。每個節點對數據執行相同的任務,但每個節點對不同的數據集進行操作

1、普通集羣 
配置conf/nifi.properties下的: 
nifi.cluster.is.node=true (作爲集羣節點) 
nifi.zookeeper.connect.string=name87:2181,name86:2181(連接到zookeeper) 
並將相關的地址改爲主機名(默認爲localhost),不改會造成集羣啓動成功後,顯示的節點名相同。

2、帶證書的用戶驗證集羣

一、nifi的安全配置

NIIF的Security Configuration,可通過附帶的TLS生成工具包配置。 
配置過程如下: 
打開toolkit安裝目錄,運行 
bin/tls-toolkit.sh standalone -n ‘name87,name86 -C ‘CN=username,OU=NIFI’ 
生成證書和相關的配置文件 
-n,–hostnames主機名 
-C,–clientCertDn客戶端證書的DN 
cp name87/* ${nifi_home}/conf/ 
將相關配置文件複製到NIFI的conf文件目錄下。 
二、集羣搭建 
將conf/nifi.properties下的: 
nifi.cluster.is.node=true (作爲集羣節點) 
nifi.zookeeper.connect.string=name87:2181,name86:2181(連接到zookeeper) 
並配置conf/zookeeper.properties下的: 
server.1=name87:2888:3888 
server.2=name86:2888:3888 
配置conf/state-management.xml: 
name87:2181,name86:2181 
三、用戶認證 
用戶認證有LDAP和Kerberos兩種方式 
利用kerberos認證過程如下: 
安裝配置kdc:

yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation      (安裝)
vi /etc/krb5.conf             將默認的兩項改爲自己的主機名,如下
[realms] 
EXAMPLE.COM = { 
kdc = name87
admin_server = name87 }
 
kdb5_util create –s          創建kerberos數據庫,並輸入相應的密碼
開啓kdc和kdc admin服務
# /etc/rc.d/init.d/krb5kdc start
# /etc/rc.d/init.d/kadmin start
# chkconfig krb5kdc on
# chkconfig kadmin on
添加服務主體並導出keytab
# kadmin.local   
# addprinc -randkey nifi/HDF  
# ktadd -k /opt/nifi-HDF.keytab nifi/HDF  
# q
添加用戶認證並初始化
# kadmin.local -q "addprinc username"         
# kinit [email protected] 
在conf/nifi.properties中相應位置添加以下內容:
nifi.security.user.login.identity.provider=kerberos-provider
# kerberos #
nifi.kerberos.krb5.file=/etc/krb5.conf
nifi.kerberos.service.principal=nifi/[email protected]
nifi.kerberos.keytab.location=/opt/nifi-HDF.keytab
nifi.kerberos.authentication.expiration=12 hours
在conf/login-identity-providers.xml中配置如下:
<provider> 
<identifier>kerberos-provider</identifier> 
<class>org.apache.nifi.kerberos.KerberosProvider</class>  
<property name="Default Realm">EXAMPLE.COM</property>  
<property name="Kerberos Config File">/etc/krb5.conf</property>  
<property name="Authentication Expiration">12 hours</property>  
</provider>
 
 
#在conf/authorizers.xml中將初始用戶設置爲kdc中建立的用戶,並添加節點代理如下:
<property name="Initial Admin Identity">[email protected]</property>
<property name="Node Identity 1">CN=name87, OU=NIFI</property>
<property name="Node Identity 2">CN=name86, OU=NIFI</property>

啓動NIFI,輸入username和相應的密碼登錄完成。 
啓動完成後入下圖: 
注意此時的網址變爲了:https://hostip:9443/nifi/ 

è¿éåå¾çæè¿°

四、新增用戶 
增加用戶過程如下:以主賬戶登錄–在kdc中添加用戶(設置用戶名、密碼)–在nifi中添加相應用戶(並設置ui權限)–退出主賬戶–已設置的其他賬戶登錄。 
新增用戶的相關權限可通過主用戶在nifi全局菜單欄的polices下更改。 
五、使用集羣實現負載均衡 
實現方式:通過NIFI的Remote Process Group(RPG) 
如圖: 
具體流程爲 Processor1–RPG–input–Processor2 
注意此時的url應該爲集羣協調器所在節點的url。Url可換爲主機名。 
連接RPG需要配置,否則無法連接

# Site to Site properties
nifi.remote.input.host=name87
nifi.remote.input.secure=false
nifi.remote.input.socket.port=12222
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec

對於帶權限的nifi實例(即配置了用戶的),需要通過:Input模塊可能需要通過左下方的鎖更改取得receive data權限。

è¿éåå¾çæè¿°

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章