1. 程式人生 > >百度開源高效能 Python 分散式計算框架 Bigflow

百度開源高效能 Python 分散式計算框架 Bigflow

小編近日看到一個百度開源的python框架-Bigflow , 致力於提供一套簡單易用的介面來描述使用者的計算任務,並使同一套程式碼可以執行在不同的執行引擎之上。

Bigflow 的設計中有許多思想借鑑自 Google FlumeJava以及 Google Cloud Dataflow,另有部分介面設計借鑑自 Apache Spark。使用者基本可以不去關心 Bigflow 的計算真正執行在哪裡,可以像寫一個單機的程式一樣寫出自己的邏輯, Bigflow 會將這些計算分發到相應的執行引擎之上執行。

Bigflow 的目標是: 使分散式程式寫起來更簡單,測起來更方便,跑起來更高效,維護起來更容易,遷移起來成本更小。

目前 Bigflow 在百度公司內部對接了公司內部的批量計算引擎 DCE(與社群 Tez 比較類似),迭代引擎 Spark,以及公司內部的流式計算引擎 Gemini。不過開源版本目前僅開放了Bigflow on Spark。

更多Python視訊、原始碼、資料加群960410445免費獲取

 

百度開源高效能 Python 分散式計算框架 Bigflow

 

 

特性

  • 高效能

Bigflow 的介面設計使得 Bigflow 可以感知更多的使用者需求的細節屬性,並且 Bigflow 會根據計算的屬性進行作業的優化;另其執行層使用 C++ 實現,使用者的一些程式碼邏輯會被翻譯為 C++ 執行,有較大的效能提升。

在公司內部的實際業務測試來看,其效能遠高於使用者手寫的作業。根據一些從現有業務改寫過來的作業平均來看,其效能都比原使用者程式碼提升了 100%+。開源版本的 benchmark 正在準備中。

  • 簡單易用

Bigflow 的介面表面看起來很像 Spark,但實際實用之後會發現 Bigflow 使用一些獨特的設計使得 Bigflow 的程式碼更像是單機程式,例如,遮蔽了 partitioner 的概念,支援巢狀的分散式資料集等,使得其介面更加易於理解,並且擁有更強的程式碼可複用性。

特別的,在許多需要優化的場景中,因為 Bigflow 可以進行自動的效能以及記憶體佔用優化,所以使用者可以避免許多因 OOM 或效能不足而必須進行的優化工作,降低使用者的使用成本。

  • 在這裡,Python 是一等公民

我們目前原生支援的語言是 Python。 使用 PySpark 時,有不少使用者都困擾於 PySpark 的低效,或困擾於其不支援某些 CPython 庫,或困擾於一些僅功能僅僅在 Scala 和 Java 中可用,在 PySpark 中暫時處於不可用狀態。

而在 Bigflow 中,Python 是一等公民(畢竟當前我們僅僅支援 Python),以上問題在 Bigflow 中都不是問題,效能、功能、易用性都對 Python 使用者比較友好。