Apache Beam:2017 年回顧

在 2017 年 1 月 10 日,Apache Beam 被晉升為頂級 Apache 軟體基金會專案。這是一個重要的里程碑,驗證了專案的價值、社群的合法性,並預示了其不斷增長的採用率。在過去的一年中,Apache Beam 的發展軌跡非常驚人,其社群和功能集都有顯著增長。讓我們帶您了解一些值得注意的成就。

使用案例

首先,讓我們簡要了解一下 Beam 在 2017 年的使用情況。Apache Beam 作為一個用於批次和串流處理的統一框架,支援非常廣泛的多樣化使用案例。以下是一些示例 Beam 多功能性的使用案例。

Use Cases

社群成長

在 2017 年,Apache Beam 在全球有 174 位來自不同組織的貢獻者。作為一個 Apache 專案,我們很自豪擁有 18 位 PMC 成員和 31 位提交者。該社群在 2017 年發布了 7 個版本,每個版本都帶來了豐富的新功能和修復。

Apache Beam 社群成長最明顯和最令人鼓舞的跡象,以及對其可移植性核心價值主張的驗證,是新增了重要的新的執行器(即執行引擎)。我們在 2017 年開始時有 Apache Flink、Apache Spark 1.x、Google Cloud Dataflow、Apache Apex 和 Apache Gearpump。在 2017 年,開發了以下新的和更新的執行器

除了執行器之外,Beam 還新增了新的 IO 連接器,一些值得注意的包括 Cassandra、MQTT、AMQP、HBase/HCatalog、JDBC、Solr、Tika、Redis 和 Elasticsearch 連接器。Beam 的 IO 連接器使讀取或寫入資料來源/接收器成為可能,即使它們未被底層執行引擎原生支援。Beam 還提供完全可插拔的檔案系統支援,使我們能夠支援並擴展我們對 HDFS、S3、Azure Storage 和 Google Storage 的覆蓋範圍。我們不斷新增新的 IO 連接器和檔案系統以擴展 Beam 的使用案例。

一個開源社群成熟的一個特別顯著的跡象是它能夠與其他多個開源社群協作,並共同改進最先進的技術。在過去的幾個月裡,Beam、Calcite 和 Flink 社群齊聚一堂,定義了一個用於串流 SQL 的健全規範,來自四個以上組織的工程師為此做出了貢獻。如果您和我們一樣,對改進串流 SQL 的前景感到興奮,請加入我們!

除了 SQL 之外,新的基於 XML 和 JSON 的宣告式 DSL 也在 PoC 中。

持續創新

創新對於任何開源專案的成功都非常重要,而 Beam 在將創新的新想法帶入開源社群方面有著豐富的歷史。Apache Beam 是第一個在巨量資料處理領域引入一些開創性概念的專案

  • 統一的批次和串流 SDK,使使用者無需學習多個不同的 SDK/API 即可編寫巨量資料作業。
  • 跨引擎可移植性:讓企業確信,當開源引擎過時並被更新的引擎取代時,今天編寫的工作負載將不必重寫。
  • 語義對於推理無界無序資料,以及從串流作業中實現一致且正確的輸出至關重要。

在 2017 年,創新步伐持續進行。引入了以下功能

  • 跨語言可移植性框架,以及使用它開發的 Go SDK。
  • 動態可分片的 IO (SplittableDoFn)
  • 支援 PCollection 中的 schema,使我們能夠擴展執行器的功能。
  • 針對機器學習和新資料格式等新使用案例的擴充功能。

改進領域

如果沒有對改進領域的誠實評估,對專案的回顧是不完整的。有兩個方面非常突出

  • 幫助執行器展示它們各自的優勢。畢竟,可移植性並不意味著同質性。不同的執行器有不同的擅長領域,我們需要更好地幫助它們突出自己的優勢。
  • 基於前一點,協助客戶在選擇執行器或從一個執行器遷移到另一個執行器時做出更明智的決定。

在 2018 年,我們的目標是採取積極措施來改進上述方面。

專案及其社群的宗旨

今天的批次和串流巨量資料處理領域讓人想起巴別塔寓言:由於不同的社群使用不同的語言,導致進展放緩。同樣地,今天有多個不同的巨量資料 SDK/API,每個都有自己獨特的術語來描述類似的概念。其副作用是用戶混淆和採用速度減慢。

Apache Beam 專案旨在提供一個行業標準的可攜式 SDK,該 SDK 將

  • 透過提供穩定性的創新來造福使用者:SDK 和引擎的分離使執行器之間能夠進行良性競爭,而無需使用者不斷學習新的 SDK/API 並重寫其工作負載,以從新的創新中獲益。
  • 透過為所有人擴大市場來造福巨量資料引擎:使使用者更容易編寫、維護、升級和遷移其巨量資料工作負載將導致生產巨量資料部署的數量顯著增加。