NiFi :1 初識這把“十年一劍”的利器
“現在AI和數據處理密不可分,80%的企業可以利用Apache NiFi輕松解決復雜的數據問題,快速完成場景建設。猶如花上百來塊錢在家享受一頓不亞于五星級西餐廳的法式大餐。對于全棧式的數據分析師或者數據應用的Java研發工程師,NiFi讓其擺脫復雜的數據工程,而是將精力放在分析和應用的創新之上。而NiFi的GUI也著實令人賞心悅目!”
1.Apache NiFi
說到數據平臺,很多人的第一反應要么是ETL/ELT,要么是Spark或Hadoop,要么是Flink,要么是各式各樣的湖倉技術,例如Delta Lake。小編多年來根據不同的業務場景規劃落地不少數據平臺,很清楚的明白維護一套數據處理套件成本不菲。先不說調度引擎、運算引擎、數據治理引擎和存儲引擎,光是數據質量和產出效益就讓很多企業管理者頭疼,況且現代化的技術體系都依托云原生,這也是不小的一塊投入。就算下定決心建設數據平臺,技術路線抉擇和人才儲備則是另一大難題。要知道如何選擇最合適的技術至關重要,和2B產品線的生死掌握在靠譜的產品經理手中一樣。
現在AI時代已經到達,如何快速且以較低的成本進行數據處理和微治理則十分重要。畢竟現在的節奏越來越快,從商業的角度,小投入,快應用,螺旋式的加大投資成為很多人的選擇。回顧過去十年,加之最近在數據領域的咨詢量增加,小編認為是時候介紹一下NiFi,讓它能夠得到最對等的尊重?;仡欉@十年,NiFi走得很穩,正如它的官網所介紹的一樣,NiFi是強大、可靠、簡單易用的處理和分發數據的系統。
Apache NiFi是Apache軟件基金會的一個軟件項目,旨在自動化軟件系統之間的數據流。它利用提取、轉換、加載 (ETL) 的概念,基于美國國家安全局 (NSA) 之前開發的“NiagaraFiles”軟件,該軟件也是其現在名稱的一部分——NiFi 的來源,它在2014年NSA技術轉讓計劃的開源的清單里面。
簡單而言Apache NiFi是一款開源的數據流處理工具,提供了強大的數據采集、傳輸、轉換和處理能力。它可以幫助用戶輕松地構建可擴展、高度可配置的數據流處理管道,支持從各種來源(包括本地磁盤、網絡、傳感器等)獲取數據,并將其路由、轉換、過濾和聚合后輸出到各種目標(包括 Hadoop、HDFS、Kafka、Solr等)。同時,Apache NiFi 還提供了直觀的可視化界面,幫助用戶快速構建和管理數據流處理任務。
Apache NiFi的體系結構基于可插拔的Processor、Controller Service和自定義Extension,使其能夠快速適應不同的場景和需求,同時保持高性能和可靠性。NiFi的里層還依托Java虛擬機,建立在Spring基礎上。根據處理流量的大小,決定了其對系統資源的占用情況以及是否需要硬件支持。
如上圖所示,NiFi支持單機和集群模式。在分布式部署的情況下,ZK作為分布式一致性的中間件。每個節點都建立在JVM的基礎上,中間是各種處理數據的Processor,底層則是NiFi的數據存儲倉庫以及數據監管機制。
上圖為數據流工程的一部分,可以進行分領域設計。簡單、干凈和高可靠。
2.數據模型
NiFi的整體框架下,數據模型被建模為FlowFile,請記住這個術語。它由內容(Content)和屬性(Attribute)兩部分組成。畢竟在物理世界,任何的數據消息都是由消息體和頭部信息組成。一系列的處理組件在相同的規范下互相連接形成處理管道。數據會沿著管道進行流動形成數據流。同時,NiFi的組件很豐富,截止到1.27的版本已經接近400+。<不夠用,沒問題,可以自己定義。>
每個組件都是FlowFile進,FlowFile出。每份數據都會從流的開始傳輸到流的結束。默認情況下,它使用已NiFi的存儲介質作為機制,例如本地磁盤,因此NiFi對于I/O的要求比較高。
FlowFile Content存儲著數據主體信息,可以理解為文本內容,可以是Json格式,也可以是二進制文件等等。而FlowFileAttribute則是添加到每個FlowFile文件上面的Key-Value對,也即為鍵值對。
這些屬性的有一部分是NiFi系統給每個FlowFile加上(例如FlowFile創建時間、FlowFile大小、uuid等等),也可以使用戶自行添加的屬性對,還可以是由Processor(每個處理節點)自己設置,用來標明這些數據的特定屬性或狀態。
每個流的數據都可以在NiFi GUI可視化直觀的跟蹤和顯示,尤其可以追溯每份數據處理的鏈路圖,比如源頭和處理的組件,類似數據的血緣追蹤。
