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