Netflix發布Genie3
Genie 是一個分布式的 RESTful 架構的任務編排引擎,用于 Netflix 的數據平臺。Genie 有兩個主要使用場景:第一個是創建和提交自定義的數據處理任務請求,其次是設置本地環境來開發和測試在 Genie 集群上運行的新應用程序和任務。
Netflix 宣布 Genie3 支持幾項新特性,包括對較早的任務執行引擎進行重新設計、增強安全功能、增加依賴關系緩存,同時 API 也有更新。
Genie 引擎的早期版本不支持領導選舉,導致工作節點不必要地執行相同的任務。現在,通過 Zookeeper 或手動配置屬性設置單個節點的 IP 地址即可支持集群領導選舉。早期版本中所有任務的單一運行腳本運行時間過長,無法滿足安全隔離的要求,并降低了在項目擴張階段項目維護者引入代碼更改時隔離風險的能力。Genie3 引入新的方法,使用改進的數據模型來保證運行時間并實現了配置的模塊化、描述性和版本化。
在 Genie3 中,任務由若干抽象過程組成,以確保可擴展性。應用程序的運行時間和可執行命令可以通過其 API 進行配置。Genie 獨立于特定運行時配置或待處理數據,生成 Spark、Hadoop、Pig、Hive、PrestoDB 和 Sqoop 等類型的應用程序運行腳本。作為開發人員,本地模式工作流能夠為不同運行時生成運行腳本,同時還集成了 REPL 和 stdout 的底層實現以支持測試和開發。
Genie3 的 API 組件覆蓋了 Genie 的全部功能。
集群API、命令API、應用API 和作業API 提供了操作 Genie3 所需的語義。集群 API 負責管理 Genie 的邏輯 worker 集群,不包括基礎架構本身。集群 API 還協助管理集群相關的元數據、啟動時 worker 集群的基準狀態、可用于集群的命令和基準包的安裝。從這一點來看它與 Puppet 或 Chef 類似,只是它專注于 Genie 應用程序命令在運行時所需的工作集群的特定安裝包和配置。這樣可以使應用程序在啟動時更加靈活、不受限制,否則應用程序就需要在啟動時下載并安裝依賴包。
命令 API 的語義在底層應用程序上運行,并且必須指向特定應用程序,但允許定義自己的啟動和運行時配置。
作業 API 允許 Genie 用戶調度或執行一組命令,并跟蹤有關作業執行狀態的數據。Genie3 附帶了用于 MySql、PostgreSQL 和 HSQLDB 的 JDBC 驅動程序,用于支持 Genie 及其 API 的存儲配置。
Genie 3 還支持基于 OAuth2和X.509公鑰證書。
來自: InfoQ