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公鑰證書。
查看英文原文:Netflix Announces Genie 3