先來簡單自我介紹一下,我是 Mars。
目前在公司擔任 Data / ML Engineer,但除了接觸 Data 相關的任務之外,我本身也會去參與一些 ML 相關專案。所以對於 Data Pipeline 和 ML Pipeline 都有相關的經驗。
而這次系列分享的目的,主要是希望能從自身經驗中來分享一個在台灣比較少人提到跟討論的服務工具 - Apache NiFi,這是一個 Data Pipeline 的 opensource,但通常在台灣講到這個議題時,一開始可能都會想到像是 Apache Airflow, AWS Data Pipeline等服務工具,甚至自己額外程式撰寫去執行,比較少人去聯想到它。但其實這個服務在國外是成長地非常成熟,有許多很好的 UseCase,所以來透過這次的鐵人30天活動讓帶大家能認識到這個服務的性質與使用場景。
在一開始就先來做簡單的導讀。如同簡介所說,在這次的系列文當中,我要介紹一個 Data Pipeline 的工具服務 - Apache NiFi。
首先,到底何謂 Data Pipeline 呢?我們依據下圖來簡單說明,可以想像有一個既有的 Source Data
,我們從這裡面讀取數據,經過我們中間 Pipeline 的時候,Data 會經過一些邏輯的轉換或清洗,最後再落地到 Target Data
作存放或是交由其他服務做後續處理。
其中 Source Data
和 Target Data
通常為能存放資料的地方,較常見的有:
所以簡單來說,只要是能存放資料的地方,我們都可以從中取得資料,再經由 Pipeline 的轉換來做寫入以利於後續的任務做使用。
而 Pipeline 的轉換非常多樣,會依照使用場景跟需求不同而有所設計,最常見的有:
接著,由於目前大環境的現況,在實際應用中我們會很常面臨到需要做大量資料轉換的場景,可能要整合多個 Datasource 然後做整併處理,來給商業端或是ML相關的下游做應用,所以 Data Pipeline 在真實場景上其實是扮演著一個非常重要的角色。
也正因為其之重要性,所以延伸出許多相關服務,像是常見的 GCP Data Fusion
、GCP Dataflow
、AWS Data Pipeline
等,但這些常見的都是在各自的 Cloud,因此能對接的也都以自身 Cloud 的 Datasource 居多,例如 AWS 就只能接 AWS 自己的 DB 或 Storage,GCP 也是。那 Apache Airflow
呢?要說他是他其實在目前大多數的應用確實是,說不是也確實不是,因為 Airflow 在當初的發展理念主要是以 Workflow 為主,所以它並不是很純的 Data pipeline 工具,這部分會在後續有一篇來單獨介紹這中間的差異性。
而我們這次的主軸 Apache-NiFi,它擁有以下幾個重要特點:
那 Apache-NiFi有沒有缺點,其實也是有的,如下:
那基於以上特點與性質,我先在這裡大概提一下,可能有些人覺得聽起來不錯、有些人覺得還好,但對我來說這就是一個選擇
,依照不同的使用場景選擇適用的工具這才是重要的,但至少在我的經驗中使用 Apache Nifi 是有一定的成效跟好處,所以也希望將此服務好好地介紹給各位。在接下來的30天會帶著大家一步一步地理解 Apache Nifi 的性質與特點是什麼意思,以及如何去實作操作它。
Day2-Day14: Apache NiFi 架構, Docker環境建置與 Component 介紹
Day15-Day16: NiFi 與 RDB, MongoDB 的對接
Day17-Day22: NiFi 與雲端服務的對接(AWS, GCP)
Day23-Day27: NiFi 延伸應用(NiFi api, 對接 Slack等)
Day28-Day29: 工具比較與案例分享
Day30: 結論與未來