Apache Beam是一個開源的數據處理編程庫,由Google貢獻給Apache的項目,前不久剛剛成爲Apache TLP項目。它提供了一個高級的、統一的編程模型,容許咱們經過構建Pipeline的方式實現批量、流數據處理,而且構建好的Pipeline可以運行在底層不一樣的執行引擎上。剛剛接觸該開源項目時,個人第一感受就是:在編程API的設計上,數據集及其操做的抽象有點相似Apache Crunch(MapReduce Pipeline編程庫)項目;而在支持統一數據處理模型上,可以讓人想到Apache Flink項目。若是深刻了解Apache Beam,你會發現將來Apache Beam極可能成爲數據處理領域惟一一個可以將不一樣的數據應用統一塊兒來的編程庫。apache
Apache Beam架構概覽編程
Apache Beam目前最新版本爲2.1.1-SNAPSHOT,最新的Release版本爲2.0.0,不少特性還在開發中。架構
在網上找到一個由Andrew Psaltis在2016年6月份演講的《Apache Beam: The Case for Unifying Streaming API’s》,引用了其中一個Apache Beam的架構圖,以下圖所示:
編程語言
上圖中,咱們能夠看到,Apache Beam核心的主要有兩層:設計
在Pipeline構建層,針對不一樣的編程語言,構建一組用於定義Pipeline相關抽象,提供編程API,這一層被稱爲Beam SDKs。最終的用戶(具備不一樣編程語言技能的人員)能夠基於這些抽象的Beam SDK來構建數據處理Pipeline。blog
Runner適配層,主要是用來對接底層的計算引擎,用來執行上層用戶開發好的Pipeline程序。ip