Apache Falcon是一個開源的hadoop數(shù)據(jù)生命周期管理框架, 它提供了數(shù)據(jù)源 (Feed) 的管理服務(wù),如生命周期管理,備份,存檔到云等,通過Web UI可以很容易地配置這些預(yù)定義的策略, 能夠大大簡化hadoop集群的數(shù)據(jù)流管理.
本文主要介紹了Falcon的基本特性, 核心概念以及架構(gòu), 最后討論了它的優(yōu)點和局限.
Hortonworks的hadoop發(fā)行版HDP中,數(shù)據(jù)治理包括Falcon和Atlas這兩個組件.Atlas主要負責(zé)元數(shù)據(jù)的管理. Falcon主要負責(zé)數(shù)據(jù)生命周期的管理.
Falcon最初由移動廣告公司Inmobi開發(fā),2012年開始在Inmobi內(nèi)部投入使用,2013年成為Apache孵化項目,2015年孵化畢業(yè)成為Apache頂級項目,目前最新的版本是0.10.
核心特性
- 集中式數(shù)據(jù)生命周期管理: Falcon在UI上提供wizard來定義數(shù)據(jù)導(dǎo)入,處理和導(dǎo)出的流水線, 同時可以管理監(jiān)控流水線的運行.
- 業(yè)務(wù)一致性和災(zāi)難恢復(fù): Falcon可以拷貝HDFS文件和hive表.
- 解決審計和合規(guī)性方面的需求: 可以利用falcon查看數(shù)據(jù)流水線的血緣關(guān)系,審計日志,以及為業(yè)務(wù)流程和數(shù)據(jù)打標(biāo)簽,方便業(yè)務(wù)管理.
Falcon如何工作
Falcon的使用者可以通過命令行或者Falcon Web UI來創(chuàng)建數(shù)據(jù)流水線,數(shù)據(jù)流水線由集群存儲位置定義,數(shù)據(jù)源和處理邏輯組成,這三部分分別為由xml文件定義的實體.
實體 (entity)
falcon中定義的三種實體包括:
- cluster: 支持定義多個集群.
- feed: 數(shù)據(jù)源, 支持類型包括hdfs路徑和hive表.
-
process: 處理邏輯,支持oozie,hive,pig和spark作為作業(yè)流引擎.
Falcon pipeline
數(shù)據(jù)流水線 (data pipeline)
每個實體是單獨定義的,把實體組合起來就形成了數(shù)據(jù)流水線,Falcon提供了很多預(yù)定義的策略來處理數(shù)據(jù)拷貝,數(shù)據(jù)保留時間和存檔.
架構(gòu)原理
Falcon把用戶定義的feed和process
翻譯成調(diào)度器的作業(yè)配置文件,這些作業(yè)流由調(diào)度器管理,falcon實際上只維護實體之間的依賴關(guān)系,所以它是個輕量級的工具.Falcon實體的配置文件(xml文件)可以存在本地或者hdfs上.
調(diào)度器
Falcon目前默認使用oozie作為調(diào)度器, 由于oozie調(diào)度器的一些限制,falcon正在開發(fā)自己的調(diào)度器,預(yù)計將在以后的版本中正式發(fā)布.
與oozie集成
Falcon通過JMS (Java消息服務(wù)) 與oozie進行通信,控制oozie上對應(yīng)的作業(yè)流,oozie也通過JMS給falcon報告作業(yè)運行情況.
討論
總結(jié)來說, Falcon是在調(diào)度器Oozie上封裝了一層,用戶可以用Web UI上的wizard來配置數(shù)據(jù)流水線, 數(shù)據(jù)生命周期管理非常方便. 它最大的優(yōu)點就是增強了Oozie的易用性, 對于業(yè)務(wù)邏輯比較復(fù)雜的系統(tǒng), 用Falcon管理比起直接用Oozie會大大簡化.
但是調(diào)研中發(fā)現(xiàn), Falcon Web UI上呈現(xiàn)的血緣關(guān)系只是以實體為中心, 并沒有全局層面上整個data pipeline的血緣關(guān)系. 如果能夠以pipeline為中心, 畫出血緣關(guān)系圖,提供zoom in功能, 以及在圖中把實體運行狀態(tài)可視化, 將會是一個很有用的特性.
雖然被稱為數(shù)據(jù)治理工具,但是它的功能只是集中在數(shù)據(jù)生命周期管理和流水線管理,要與元數(shù)據(jù)管理(Atlas),數(shù)據(jù)安全管理(Ranger)等組合,才能形成一個完整的數(shù)據(jù)治理解決方案.
調(diào)研發(fā)現(xiàn), Falcon的關(guān)注度并不算高,能搜到的英文資料主要是Apache和Hortonworks官網(wǎng),中文資料幾乎沒有. 目前也沒有看到哪個大公司在生產(chǎn)環(huán)境中用Falcon,我認為主要是因為Falcon提供的功能單一, 只解決了數(shù)據(jù)治理領(lǐng)域的一小部分需求,用戶更愿意使用集中化的數(shù)據(jù)治理工具,或者自己開發(fā).
如何使用Falcon
安裝
如果安裝了HDP,則可以使用Ambari上的Wizard來安裝Falcon,非常簡單,使用默認配置即可. 如果想單獨安裝Falcon, 可以參考Apache Falcon官網(wǎng)的文檔,下載源碼,編譯并安裝Falcon. 鏈接為:
http://falcon.apache.org/InstallationSteps.html
使用
可以通過Web UI, CLI和Rest API三種方式使用Falcon.
配置一個簡單的HDFS鏡像的Process, 具體步驟參考http://saptak.in/writing/2015/08/11/mirroring-datasets-hadoop-clusters-apache-falcon
配置一個簡單的處理E-mail的數(shù)據(jù)流,包含兩個Feed和兩個Process. 具體步驟參考http://saptak.in/writing/2015/08/13/processing-data-pipeline-with-apache-falcon